Add Inventory Purchase Order queries and inventory bin mutations

7/18/2026, 12:00:42 AM

A new set of API features now supports managing inventory purchase orders—including the queries inventoryPurchaseOrder and inventoryPurchaseOrders—and related types for purchase order line items, status, and supplier snapshots. Developers can create, update, or delete inventory bins at a location through the mutations inventoryBinUpsert and inventoryBinDelete, and initiate inventory counts via inventoryCountCreate that audit and adjust stock levels. A new mutation, requestedEditCreate, allows an app to request edits to an order on behalf of a buyer, returning a RequestedEdit payload and error handling. The channel-related API fields (channelDefinitions, channelName, svgIcon, etc.) are deprecated; use the newer orderAttributionDefinitions query and OrderAttributionDefinition type instead. Additional fields on Location (inventoryBins, inventoryLocationItemQuantities) expose bin and aggregated inventory data, and the Shop type gains a marketingEmailConsentEnabledAtCheckout flag. New enum values and a field adaptivePricingEnabled extend market pricing features, and webhook topics REQUESTED_EDITS_CREATE, REQUESTED_EDITS_RESOLVE, and REQUESTED_EDITS_DECLINE are introduced for order edit events.

Query Changes

➕ Added Queries (2)

inventoryPurchaseOrder

Returns an InventoryPurchaseOrder object by ID.

Note:
This query is available only in the unstable API version and to development stores
that have enabled the Physical inventory feature preview.

inventoryPurchaseOrders

Returns a paginated list of purchase orders.

Note:
This query is available only in the unstable API version and to development stores
that have enabled the Physical inventory feature preview.

🔄 Modified Queries (1)

orderAttributionDefinitions

Returns approved order attribution definitions for the calling app on the current shop.
Learn more in the order attribution guide.

Mutation Changes

➕ Added Mutations (4)

inventoryBinDelete

Deletes inventory bins.

Note:
This mutation is available only in the unstable API version and to development stores
that have enabled the Physical inventory feature preview.

inventoryBinUpsert

Creates or updates bins at a given location.

Note:
This mutation is available only in the unstable API version and to development stores
that have enabled the Physical inventory feature preview.

inventoryCountCreate

Creates an inventory count for auditing and adjusting stock levels at a specific location.

Note:
This mutation is available only in the unstable API version and to development stores
that have enabled the Physical inventory feature preview.

requestedEditCreate

Creates a requested edit on an order on behalf of a buyer.

🔄 Modified Mutations (2)

orderAttributionDefinitionDelete

Deletes an order attribution definition for the calling app on the current shop. Existing orders
attributed to this definition are preserved.

Learn more in the order attribution guide.

orderAttributionDefinitionUpsert

Upserts an order attribution definition for the calling app on the current shop. Apps can use
attribution definitions to label orders they route to a shop, replacing or augmenting any definitions
shipped declaratively via the order_attribution_config extension.

Learn more in the order attribution guide.

If a definition with the same handle exists for this app on the shop, the supplied input fields are
merged onto it; fields omitted from the input are left unchanged. Otherwise a new definition is
created. To explicitly clear the stored icon on an existing definition, pass icon: null.

Type Changes

➕ Added Types (41)

🏗️InventoryBin➕ AddedOBJECT

A physical container (bin) at a location where inventory is stored.

Note:
This object is available only in the unstable API version and to development stores
that have enabled the Physical inventory feature preview.

Fields: barcode, id, inventoryBinItemQuantities, name
🏗️InventoryBinConnection➕ AddedOBJECT

An auto-generated type for paginating through multiple InventoryBins.

Fields: edges, nodes, pageInfo
🏗️InventoryBinDeletePayload➕ AddedOBJECT

Return type for inventoryBinDelete mutation.

Fields: deletedIds, userErrors
🏗️InventoryBinDeleteUserError➕ AddedOBJECT

An error that occurs during the execution of InventoryBinDelete.

Fields: code, field, message
📋InventoryBinDeleteUserErrorCode➕ AddedENUM

Possible error codes that can be returned by InventoryBinDeleteUserError.

Values: INVENTORY_GROUP_NOT_FOUND
🏗️InventoryBinEdge➕ AddedOBJECT

An auto-generated type which holds one InventoryBin and a cursor during pagination.

Fields: cursor, node
📥InventoryBinInput➕ AddedINPUT_OBJECT

The input fields to create or update a bin at a location.

🏗️InventoryBinItemQuantity➕ AddedOBJECT

The quantity of an inventory item stored in a bin.

Note:
This object is available only in the unstable API version and to development stores
that have enabled the Physical inventory feature preview.

Fields: inventoryBin, inventoryItem, quantity
🏗️InventoryBinItemQuantityConnection➕ AddedOBJECT

An auto-generated type for paginating through multiple InventoryBinItemQuantities.

Fields: edges, nodes, pageInfo
🏗️InventoryBinItemQuantityEdge➕ AddedOBJECT

An auto-generated type which holds one InventoryBinItemQuantity and a cursor during pagination.

Fields: cursor, node
🏗️InventoryBinUpsertPayload➕ AddedOBJECT

Return type for inventoryBinUpsert mutation.

Fields: inventoryBins, userErrors
🏗️InventoryBinUpsertUserError➕ AddedOBJECT

An error that occurs during the execution of InventoryBinUpsert.

Fields: code, field, message
📋InventoryBinUpsertUserErrorCode➕ AddedENUM

Possible error codes that can be returned by InventoryBinUpsertUserError.

Values: TOO_LONG, LOCATION_NOT_FOUND, BIN_NOT_FOUND, BIN_NAME_TAKEN, BIN_DUPLICATED, BIN_NAME_BLANK, BIN_BARCODE_TAKEN, BIN_SHOP_LIMIT_REACHED
🏗️InventoryCount➕ AddedOBJECT

Represents an inventory count operation for auditing and adjusting stock levels at a specific location.

Note:
This object is available only in the unstable API version and to development stores
that have enabled the Physical inventory feature preview.

Fields: createdAt, id, lineItems, locationSnapshot
🏗️InventoryCountCreatePayload➕ AddedOBJECT

Return type for inventoryCountCreate mutation.

Fields: inventoryCount, userErrors
🏗️InventoryCountCreateUserError➕ AddedOBJECT

An error that occurs during the execution of InventoryCountCreate.

Fields: code, field, message
📋InventoryCountCreateUserErrorCode➕ AddedENUM

Possible error codes that can be returned by InventoryCountCreateUserError.

Values: RESOURCE_NOT_FOUND, LOCATION_NOT_ACTIVE, DUPLICATE_ITEM, INVALID_STATE, INVALID_TAG, IDEMPOTENCY_CONCURRENT_REQUEST, IDEMPOTENCY_PREVIOUS_ATTEMPT_FAILED, IDEMPOTENCY_KEY_PARAMETER_MISMATCH
🏗️InventoryCountLineItem➕ AddedOBJECT

Represents an item in an inventory count, including its counted quantities, expected quantities, variance, and review status.

Note:
This object is available only in the unstable API version and to development stores
that have enabled the Physical inventory feature preview.

Fields: expectedQuantity, id, inventoryItem, productTitle, sku ... +3 more
🏗️InventoryCountLineItemConnection➕ AddedOBJECT

An auto-generated type for paginating through multiple InventoryCountLineItems.

Fields: edges, nodes, pageInfo
🏗️InventoryCountLineItemEdge➕ AddedOBJECT

An auto-generated type which holds one InventoryCountLineItem and a cursor during pagination.

Fields: cursor, node
📥InventoryCountLineItemInput➕ AddedINPUT_OBJECT

The input fields identifying an item to include in the count, optionally with a starting counted quantity.

📥InventoryCountQuantityInput➕ AddedINPUT_OBJECT

The input fields for a submitted counted quantity, paired with the expected on-hand it was counted against.

🏗️InventoryPurchaseOrder➕ AddedOBJECT

A purchase order represents an agreement from a merchant to buy goods or services from a supplier.
While the agreement is captured on the merchant's side as a purchase order, it’s recorded as a sales order
on the supplier side.

Note:
This object is available only in the unstable API version and to development stores
that have enabled the Physical inventory feature preview.

Fields: archivedAt, currency, dateCreated, destination, id ... +6 more
🏗️InventoryPurchaseOrderConnection➕ AddedOBJECT

An auto-generated type for paginating through multiple InventoryPurchaseOrders.

Fields: edges, nodes, pageInfo
🏗️InventoryPurchaseOrderEdge➕ AddedOBJECT

An auto-generated type which holds one InventoryPurchaseOrder and a cursor during pagination.

Fields: cursor, node
🏗️InventoryPurchaseOrderLineItem➕ AddedOBJECT

Represents a line item belonging to an inventory purchase order.
This is a simplified view of the purchase order line item for inventory management purposes.

Note:
This object is available only in the unstable API version and to development stores
that have enabled the Physical inventory feature preview.

Fields: id, inventoryItem, purchaseOrder, subtotal, supplierSku ... +6 more
🏗️InventoryPurchaseOrderLineItemConnection➕ AddedOBJECT

An auto-generated type for paginating through multiple InventoryPurchaseOrderLineItems.

Fields: edges, nodes, pageInfo
🏗️InventoryPurchaseOrderLineItemEdge➕ AddedOBJECT

An auto-generated type which holds one InventoryPurchaseOrderLineItem and a cursor during pagination.

Fields: cursor, node
📋InventoryPurchaseOrderStatus➕ AddedENUM

The possible statuses an inventory purchase order can have.

Values: DRAFT, ORDERED
🏗️InventorySupplier➕ AddedOBJECT

Represents an inventory supplier associated with a purchase order.

Note:
This object is available only in the unstable API version and to development stores
that have enabled the Physical inventory feature preview.

Fields: name
🏗️InventorySupplierSnapshot➕ AddedOBJECT

Represents a snapshot of the supplier where a purchase order originates from.

Note:
This object is available only in the unstable API version and to development stores
that have enabled the Physical inventory feature preview.

Fields: supplier
🏗️LocationItemQuantity➕ AddedOBJECT

The aggregate quantities of an inventory item at a location, summed across the location's bins.

onHand is the unbinned residual (unbinnedQuantity) plus the quantity held in every bin.
available is the location-level sellable quantity. committed is location-level and is not
split per bin.

Note:
This object is available only in the unstable API version and to development stores
that have enabled the Physical inventory feature preview.

Fields: available, committed, id, inventoryItem, onHand ... +1 more
🏗️LocationItemQuantityConnection➕ AddedOBJECT

An auto-generated type for paginating through multiple LocationItemQuantities.

Fields: edges, nodes, pageInfo
🏗️LocationItemQuantityEdge➕ AddedOBJECT

An auto-generated type which holds one LocationItemQuantity and a cursor during pagination.

Fields: cursor, node
📋LocationItemQuantitySortKeys➕ AddedENUM

The set of valid sort keys for the LocationItemQuantity query.

Values: ID, INVENTORY_GROUP_ID, INVENTORY_ITEM_ID
📋PurchaseOrderLineItemSortKeys➕ AddedENUM

The set of valid sort keys for the PurchaseOrderLineItem query.

Values: ID
📥RequestedEditCreateInput➕ AddedINPUT_OBJECT

The input fields for creating a requested edit.

📥RequestedEditCreateLineItemInput➕ AddedINPUT_OBJECT

The input fields for a line item in a requested edit.

🏗️RequestedEditCreatePayload➕ AddedOBJECT

Return type for requestedEditCreate mutation.

Fields: requestedEdit, userErrors
🏗️RequestedEditCreateUserError➕ AddedOBJECT

Errors related to creating a requested edit.

Fields: code, field, message
📋RequestedEditCreateUserErrorCode➕ AddedENUM

Possible error codes that can be returned by RequestedEditCreateUserError.

Values: NOT_FOUND, INVALID, INTERNAL_ERROR, BLANK

🔄 Modified Types (9)

🏗️AvailableChannelDefinitionsByChannel🔄 Modified
🔄 Field modified: channelDefinitions
🔄 Field modified: channelName
🏗️ChannelDefinition🔄 Modified
🔄 Field modified: channelName
🔄 Field modified: handle
🔄 Field modified: id
🔄 Field modified: isMarketplace
🔄 Field modified: subChannelName
🔄 Field modified: svgIcon
🏗️ChannelInformation🔄 Modified
🔄 Field modified: app
🔄 Field modified: channelDefinition
🔄 Field modified: channelId
🔄 Field modified: displayName
🔄 Field modified: id
🏗️FulfillmentOrder🔄 Modified
🔄 Field modified: channelId
🏗️Location🔄 Modified
Field added: inventoryBins

A paginated list of inventory bins at this location.

Note:
This query is available only in the unstable API version and to development stores
that have enabled the Physical inventory feature preview.

Field added: inventoryLocationItemQuantities

A list of the aggregate inventory quantities, per item, at this location
(summed across the location's bins). Filterable by sku.

Note:
This query is available only in the unstable API version and to development stores
that have enabled the Physical inventory feature preview.

🏗️MarketCurrencySettingsUserErrorCode🔄 Modified
Enum value added: ADAPTIVE_PRICING_REQUIRES_LOCAL_CURRENCIES
🏗️MarketPriceInclusions🔄 Modified
Field added: adaptivePricingEnabled

Whether adaptive pricing is enabled for the market. Only applicable to Managed Markets and must be ignored otherwise.

🏗️Shop🔄 Modified
🔄 Field modified: channelDefinitionsForInstalledChannels
Field added: marketingEmailConsentEnabledAtCheckout

Whether email marketing has been enabled on the shop's checkout configuration settings.

🏗️WebhookSubscriptionTopic🔄 Modified
Enum value added: REQUESTED_EDITS_CREATE
Enum value added: REQUESTED_EDITS_RESOLVE
Enum value added: REQUESTED_EDITS_DECLINE