Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
40rty-ai avatar

Shopify Admin Inventory Transfer Between Locations

  • 7 installs
  • 173 repo stars
  • Updated June 26, 2026
  • 40rty-ai/shopify-admin-skills

shopify-admin-inventory-transfer-between-locations is a Claude Code skill that moves inventory between two Shopify locations by decrementing the source and incrementing the destination via paired inventoryAdjustQuantitie

About

This Claude Code skill transfers a set quantity of inventory from a source Shopify location to a destination by running paired inventory adjustments that decrement the source and increment the destination. An operator uses it for inter-warehouse rebalancing, pre-positioning stock before a sale, or redistributing after a location change. It validates locations and defaults to a dry_run preview, but does not create a formal transfer-order record.

  • Moves inventory between two Shopify locations via paired inventoryAdjustQuantities (decrement source, increment destinat
  • Validates both locations are active and warns when source stock is insufficient
  • Defaults to dry_run: true to preview transfers before committing

Shopify Admin Inventory Transfer Between Locations by the numbers

  • 7 all-time installs (skills.sh)
  • Ranked #1,587 of 2,715 Automation & Workflows skills by installs in the Skillselion catalog
  • Data as of Aug 1, 2026 (Skillselion catalog sync)
At a glance

shopify-admin-inventory-transfer-between-locations capabilities & compatibility

Free; requires write_inventory scope on a Shopify CLI session.

Capabilities
inventory transfer · location rebalancing · stock adjustment
Pricing
Free
From the docs

What shopify-admin-inventory-transfer-between-locations says it does

Moves inventory units from one location to another by decrementing the source and incrementing the destination.
SKILL.md
This does NOT create a transfer order record in Shopify; it is a direct adjustment.
SKILL.md
npx skills add https://github.com/40rty-ai/shopify-admin-skills --skill shopify-admin-inventory-transfer-between-locations

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs7
repo stars173
Last updatedJune 26, 2026
Repository40rty-ai/shopify-admin-skills

What it does

Rebalance stock between two Shopify locations using paired inventory adjustments.

Who is it for?

Rebalancing inventory between warehouses or pre-positioning stock before a sale across Shopify locations.

Skip if: Creating an official Shopify transfer order record; it performs direct adjustments only.

When should I use this skill?

You need to move stock quantities from one Shopify location to another.

What you get

Stock is decremented at the source and incremented at the destination for each listed SKU.

  • Paired per-SKU decrement/increment adjustments across two locations

By the numbers

  • 2 adjustments per SKU (source decrement + destination increment)
  • 3-step workflow (locations query, inventoryItems query, inventoryAdjustQuantities mutation)

Files

SKILL.mdMarkdownGitHub ↗

Purpose

Transfers a specified quantity of inventory from a source location to a destination location using paired inventory adjustments (decrement source, increment destination). Used for inter-warehouse rebalancing, pre-positioning stock before a sale, or redistributing inventory after a location change. Replaces manual inventory transfer in Shopify Admin.

Prerequisites

  • Authenticated Shopify CLI session: shopify store auth --store <domain> --scopes read_products,write_inventory,read_inventory
  • API scopes: read_products, read_inventory, write_inventory
  • Both source and destination must be active Shopify locations

Parameters

ParameterTypeRequiredDefaultDescription
storestringyesStore domain (e.g., mystore.myshopify.com)
source_location_idstringyesGID of the location to move stock FROM
destination_location_idstringyesGID of the location to move stock TO
transfersarrayyesList of {sku, quantity} objects to transfer
dry_runboolnotruePreview adjustments without executing mutations
formatstringnohumanOutput format: human or json

Safety

⚠️ inventoryAdjustQuantities directly modifies inventory levels. Decrementing the source below zero is possible if the quantity exceeds available stock — the skill will warn but Shopify does not block negative adjustments. Run with dry_run: true to verify available quantities at the source before committing. This does NOT create a transfer order record in Shopify; it is a direct adjustment.

Workflow Steps

1. OPERATION: locations — query Inputs: first: 50 Expected output: All locations with id, name — validate source and destination IDs exist

2. OPERATION: inventoryItems — query Inputs: Batch lookup by SKU to get inventoryItem.id for each transfer SKU Expected output: Inventory items with current quantities at source location

3. Validate: for each SKU, confirm available >= quantity at source. Warn if not but proceed if dry_run: false

4. OPERATION: inventoryAdjustQuantities — mutation Inputs: Two changes per SKU: { inventoryItemId, locationId: source, delta: -quantity, reason: "correction" } and { inventoryItemId, locationId: destination, delta: +quantity, reason: "correction" } Expected output: inventoryAdjustmentGroup { changes { delta, location } }, userErrors

GraphQL Operations

# locations:query — validated against api_version 2025-01
query ActiveLocations {
  locations(first: 50, includeInactive: false) {
    edges {
      node {
        id
        name
        isActive
        fulfillsOnlineOrders
      }
    }
  }
}
# inventoryItems:query — validated against api_version 2025-01
query InventoryLevelsAtLocation($ids: [ID!]!) {
  nodes(ids: $ids) {
    ... on InventoryItem {
      id
      sku
      inventoryLevels(first: 20) {
        edges {
          node {
            location {
              id
              name
            }
            quantities(names: ["available", "on_hand"]) {
              name
              quantity
            }
          }
        }
      }
    }
  }
}
# inventoryAdjustQuantities:mutation — validated against api_version 2025-01
mutation InventoryAdjustQuantities($input: InventoryAdjustQuantitiesInput!) {
  inventoryAdjustQuantities(input: $input) {
    inventoryAdjustmentGroup {
      createdAt
      reason
      changes {
        delta
        quantityAfterChange
        item {
          id
          sku
        }
        location {
          id
          name
        }
      }
    }
    userErrors {
      field
      message
    }
  }
}

Session Tracking

Claude MUST emit the following output at each stage. This is mandatory.

On start, emit:

╔══════════════════════════════════════════════╗
║  SKILL: Inventory Transfer Between Locations ║
║  Store: <store domain>                       ║
║  Started: <YYYY-MM-DD HH:MM UTC>             ║
╚══════════════════════════════════════════════╝

After each step, emit:

[N/TOTAL] <QUERY|MUTATION>  <OperationName>
          → Params: <brief summary of key inputs>
          → Result: <count or outcome>

If dry_run: true, prefix every mutation step with [DRY RUN] and do not execute it.

On completion, emit:

For format: human (default):

══════════════════════════════════════════════
OUTCOME SUMMARY
  SKUs transferred:   <n>
  Total units moved:  <n>
  Warnings (low stock): <n>
  Errors:             <n>
  Output:             inventory_transfer_<date>.csv
══════════════════════════════════════════════

For format: json, emit:

{
  "skill": "inventory-transfer-between-locations",
  "store": "<domain>",
  "started_at": "<ISO8601>",
  "dry_run": true,
  "source_location": "<name>",
  "destination_location": "<name>",
  "outcome": {
    "skus_transferred": 0,
    "units_moved": 0,
    "warnings": 0,
    "errors": 0,
    "output_file": "inventory_transfer_<date>.csv"
  }
}

Output Format

CSV file inventory_transfer_<YYYY-MM-DD>.csv with columns: sku, product_title, inventory_item_id, source_location, destination_location, quantity_transferred, source_qty_before, source_qty_after, destination_qty_before, destination_qty_after

Error Handling

ErrorCauseRecovery
THROTTLEDAPI rate limit exceededWait 2 seconds, retry up to 3 times
SKU not foundSKU not in catalogLog warning, skip transfer for that SKU
userErrors on adjustmentLocation not stocking itemLog error, skip SKU, continue
Quantity would go negativeTransferring more than availableLog warning; abort SKU if dry_run: false

Best Practices

  • Always run with dry_run: true first — the skill verifies available quantities and shows exactly what will change.
  • This creates raw inventory adjustments, not a transfer order. For audit trail purposes, add a note in the reason field and document the transfer separately.
  • For large transfers (50+ SKUs), run during off-peak hours to avoid interfering with live inventory reads by the storefront.
  • Pair with multi-location-inventory-audit to identify which locations have excess stock before deciding transfer quantities.

Related skills

FAQ

Does it create a transfer order?

No. It is a direct paired adjustment and does not create a transfer order record in Shopify.

Can the source go negative?

Yes. Shopify does not block negative adjustments; the skill warns if the quantity exceeds available stock but proceeds when dry_run is false.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.