Adding a canceled receive action to the inventory shipments API
- Announced
- Tags
- GraphQL-Admin-API
- Severity
- notable, set by
reef/rss-rule-v1 - Source
- https://shopify.dev/changelog/adding-a-canceled-receive-action-to-the-inventory-shipments-api
The GraphQL Admin API now supports a CANCELED receive action for inventory shipments in version 2026-10. You can mark inventory shipment line item units as canceled when they’ll never arrive, and you can read canceled quantities on shipments and their line items. This is an additive change to the 2026-10 release candidate. No action is required, and apps on earlier API versions aren’t affected.
What changed
Canceled receiving joins the existing accepted and rejected receive actions across the inventory shipments API in version 2026-10.
New fields
totalCanceledQuantityonInventoryShipment: the total quantity of items marked as canceled across all line items in the shipment, alongside the existingtotalAcceptedQuantityandtotalRejectedQuantityfields.canceledQuantityonInventoryShipmentLineItem: the quantity of items marked as canceled on a line item, alongside the existingacceptedQuantityandrejectedQuantityfields.
Canceled units count toward InventoryShipment.totalReceivedQuantity, so on 2026-10 the received total breaks down fully into accepted, rejected, and canceled.
New enum value
CANCELEDonInventoryShipmentReceiveLineItemReason. Pass it as thereasonon a line item in theinventoryShipmentReceivemutation to mark units as canceled, or asbulkReceiveActionto mark all remaining units on the shipment as canceled.
Webhook payload updates
Subscriptions to the inventory_shipments/receive_items webhook topic on version 2026-10 or later now receive old_canceled_quantity and new_canceled_quantity on each entry in items_received, and receives that only change canceled quantities now trigger a delivery. Subscriptions on earlier versions are unchanged. The canceled fields are omitted from payloads, and canceled-only receives don’t trigger a delivery for those versions.
Who’s affected
Apps that use the GraphQL Admin API version 2026-10 or later (or unstable) to read inventory shipments, receive shipment line items, or subscribe to the inventory_shipments/receive_items webhook can use the canceled receive action.
Apps on versions before 2026-10 aren’t affected. The new fields and enum value aren’t available, webhook payloads keep their current shape, and canceled-only receives stay suppressed for those subscriptions.
Why this matters
Merchants receiving an inventory transfer sometimes learn that units will never arrive. Until now, the API only supported accepting or rejecting units, so apps had no way to record or observe that outcome. The units either sat unreceived forever or had to be misrecorded as rejected. The canceled receive action closes out those units accurately, and apps that sync receiving state with purchase orders, warehouse management systems, or 3PLs can now record and mirror the full picture.
What to do
No action is required. To use the canceled receive action:
- Update your app to API version
2026-10. - Query
totalCanceledQuantityonInventoryShipmentandcanceledQuantityonInventoryShipmentLineItemwhere your app displays or syncs receiving progress. - Pass
reason: CANCELEDtoinventoryShipmentReceivewhen you mark units that won’t arrive. - Test against a development store, and confirm your
inventory_shipments/receive_itemswebhook handler processes theold_canceled_quantityandnew_canceled_quantityfields.
mutation ReceiveShipment {
inventoryShipmentReceive(
id: "gid://shopify/InventoryShipment/123"
lineItems: [
{
shipmentLineItemId: "gid://shopify/InventoryShipmentLineItem/456"
quantity: 5
reason: CANCELED
}
]
) @idempotent(key: "b105ab7c-4680-4bfc-b350-c766e01a431f") {
inventoryShipment {
totalCanceledQuantity
lineItems(first: 10) {
nodes {
id
canceledQuantity
}
}
}
userErrors {
code
field
message
}
}
}
This example marks 5 units on a shipment line item as canceled and reads back the updated canceled quantities. Replace the IDs with your own shipment and line item IDs, and generate a unique idempotency key for each receive. The key is required on this mutation as of version 2026-04. For details, see the idempotent requests guide.
Related docs
The text above is the source's. reef added the severity, the dates it could read from the text, and the endpoints and scopes named in code.