---
title: inventoryTransferDuplicate - GraphQL Admin
description: >-
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.
> Caution:
> As of 2026-01, this mutation supports an optional idempotency key using the
`@idempotent` directive.
> As of 2026-04, the idempotency key is required and must be provided using
the `@idempotent` directive.
> For more information, see the [idempotency
documentation](https://shopify.dev/docs/api/usage/idempotent-requests).
api_version: 2026-01
api_name: admin
type: mutation
api_type: graphql
source_url:
html: >-
https://shopify.dev/docs/api/admin-graphql/latest/mutations/inventoryTransferDuplicate
md: >-
https://shopify.dev/docs/api/admin-graphql/latest/mutations/inventoryTransferDuplicate.md
---
# inventoryTransferDuplicate
mutation
Requires `write_inventory_transfers` access scope. Also: The user must have permission to manage inventory.
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.
***
**Caution:** As of 2026-01, this mutation supports an optional idempotency key using the \@idempotent\ directive. As of 2026-04, the idempotency key is required and must be provided using the \@idempotent\ directive. For more information, see the \idempotency documentation\.
***
## Arguments
* id
[ID!](https://shopify.dev/docs/api/admin-graphql/latest/scalars/ID)
required
The ID of the inventory transfer to duplicate.
***
## InventoryTransferDuplicatePayload returns
* inventoryTransfer
[InventoryTransfer](https://shopify.dev/docs/api/admin-graphql/latest/objects/InventoryTransfer)
The duplicated inventory transfer.
* userErrors
[\[InventoryTransferDuplicateUserError!\]!](https://shopify.dev/docs/api/admin-graphql/latest/objects/InventoryTransferDuplicateUserError)
non-null
The list of errors that occurred from executing the mutation.
***
## Examples
* ### Duplicates a transfer with idempotency enabled (2026-01 onwards)
#### Query
```graphql
mutation inventoryTransferDuplicate($id: ID!, $idempotencyKey: String!) {
inventoryTransferDuplicate(id: $id) @idempotent(key: $idempotencyKey) {
inventoryTransfer {
id
}
userErrors {
field
message
}
}
}
```
#### Variables
```json
{
"id": "gid://shopify/InventoryTransfer/825890269",
"idempotencyKey": "550e8400-e29b-41d4-a716-446655440000"
}
```
#### cURL
```bash
curl -X POST \
https://your-development-store.myshopify.com/admin/api/2026-01/graphql.json \
-H 'Content-Type: application/json' \
-H 'X-Shopify-Access-Token: {access_token}' \
-d '{
"query": "mutation inventoryTransferDuplicate($id: ID!, $idempotencyKey: String!) { inventoryTransferDuplicate(id: $id) @idempotent(key: $idempotencyKey) { inventoryTransfer { id } userErrors { field message } } }",
"variables": {
"id": "gid://shopify/InventoryTransfer/825890269",
"idempotencyKey": "550e8400-e29b-41d4-a716-446655440000"
}
}'
```
#### React Router
```javascript
import { authenticate } from "../shopify.server";
export const loader = async ({request}) => {
const { admin } = await authenticate.admin(request);
const response = await admin.graphql(
`#graphql
mutation inventoryTransferDuplicate($id: ID!, $idempotencyKey: String!) {
inventoryTransferDuplicate(id: $id) @idempotent(key: $idempotencyKey) {
inventoryTransfer {
id
}
userErrors {
field
message
}
}
}`,
{
variables: {
"id": "gid://shopify/InventoryTransfer/825890269",
"idempotencyKey": "550e8400-e29b-41d4-a716-446655440000"
},
},
);
const json = await response.json();
return json.data;
}
```
#### Ruby
```ruby
session = ShopifyAPI::Auth::Session.new(
shop: "your-development-store.myshopify.com",
access_token: access_token
)
client = ShopifyAPI::Clients::Graphql::Admin.new(
session: session
)
query = <<~QUERY
mutation inventoryTransferDuplicate($id: ID!, $idempotencyKey: String!) {
inventoryTransferDuplicate(id: $id) @idempotent(key: $idempotencyKey) {
inventoryTransfer {
id
}
userErrors {
field
message
}
}
}
QUERY
variables = {
"id": "gid://shopify/InventoryTransfer/825890269",
"idempotencyKey": "550e8400-e29b-41d4-a716-446655440000"
}
response = client.query(query: query, variables: variables)
```
#### Node.js
```javascript
const client = new shopify.clients.Graphql({session});
const data = await client.query({
data: {
"query": `mutation inventoryTransferDuplicate($id: ID!, $idempotencyKey: String!) {
inventoryTransferDuplicate(id: $id) @idempotent(key: $idempotencyKey) {
inventoryTransfer {
id
}
userErrors {
field
message
}
}
}`,
"variables": {
"id": "gid://shopify/InventoryTransfer/825890269",
"idempotencyKey": "550e8400-e29b-41d4-a716-446655440000"
},
},
});
```
#### Shopify CLI
```bash
shopify app execute \
--query \
'mutation inventoryTransferDuplicate($id: ID!, $idempotencyKey: String!) {
inventoryTransferDuplicate(id: $id) @idempotent(key: $idempotencyKey) {
inventoryTransfer {
id
}
userErrors {
field
message
}
}
}' \
--variables \
'{
"id": "gid://shopify/InventoryTransfer/825890269",
"idempotencyKey": "550e8400-e29b-41d4-a716-446655440000"
}'
```
#### Response
```json
{
"inventoryTransferDuplicate": {
"inventoryTransfer": {
"id": "gid://shopify/InventoryTransfer/1061783019"
},
"userErrors": []
}
}
```
* ### inventoryTransferDuplicate reference