Inventory Planner

Stock Transfers

Stock Transfers is the module for moving units between two of your Shopify locations. A transfer represents the intent to move specific products from an origin location to a destination, and Alfred walks it through a clear lifecycle — Draft, Ready to Ship, In Transit, Received — with cancellation as a side branch. Every transfer can be split into multiple shipments, each with its own tracking number, ship date, and receive event. All transfers are mirrored to Shopify Admin's Transfers section, so what you see in Alfred matches what your team sees in Shopify.

Transfer Lifecycle

Draft

Planning stage

You're still deciding what to move. Add or remove items, change quantities, edit the name or notes — nothing is committed to Shopify yet. Inventory is not reserved at the origin during Draft.

Best for: Building a transfer list, gathering input from store leads, or staging a transfer days ahead of pick time.

Ready to Ship

Committed in Shopify

The transfer is mirrored to Shopify. Inventory at the origin is reserved against this transfer until a shipment is created or the transfer is cancelled. You can still edit items until the first shipment exists.

Best for: Locked-in transfers waiting for pick-and-pack at the origin.

In Transit

At least one shipment dispatched

At least one shipment has been created — units are physically moving. You can keep adding more shipments to cover remaining items until everything is dispatched.

Best for: Transfers being shipped in stages or split across multiple packages.

Received

Terminal state

All shipped units have been received at the destination. Shopify increments the destination's inventory and the transfer becomes read-only. Discrepancies (damaged, lost, miscounted, over-received) are recorded per shipment item.

Best for: Closed transfers — kept as a history record.

Key Concepts

What a Transfer Is

A transfer is a single record covering the movement of one or more products from an origin location to a destination location. It groups everything together — what's being moved, how it's being shipped, when it ships, and what's received — instead of forcing you to manage out-and-in sides separately. One transfer can include multiple products and ship in multiple packages, and the math (how many units committed, shipped, outstanding, received) is tracked at the item level for you.

Native Shopify Sync

Transfers in Alfred mirror to Shopify Admin's Transfers section. When you mark a transfer Ready to Ship, Alfred creates the corresponding Shopify transfer. When you receive units, Alfred records receipts through Shopify's transfer receive API so destination inventory increments correctly. If you cancel a transfer in Alfred (while no shipment has moved), the cancellation writes through to Shopify. You don't need to dual-enter anything — Alfred is the system of record on top of Shopify's transfer system.

Multi-Shipment Support

A single transfer can ship in multiple packages. For example, a 600-unit transfer might leave the warehouse as three 200-unit shipments over a week. Each shipment carries its own tracking number, ship date, expected arrival, and per-shipment item list. You receive each shipment independently as it arrives at the destination. The parent transfer rolls up the totals — committed, shipped, outstanding, received — across all shipments.

Inventory Reservations

While a transfer is in Draft, units at the origin are not reserved — the count you see on the Inventory page is unchanged. Once you mark the transfer Ready to Ship, Alfred records the committed units as reserved against the origin. Those reservations are what other features (like Balance Stock) net out from available inventory at the source. Reservations release when the shipment is dispatched (units physically leave) and when the transfer is finally received at the destination.

Discrepancies on Receive

When you receive a shipment, you enter how many units actually arrived for each line. If that count differs from what shipped, Alfred requires you to pick a discrepancy reason: damaged, lost, miscounted, or over-received. Short receipts are reported to Shopify as rejected units; over-receipts are capped at the shipped quantity (Shopify won't accept more than what's on the shipment). The discrepancy reason and any note you add are stored on the shipment item for audit.

Cancelling a Transfer

You can cancel a transfer in Draft or Ready to Ship — but only as long as no shipment has been created. Once any units have physically left the origin (a shipment exists), the transfer must be played out: ship what's left, or receive what arrived and leave the remainder outstanding. Cancellations on Ready-to-Ship transfers also write through to Shopify so the two sides stay in sync.

What's Editable in Each State

In Draft, everything is editable — items, quantities, origin, destination, name, notes. In Ready to Ship (before the first shipment), you can still edit items and quantities; changes sync to Shopify in the background. Once a shipment exists, the item list locks to avoid planned-vs-shipped drift. Notes remain editable at every stage. Terminal states (Received, Cancelled) are read-only except for notes.

How to Use

1

1. Create a Draft Transfer

From the Stock Transfers hub, click 'Transfer between Locations'. Pick the origin and destination locations (they must be different), give the transfer a name if you want, and continue. The transfer opens in Draft state ready for you to add items.

2

2. Add Items and Set Quantities

Use the product picker to search your catalog and add variants. For each line, set how many units you intend to move. The picker shows current availability at both the origin and destination so you can make informed decisions. You can also upload a CSV of SKUs and quantities if you're working from a list.

3

3. Mark Ready to Ship

When the item list is final, click 'Mark Ready to Ship'. Alfred creates the corresponding Shopify transfer, reserves the committed units at the origin, and opens the transfer for shipment creation. Until you add a shipment, you can still edit the item list — changes sync to Shopify automatically.

4

4. Create Shipments as Units Leave

Each time a package physically leaves the origin, click 'Add shipment' and record what's in it. Enter the quantities for each item being shipped (you don't have to ship everything at once), add a tracking number and ship date, and save. The transfer transitions to In Transit on the first shipment. Add more shipments later for any remaining outstanding units.

5

5. Receive Each Shipment

When a shipment arrives at the destination, open the transfer and click 'Receive' on that shipment. For each line, scan barcodes or enter the received quantity. If a count differs from what shipped, pick a discrepancy reason (damaged, lost, miscounted, over-received). Submit to push the inventory increment to Shopify at the destination. The transfer becomes Received once all shipments are closed.

Tips & Best Practices

  • Use the name field to encode context that future-you will need — for example 'Replenish DTLA from Vernon — Mar 12' beats an unnamed transfer when you're looking at a list of twenty.
  • Treat Draft as a planning tool. Start a draft early in the week, add items as you walk the warehouse, and only mark Ready to Ship once the list is final. Drafts don't reserve inventory, so leaving them open costs nothing.
  • Use multi-shipment whenever a transfer leaves in more than one package. Resist the urge to make a separate transfer per box — keeping them under one transfer rolls up totals and matches what Shopify Admin will show.
  • Always enter a tracking number on each shipment. It gives your destination team a way to monitor arrival, and Alfred surfaces it on the shipment card for quick reference.
  • Reconcile discrepancies at receive time, not later. The four discrepancy reasons (damaged, lost, miscounted, over-received) are recorded on the shipment item — useful when you're investigating shrinkage or carrier issues weeks later.
  • Cancel transfers you're not going to ship rather than leaving them in Ready to Ship. Cancellation releases the origin reservation so the units come back into available inventory for other transfers and POs.
  • Open the transfer in Shopify Admin from time to time to confirm the two sides match. They should always be in sync, but a quick spot-check during the first few transfers builds confidence.
  • If you're moving a lot of units across many products, create a CSV from your source data (SKUs and quantities) and bulk-add them in one upload instead of using the picker line-by-line.

Frequently Asked Questions