See all services Shopify Plus Partner
API Developer

Record Inventory That Never Arrives With Canceled Receives

Shopify's 2026-10 Admin API adds a CANCELED receive action for inventory shipments, plus canceled quantity fields and webhook payload changes. Receiving teams can close out units that will never arrive instead of misrecording them as rejected.

Executive summary

What changed

Inventory shipments previously supported two receive outcomes: accepted and rejected. Version 2026-10 adds a third, CANCELED, on the InventoryShipmentReceiveLineItemReason enum. You can pass it per line item in the inventoryShipmentReceive mutation, or as bulkReceiveAction to close out every remaining unit on a shipment at once.

Two read fields arrive with it. InventoryShipment now exposes totalCanceledQuantity, and InventoryShipmentLineItem exposes canceledQuantity. Canceled units count toward totalReceivedQuantity, so on 2026-10 the received total decomposes cleanly into accepted, rejected, and canceled with no remainder.

Webhook behaviour changes too. Subscriptions to inventory_shipments/receive_items on 2026-10 or later receive old_canceled_quantity and new_canceled_quantity on each items_received entry, and a receive that only changes canceled quantities now triggers a delivery. On earlier versions those fields are omitted and canceled-only receives stay silent. The change is additive, so apps below 2026-10 need to do nothing.

Why it matters

The gap this closes is small in API terms and expensive in operational terms. A transfer goes out, and part of it is lost, damaged beyond recovery, or short-shipped by a supplier with no replacement coming. Until now the only options were to leave the units permanently unreceived, which quietly inflates in-transit inventory, or to mark them rejected, which implies the goods arrived and were refused. Both distort the numbers your planners and your finance team read.

For Shopify Plus merchants with a real system of record behind the storefront, the second-order effect matters more. Receiving discrepancies are one of the most common sources of drift between Shopify inventory and the back office. A distinct canceled state gives your ERP integration an unambiguous signal to map, rather than forcing middleware to infer intent from a quantity that never moves.

Role-specific impact

Use-case example

Real-world scenario

A home goods brand moves roughly 400 transfers a year between a central warehouse and three regional locations. Around 3 percent of transfer lines arrive short with no replacement shipment. Under the old model those units sat unreceived, and the operations team ran a monthly spreadsheet reconciliation to clear them, about four hours per cycle. With CANCELED, the warehouse app closes the line at receipt and the ERP consumes the canceled quantity directly. Reconciliation drops to an exception review, and in-transit inventory stops carrying roughly 1,200 phantom units at any given time.

Implementation checklist

  1. Identify which apps and integrations read inventory shipments, and record the API version each one targets.
  2. Move those apps to GraphQL Admin API version 2026-10.
  3. Add totalCanceledQuantity and canceledQuantity to every query that displays or syncs receiving progress.
  4. Pass reason: CANCELED on inventoryShipmentReceive for units that will not arrive, remembering that the @idempotent key has been mandatory since 2026-04.
  5. Update inventory_shipments/receive_items handlers to read old_canceled_quantity and new_canceled_quantity, and to tolerate deliveries triggered by canceled-only receives.
  6. Map the canceled state explicitly in your ERP or WMS connector rather than folding it into rejected.
  7. Test the full path on a development store before promoting to production.

FAQ

Q: Do we have to do anything if we stay on an earlier API version?

A: No. The change is additive and version gated. Apps below 2026-10 see the existing field set, unchanged payloads, and no new webhook deliveries.

Q: Is canceled just a relabelled rejected?

A: No. Rejected means the units arrived and were refused. Canceled means they will never arrive at all. Keeping them separate is what allows the received total to reconcile.

Resources

inventoryShipmentReceive mutation reference

Need guidance? Talk to Makro.