Shopify merchants and developers constantly juggle inventory transfers, especially when a shipment never arrives. Until now the GraphQL Admin API only let you accept or reject items, leaving a gap for “canceled” units. In the 2026-10 release candidate, Shopify closes that gap with a new CANCELED receive action for the inventory shipments API. This post breaks down the change, who it matters to, and the exact steps to start using it in your apps.
What’s New in the 2026‑10 Inventory Shipments API
The API now supports a third receive reason—CANCELED—alongside the existing ACCEPTED and REJECTED. When a merchant knows that certain units will never arrive, they can mark those line‑item quantities as canceled. The mutation, webhook payloads, and object schemas have all been updated to surface this new state.
New Fields and Enum Value
Two new scalar fields were added:
• totalCanceledQuantity on InventoryShipment – the aggregate canceled units across the whole shipment.
• canceledQuantity on InventoryShipmentLineItem – the canceled count for an individual line item.
A new enum value, CANCELED, was added to InventoryShipmentReceiveLineItemReason. Pass it to the inventoryShipmentReceive mutation (or bulkReceiveAction) to flag units as never arriving.
How It Impacts Developers vs. Merchants
Developers building apps that sync receiving data—order‑to‑inventory, WMS, 3PL integrations—now have a precise signal for stock that will never be stocked. Merchants benefit from cleaner inventory reports and fewer “ghost” items that sit in an “unreceived” limbo.
If your app targets API version 2026-10 or later (including unstable), you can start using the new fields and mutation. Apps locked to earlier versions see no change; the new enum and fields simply don’t exist for them.
Implementing the CANCELED Receive Action
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
}
}
}
Replace the GIDs with your own shipment and line‑item IDs and generate a unique idempotency key for each call (required since version 2026-04). The response returns the updated totalCanceledQuantity and each line item’s canceledQuantity, so you can immediately reflect the change in your UI or downstream system.
Webhook Payload Changes
Subscriptions to the inventory_shipments/receive_items webhook on version 2026-10+ now include two extra fields on each items_received entry:
• old_canceled_quantity – the quantity before the current receive.
• new_canceled_quantity – the quantity after the current receive.
If a receive only changes canceled quantities, the webhook will fire (previous versions would suppress the delivery). For stores still on older API versions, the payload shape remains unchanged and canceled‑only receives are ignored.
Action Checklist for Your Apps
• Upgrade to API version 2026-10 (or later) in your app’s GraphQL client.
• Add totalCanceledQuantity and canceledQuantity to any inventory‑shipment queries you already run.
• Update your receive‑logic to pass reason: CANCELED when you know units won’t arrive.
• If you listen to inventory_shipments/receive_items, adjust your handler to read old_canceled_quantity and new_canceled_quantity and to handle deliveries that now include canceled‑only changes.
• Test the full flow in a development store: create a shipment, cancel a few units, verify the query results and webhook payloads, and ensure your idempotency keys are unique per request.
Conclusion & Next Steps
The CANCELED receive action gives merchants a truthful way to close out shipments that never arrive and gives developers the data they need to keep inventory systems in sync. No urgent migration is required, but adopting the new fields now future‑proofs your integration for the upcoming stable 2026-10 release. Update your API version, add the new queries, and watch your inventory accuracy improve.
Ready to ship the change? Jump into your app’s codebase, upgrade the API version, and start marking canceled units today. Need help troubleshooting? Drop a comment below or reach out to our Shopify developer community.


