Inventory Transfer
Requires access scope. Also: The user must have permission to view products.
Tracks the movement of
objects between
Location
objects. A transfer includes origin and destination information,
objects with quantities, and shipment details.
Transfers progress through multiple statuses.
The transfer maintains
objects of location details to preserve historical data even if locations change
or are deleted later.
Anchor to FieldsFields
- dateCreated (DateTime)
- destination (LocationSnapshot)
- events (EventConnection!)
- hasTimelineComment (Boolean!)
- id (ID!)
- lineItems (InventoryTransferLineItemConnection!)
- lineItemsCount (Count)
- metafield (Metafield)
- metafields (MetafieldConnection!)
- name (String!)
- note (String)
- origin (LocationSnapshot)
- receivedQuantity (Int!)
- referenceName (String)
- shipments (InventoryShipmentConnection!)
- status (InventoryTransferStatus!)
- tags ([String!]!)
- totalQuantity (Int!)
- metafieldDefinitions (MetafieldDefinitionConnection!): deprecated
- Anchor to dateCreateddate•Date
Created Time The date and time the inventory transfer was created in UTC format.
- Anchor to destinationdestination•Location
Snapshot Snapshot of the destination location (name, address, when snapped) with an optional link to the live Location object. If the original location is deleted, the snapshot data will still be available but the location link will be nil.
- Anchor to eventsevents•Event
Connection! non-null The list of events associated with the inventory transfer.
- Anchor to afterafter•String
The elements that come after the specified cursor.
- Anchor to beforebefore•String
The elements that come before the specified cursor.
- Anchor to firstfirst•Int
The first
nelements from the paginated list.- Anchor to lastlast•Int
The last
nelements from the paginated list.- Anchor to queryquery•String
A filter made up of terms, connectives, modifiers, and comparators. | comments | boolean | Whether or not to include comment-events in your search, passing
falsewill exclude comment-events, any other value will include comment-events. | | | -false
-true| | created_at | time | Filter by the date and time when the event occurred. Event data is retained for 1 year. | | | -
-| | id | id | Filter byidrange. | | | -id:1234
-id:>=1234
-id:<=1234| | subject_type | string | The resource type affected by this event. See EventSubjectType for possible values. | | | -
-
-| You can apply one or more filters to a query. Learn more about Shopify API search syntax.- Anchor to reversereverse•BooleanDefault:false
Reverse the order of the underlying list.
- Anchor to sortKeysort•Event
Key Sort Keys Default:ID Sort the underlying list using a key. If your query is slow or returns an error, then try specifying a sort key that matches the field used in the search.
Arguments
- Anchor to hasTimelineCommenthas•Boolean!
Timeline Comment non-null Whether the merchant has added timeline comments to the inventory transfer.
- •ID!non-null
A globally-unique ID.
- Anchor to lineItemsline•Inventory
Items Transfer Line Item Connection! non-null The line items associated with the inventory transfer.
- Anchor to afterafter•String
The elements that come after the specified cursor.
- Anchor to beforebefore•String
The elements that come before the specified cursor.
- Anchor to firstfirst•Int
The first
nelements from the paginated list.- Anchor to lastlast•Int
The last
nelements from the paginated list.- Anchor to queryquery•String
A filter made up of terms, connectives, modifiers, and comparators.
name type description acceptable_values default_value example_use default string Filter by a case-insensitive search of multiple fields in a document. - query=Bob Norman
-query=title:green hoodieid id Filter by idrange.- id:1234
-id:>=1234
-id:<=1234You can apply one or more filters to a query. Learn more about [Shopify API search syntax](https://shopify.dev/api/usage/search-syntax). - Anchor to reversereverse•BooleanDefault:false
Reverse the order of the underlying list.
Arguments
- Anchor to lineItemsCountline•Count
Items Count The number of line items associated with the inventory transfer. Limited to a maximum of 10000 by default.
- Anchor to limitlimit•IntDefault:10000
The upper bound on count value before returning a result. Use
nullto have no limit.- Anchor to queryquery•String
A filter made up of terms, connectives, modifiers, and comparators.
name type description acceptable_values default_value example_use default string Filter by a case-insensitive search of multiple fields in a document. - query=Bob Norman
-query=title:green hoodieid id Filter by idrange.- id:1234
-id:>=1234
-id:<=1234You can apply one or more filters to a query. Learn more about [Shopify API search syntax](https://shopify.dev/api/usage/search-syntax).
Arguments
- Anchor to metafieldmetafield•Metafield
A custom field, including its
namespaceandkey, that's associated with a Shopify resource for the purposes of adding and storing additional information.- •String!required
The key for the metafield.
- Anchor to namespacenamespace•String
The container the metafield belongs to. If omitted, the app-reserved namespace will be used.
Arguments
- •String!
- Anchor to metafieldsmetafields•Metafield
Connection! non-null A list of custom fields that a merchant associates with a Shopify resource.
- Anchor to afterafter•String
The elements that come after the specified cursor.
- Anchor to beforebefore•String
The elements that come before the specified cursor.
- Anchor to firstfirst•Int
The first
nelements from the paginated list.- Anchor to keyskeys•[String!]
List of keys of metafields in the format
namespace.key, will be returned in the same format.- Anchor to lastlast•Int
The last
nelements from the paginated list.- Anchor to namespacenamespace•String
The metafield namespace to filter by. If omitted, all metafields are returned.
- Anchor to reversereverse•BooleanDefault:false
Reverse the order of the underlying list.
Arguments
- Anchor to namename•String!non-null
The name of the inventory transfer.
- Anchor to notenote•String
Additional note attached to the inventory transfer.
- Anchor to originorigin•Location
Snapshot Snapshot of the origin location (name, address, when snapped) with an optional link to the live Location object. If the original location is deleted, the snapshot data will still be available but the location link will be nil.
- Anchor to receivedQuantityreceived•Int!
Quantity non-null The total quantity of items received in the transfer.
- Anchor to referenceNamereference•String
Name The reference name of the inventory transfer.
- Anchor to shipmentsshipments•Inventory
Shipment Connection! non-null The shipments associated with the inventory transfer.
- Anchor to afterafter•String
The elements that come after the specified cursor.
- Anchor to beforebefore•String
The elements that come before the specified cursor.
- Anchor to firstfirst•Int
The first
nelements from the paginated list.- Anchor to lastlast•Int
The last
nelements from the paginated list.- Anchor to reversereverse•BooleanDefault:false
Reverse the order of the underlying list.
Arguments
- Anchor to statusstatus•Inventory
Transfer Status! non-null The current status of the transfer.
- •[String!]!non-null
A list of tags that have been added to the inventory transfer.
- Anchor to totalQuantitytotal•Int!
Quantity non-null The total quantity of items being transferred.
- Anchor to metafieldDefinitionsmetafield•Metafield
Definitions Definition Connection! non-nullDeprecated - Anchor to afterafter•String
The elements that come after the specified cursor.
- Anchor to beforebefore•String
The elements that come before the specified cursor.
- Anchor to firstfirst•Int
The first
nelements from the paginated list.- Anchor to lastlast•Int
The last
nelements from the paginated list.- Anchor to namespacenamespace•String
Filter metafield definitions by namespace.
- Anchor to pinnedStatuspinned•Metafield
Status Definition Pinned Status Default:ANY Filter by the definition's pinned status.
- Anchor to queryquery•String
A filter made up of terms, connectives, modifiers, and comparators.
name type description acceptable_values default_value example_use default string Filter by a case-insensitive search of multiple fields in a document. - query=Bob Norman
-query=title:green hoodiecreated_at time Filter by the date and time when the metafield definition was created. -
-
-id id Filter by idrange.- id:1234
-id:>=1234
-id:<=1234key string Filter by the metafield definition keyfield. - key:some-keynamespace string Filter by the metafield definition namespacefield. - namespace:some-namespaceowner_type string Filter by the metafield definition field. - type string Filter by the metafield definition typefield. - updated_at time Filter by the date and time when the metafield definition was last updated. -
-| You can apply one or more filters to a query. Learn more about Shopify API search syntax.
- Anchor to reversereverse•BooleanDefault:false
Reverse the order of the underlying list.
- Anchor to sortKeysort•Metafield
Key Definition Sort Keys Default:ID Sort the underlying list using a key. If your query is slow or returns an error, then try specifying a sort key that matches the field used in the search.
Arguments
Anchor to QueriesQueries
- inventoryTransfer (InventoryTransfer)
- inventoryTransfers (InventoryTransferConnection!)
- •query
Returns an
by ID. Inventory transfers track the movement of inventory between locations, including origin and destination details,objects, quantities, andvalues.- •ID!required
The ID of the inventory transfer.
Arguments
- •ID!
- •query
Returns a paginated list of
objects between locations. Transfers track the movement ofobjects betweenLocationobjects.Supports filtering transfers using query parameters and sorting by various criteria. Use the connection's edges to access transfer details including
objects, quantities, and shipment status.- Anchor to afterafter•String
The elements that come after the specified cursor.
- Anchor to beforebefore•String
The elements that come before the specified cursor.
- Anchor to firstfirst•Int
The first
nelements from the paginated list.- Anchor to lastlast•Int
The last
nelements from the paginated list.- Anchor to queryquery•String
A filter made up of terms, connectives, modifiers, and comparators.
name type description acceptable_values default_value example_use default string Filter by a case-insensitive search of multiple fields in a document. - query=Bob Norman
-query=title:green hoodiecreated_at time destination_id id id id Filter by idrange.- id:1234
-id:>=1234
-id:<=1234origin_id id product_id id product_variant_id id source_id id status string tag string Filter objects by the tagfield.- tag_not string Filter by objects that don’t have the specified tag. - You can apply one or more filters to a query. Learn more about [Shopify API search syntax](https://shopify.dev/api/usage/search-syntax). - Anchor to reversereverse•BooleanDefault:false
Reverse the order of the underlying list.
- Anchor to savedSearchIdsaved•ID
Search Id The ID of a saved search. The search’s query string is used as the query argument.
- Anchor to sortKeysort•Transfer
Key Sort Keys Default:ID Sort the underlying list using a key. If your query is slow or returns an error, then try specifying a sort key that matches the field used in the search.
Arguments
Anchor to MutationsMutations
- inventoryTransferCancel (InventoryTransferCancelPayload)
- inventoryTransferCreate (InventoryTransferCreatePayload)
- inventoryTransferCreateAsReadyToShip (InventoryTransferCreateAsReadyToShipPayload)
- inventoryTransferDuplicate (InventoryTransferDuplicatePayload)
- inventoryTransferEdit (InventoryTransferEditPayload)
- inventoryTransferMarkAsReadyToShip (InventoryTransferMarkAsReadyToShipPayload)
- inventoryTransferRemoveItems (InventoryTransferRemoveItemsPayload)
- inventoryTransferSetItems (InventoryTransferSetItemsPayload)
- •mutation
Cancels an inventory transfer.
- •ID!required
The ID of the inventory transfer to cancel.
Arguments
- •ID!
- •mutation
Creates a draft inventory transfer to move inventory items between
Locationobjects in your store. The transfer tracks which items to move, their quantities, and the origin and destination locations.Use
to mark the transfer as ready to ship.CautionAs of version
2026-01, this mutation supports an optional idempotency key using the@idempotentdirective. As of version2026-04, the idempotency key is required and must be provided using the@idempotentdirective. For more information, see the idempotency documentation.Caution:As of version
2026-01, this mutation supports an optional idempotency key using the@idempotentdirective. As of version2026-04, the idempotency key is required and must be provided using the@idempotentdirective. For more information, see the idempotency documentation.Caution: As of version <code>2026-01</code>, this mutation supports an optional idempotency key using the <code>@idempotent</code> directive. As of version <code>2026-04</code>, the idempotency key is required and must be provided using the <code>@idempotent</code> directive. For more information, see the <a href="https://shopify.dev/docs/api/usage/idempotent-requests">idempotency documentation</a>.
- Anchor to inputinput•Inventory
Transfer Create Input! required The input fields for the inventory transfer.
Arguments
- •mutation
Creates an inventory transfer in ready to ship.
CautionAs of 2026-01, this mutation supports an optional idempotency key using the
@idempotentdirective. As of 2026-04, the idempotency key is required and must be provided using the@idempotentdirective. For more information, see the idempotency documentation.Caution:As of 2026-01, this mutation supports an optional idempotency key using the
@idempotentdirective. As of 2026-04, the idempotency key is required and must be provided using the@idempotentdirective. For more information, see the idempotency documentation.Caution: As of 2026-01, this mutation supports an optional idempotency key using the <code>@idempotent</code> directive. As of 2026-04, the idempotency key is required and must be provided using the <code>@idempotent</code> directive. For more information, see the <a href="https://shopify.dev/docs/api/usage/idempotent-requests">idempotency documentation</a>.
- Anchor to inputinput•Inventory
Transfer Create As Ready To Ship Input! required The input fields for the inventory transfer.
Arguments
- •mutation
This mutation allows duplicating an existing inventory transfer. The duplicated transfer will have the same line items and quantities as the original transfer, but will be in a draft state with no shipments.
CautionAs of 2026-01, this mutation supports an optional idempotency key using the
@idempotentdirective. As of 2026-04, the idempotency key is required and must be provided using the@idempotentdirective. For more information, see the idempotency documentation.Caution:As of 2026-01, this mutation supports an optional idempotency key using the
@idempotentdirective. As of 2026-04, the idempotency key is required and must be provided using the@idempotentdirective. For more information, see the idempotency documentation.Caution: As of 2026-01, this mutation supports an optional idempotency key using the <code>@idempotent</code> directive. As of 2026-04, the idempotency key is required and must be provided using the <code>@idempotent</code> directive. For more information, see the <a href="https://shopify.dev/docs/api/usage/idempotent-requests">idempotency documentation</a>.
- •ID!required
The ID of the inventory transfer to duplicate.
Arguments
- •ID!
- •mutation
Edits an inventory transfer.
- •ID!required
The ID of the inventory Transfer to be edited.
- Anchor to inputinput•Inventory
Transfer Edit Input! required The input fields to edit the inventory transfer.
Arguments
- •ID!
- •mutation
Sets an inventory transfer to ready to ship.
- •ID!required
The ID of the inventory transfer to mark as ready to ship.
Arguments
- •ID!
- •mutation
This mutation removes
s, or portions of them, from aorTransfer.For each referenced line item, if its entire quantity is still unallocated to a shipment, the line item is removed; otherwise the line item remains on the transfer with its quantity reduced to the allocated portion. Quantity allocated to a shipment (whether the shipment is in draft, in transit, or already received) is preserved.
On
transfers, removing items also returns the affected reserved quantity to available inventory at the origin location.To change the quantity of a line item without removing it, use
.- Anchor to inputinput•Inventory
Transfer Remove Items Input! required The input fields for the InventoryTransferRemoveItems mutation.
Arguments
- •mutation
This mutation sets the quantity for one or more line items on a Transfer.
Only the items you include in the
field are updated. Items already on the transfer but not referenced in your update will stay unchanged. Each inventory item may appear at most once in; duplicateentries are rejected.For each entry in
:- If the inventory item isn't yet on the transfer, a new line item is added with the provided quantity.
- If the inventory item is already on the transfer, the provided quantity
replaces the line item's
. Any quantity outside the processable portion (for example, already shipped or picked for shipment) is preserved, so the resulting total quantity equals the preserved portion plus the provided quantity.
Passing a quantity of
0is only allowed for transfers instatus; onortransfers it returns anerror. Ontransfers,quantity: 0leaves a zero-quantity line item on the transfer; it does not remove the item. To remove a line item from a transfer, use.CautionAs of 2026-01, this mutation supports an optional idempotency key using the
@idempotentdirective. As of 2026-04, the idempotency key is required and must be provided using the@idempotentdirective. For more information, see the idempotency documentation.Caution:As of 2026-01, this mutation supports an optional idempotency key using the
@idempotentdirective. As of 2026-04, the idempotency key is required and must be provided using the@idempotentdirective. For more information, see the idempotency documentation.Caution: As of 2026-01, this mutation supports an optional idempotency key using the <code>@idempotent</code> directive. As of 2026-04, the idempotency key is required and must be provided using the <code>@idempotent</code> directive. For more information, see the <a href="https://shopify.dev/docs/api/usage/idempotent-requests">idempotency documentation</a>.
- Anchor to inputinput•Inventory
Transfer Set Items Input! required The input fields for the InventoryTransferSetItems mutation.
Arguments
Anchor to InterfacesInterfaces
- CommentEventSubject
- HasEvents
- HasMetafieldDefinitions
- HasMetafields
- Node
- •interface
- •interface
- •interface
- •interface