---
title: >-
  Adding a canceled receive action to the inventory shipments API - Shopify
  developer changelog
description: >-
  Shopify’s developer changelog documents all changes to Shopify’s platform.
  Find the latest news and learn about new platform opportunities.
source_url:
  html: >-
    https://shopify.dev/changelog/adding-a-canceled-receive-action-to-the-inventory-shipments-api
  md: >-
    https://shopify.dev/changelog/adding-a-canceled-receive-action-to-the-inventory-shipments-api.md
metadata:
  effectiveApiVersion: 2026-10
  affectedApi:
    - displayName: Admin GraphQL API
      handle: admin-graphql
  primaryTag:
    displayName: API
    handle: api
  secondaryTag:
    displayName: New
    handle: new
  indicatesActionRequired: false
  createdAt: '2026-09-16T15:21:05-04:00'
  postedAt: '2026-09-17T12:00:00-04:00'
  updatedAt: '2026-09-17T11:14:04-04:00'
  effectiveAt: '2026-09-19T12:00:00-04:00'
---

September 17, 2026

# Adding a canceled receive action to the inventory shipments API

DateSeptember 17, 2026

Version[2026-10](https://shopify.dev/changelog?api_version=2026-10)

FlagsNew

SurfacesAPI

Affected APIs[Admin GraphQL API](https://shopify.dev/changelog?api_type=admin-graphql)

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`](https://shopify.dev/docs/api/admin-graphql/latest/objects/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`](https://shopify.dev/docs/api/admin-graphql/latest/objects/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**

* `CANCELED` on [`InventoryShipmentReceiveLineItemReason`](https://shopify.dev/docs/api/admin-graphql/latest/enums/InventoryShipmentReceiveLineItemReason). Pass it as the `reason` on a line item in the [`inventoryShipmentReceive` mutation](https://shopify.dev/docs/api/admin-graphql/latest/mutations/inventoryShipmentReceive) to mark units as canceled, or as `bulkReceiveAction` to mark all remaining units on the shipment as canceled.

**Webhook payload updates**

Subscriptions to the `inventory_shipments/receive_items` [webhook topic](https://shopify.dev/docs/api/webhooks) 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.

```graphql
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](https://shopify.dev/docs/api/usage/idempotent-requests).

## Related docs

* [`inventoryShipmentReceive` mutation](https://shopify.dev/docs/api/admin-graphql/latest/mutations/inventoryShipmentReceive)
* [`InventoryShipment` object](https://shopify.dev/docs/api/admin-graphql/latest/objects/InventoryShipment)
* [`InventoryShipmentLineItem` object](https://shopify.dev/docs/api/admin-graphql/latest/objects/InventoryShipmentLineItem)
* [`InventoryShipmentReceiveLineItemReason` enum](https://shopify.dev/docs/api/admin-graphql/latest/enums/InventoryShipmentReceiveLineItemReason)
* [Webhooks reference](https://shopify.dev/docs/api/webhooks)
