Skip to main content

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

  • totalCanceledQuantity on InventoryShipment: the total quantity of items marked as canceled across all line items in the shipment, alongside the existing totalAcceptedQuantity and totalRejectedQuantity fields.
  • canceledQuantity on InventoryShipmentLineItem: the quantity of items marked as canceled on a line item, alongside the existing acceptedQuantity and rejectedQuantity fields.

Canceled units count toward InventoryShipment.totalReceivedQuantity, so on 2026-10 the received total breaks down fully into accepted, rejected, and canceled.

New enum value

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:

  1. Update your app to API version 2026-10.
  2. Query totalCanceledQuantity on InventoryShipment and canceledQuantity on InventoryShipmentLineItem where your app displays or syncs receiving progress.
  3. Pass reason: CANCELED to inventoryShipmentReceive when you mark units that won’t arrive.
  4. Test against a development store, and confirm your inventory_shipments/receive_items webhook handler processes the old_canceled_quantity and new_canceled_quantity fields.
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

Was this page helpful?