Create & open a warehouse transfer
A warehouse transfer moves stock from one of your warehouses to another. You build it as a Draft — pick an origin and a destination, add the products and quantities you want to move — and then open it, which commits the transfer and reserves the stock at the source. Opening doesn't ship anything or deduct on-hand: that happens later when you ship the transfer. This guide covers creating a draft, editing and importing its lines, duplicating an existing transfer, and opening it — including the insufficient-stock and same-warehouse guards you'll hit along the way.
For the full lifecycle and the model behind it, see How warehouse transfers work.
Before you begin
| Requirement | Why it's needed |
|---|---|
Create warehouse transfers permission (warehouse_transfers.create) | Required to create a draft, and to duplicate an existing transfer. |
Update warehouse transfers permission (warehouse_transfers.update) | Required to edit lines and to open a draft. |
Import warehouse transfers permission (warehouse_transfers.import) | Required to import lines from a CSV and to download the import template. |
| At least two warehouses | A transfer needs a distinct origin and destination — the destination must differ from the origin. |
| Stock at the origin (to open) | Creating a draft never checks stock. Opening the transfer reserves stock and refuses if the origin can't cover a line. See Insufficient source stock. |
Creating a transfer only records intent. It's a Draft: fully editable and holding no stock. Opening it's the commit step that creates allocations against source stock. This two-step split (draft → open) is deliberate — you can build and adjust a transfer freely before it touches inventory.
Create a transfer
- Go to Inventory → Warehouse Transfers.
- Click New Transfer.
- Under Origin, choose the warehouse the stock ships from.
- Under Destination, choose the warehouse the stock ships to. The destination list excludes the origin, because a transfer can't target its own source (see Destination must differ from origin).
- Optionally set the Logistics fields: a Shipping Method, a Transfer Date (the intended dispatch date), and an ETA (estimated arrival). If you set an ETA you must also set a Transfer Date, and the ETA can't fall before it.
- Under Items, click Add Product and add each product with the quantity to move. Every line needs a quantity of 1 or more.
- Click Create Transfer.
What you'll see: the transfer is created as a Draft and assigned a transfer number — by default WT- followed by a zero-padded id (for example WT-0042). The prefix and number width come from your warehouse-transfer settings. You land on the transfer's detail page, where you can keep editing, import more lines, or open it.
A draft holds no inventory, so you can create one even when the origin is short — and add products whose stock hasn't arrived yet. The stock check happens only at open. This means you can plan a transfer ahead of a restock and open it once the goods land.
If you set the Origin to an Amazon FBA warehouse, SKU.io routes the request to Amazon's removal order flow rather than creating an ordinary warehouse transfer — FBA stock leaves a fulfillment center through a removal, not a SKU-managed shipment. That's a different object with its own lifecycle. A transfer built here is for moving stock out of, into, or between your own (and channel-managed inbound) warehouses.
Edit transfer lines
You can add, remove, and re-quantity lines on a transfer at any point before those units ship. On the transfer's detail page, adjust the lines and click Save.
- Add a line — add a product and quantity, the same as during creation.
- Remove a line — drop a product from the transfer.
- Change a quantity — raise or lower a line's quantity to move.
What happens to allocations:
- On a Draft, edits are free — nothing is reserved yet, so changing lines only changes the plan.
- On an Open transfer, SKU.io adjusts the allocation to match the new quantity. Raising a line reserves more stock at the origin; lowering it releases the difference back to available. Raising a line beyond what the origin can cover is refused — see Insufficient source stock.
Once part of a line has shipped, its shipped units are locked. Reducing that line's quantity below the shipped amount is refused with "Cannot reduce transfer line … active quantity below already-shipped quantity." To move fewer units, you'd need to handle the shipment rather than edit the line down. Editing the quantity above the shipped amount is always allowed.
Changing the origin on an open transfer re-pulls stock from the new warehouse; changing the destination re-points the in-transit stock. You can't change either warehouse once any line has been received — SKU.io refuses with "Cannot change warehouse of warehouse transfers with receipts." Receiving is covered in Receive a transfer.
Import transfer lines from a CSV
Instead of adding products one by one, you can import a list.
- On the transfer's detail page, open the Import Product List dialog.
- To get a correctly formatted starting file, download the XLSX import template — it ships with the required headers and a few sample rows.
- Prepare a CSV with a
skucolumn (required) and an optionalquantitycolumn. Rows with a blank SKU are skipped; a row with no quantity defaults to 1. Duplicate SKUs are summed. - Upload the file (or paste the CSV text), then decide how to merge it:
- Leave Replace existing items (instead of appending) unchecked to add the imported lines to what's already on the transfer.
- Check it to replace the transfer's current lines with the imported set.
- Click Import.
What you'll see: the lines are added or replaced and the transfer refreshes. If the file contains any SKU that doesn't match a product, the whole import is rejected with "The CSV contains unknown products" and the offending SKUs are listed — fix them and re-import. If the transfer is already open, importing goes through the same allocation adjustment as editing lines, so an imported quantity the origin can't cover raises the insufficient-stock error.
Duplicate a transfer
Duplicating is the fastest way to repeat a recurring move — a weekly top-up from a central warehouse to a store, for example.
- From the Warehouse Transfers list (or a transfer's detail page), choose Duplicate.
What you'll see: a brand-new Draft is created, copying the original's origin, destination, shipping method, and every product line (including any cancelled quantities). The copy gets its own transfer number and holds no stock — it's a fresh draft you can edit and open independently. Duplicating requires the Create warehouse transfers permission.
Open a transfer
Opening commits a draft and reserves the stock it needs at the origin. It doesn't create a shipment or deduct on-hand — the goods aren't in transit yet.
- Open a Draft transfer's detail page.
- Click Open Transfer. (The button's tooltip reads "Allocates inventory at the source warehouse so it can be shipped. Stock is not deducted until a shipment is created.")
What you'll see: for each line, SKU.io creates an Allocated allocation against the origin's on-hand-available stock and moves the transfer to Open. No inventory movements are written yet. The reserved units shift from Available to Allocated in the origin's stock states — On Hand is unchanged until you ship. From here, ship the transfer to actually move the stock.
A transfer is an operational commitment, not customer demand, so — unlike a sales order — it has no backorder state. Every line is reserved in full or the open is refused. There's no partial open that leaves some units waiting for stock. See Allocations & backorders for how this differs from sales-order allocation.
A transfer must have at least one product line to open. Opening an empty transfer is refused with "The warehouse transfer must have at least 1 product." — add a line first. (The Open Transfer button also warns "Add at least one line item before opening the transfer" until you do.) Opening a transfer that's already Open is rejected with "Transfer (…) is already open."
To take an open transfer back to editable, use Revert to Draft — available while it's open and nothing has been received. That releases the line allocations so you can adjust the transfer again.
Guards you may hit
Insufficient source stock
When you open a transfer (or raise a line on an open one), each line needs the origin's on-hand-available stock to cover it in full. If any line asks for more than is available, the entire open is refused — no line is partially reserved — with "Not enough quantity of product (SKU)." naming the product that fell short.
There's no partial reservation and no backorder: a transfer either reserves everything it needs or nothing at all. To proceed, lower the line to what's available, free up stock (for example by releasing another allocation or stock hold), or wait for a restock and open the draft later. Note that only available stock counts — units already Allocated, On Hold, or Non-Sellable at the origin aren't eligible to be pulled into a transfer.
Transfers created automatically by an Amazon FBA/AWD inbound webhook can proceed past a shortage, because the goods have already physically left the source — refusing the deduction would leave your books permanently out of step with the warehouse. That path logs the shortage and records a note on the transfer instead of throwing. Operator-created transfers, like the ones in this guide, always get the hard stop above.
Destination must differ from origin
A transfer can't move stock to the same warehouse it came from. The Destination list on the create form already excludes the origin, and the rule is enforced on save — a destination equal to the origin fails validation. To reorganize stock within a single warehouse (between bins), use a location transfer instead.
When the destination is an Amazon FBA warehouse, SKU.io clears the transfer's shipping method on save — inbound shipping to FBA is governed by Amazon's inbound plan, not a SKU shipping method. Set a shipping method only for transfers between your own warehouses.
Next steps
- Ship a transfer — move the allocated stock into transit.
- Receive a transfer — book the stock in at the destination.
- Close a transfer, add costs & post accounting — finish and cost the move.
- How warehouse transfers work — the concept behind the draft → open → ship → receive → close lifecycle.
- Transfer statuses, fields & list — every status and field, and what the list columns show.
- Stock states — how opening a transfer shifts stock from Available to Allocated.