Skip to main content

Ship a transfer

Shipping is the second step of a warehouse transfer's lifecycle. Once a transfer is Open, creating a shipment deducts stock from the source warehouse and puts those units in transit to the destination, ready to be received. This guide covers creating a shipment (with optional per-line lot and source-bin control), editing a shipped quantity, deleting a shipment, marking an Amazon FBA transfer as shipped, and sending an Advanced Shipment Notice to a 3PL.

For the model behind shipments, movements, and in-transit stock, see How warehouse transfers work. To open a transfer first, see Create and open a warehouse transfer.

A few terms used on this page
  • In transit — stock that has left the source warehouse but hasn't yet been received. Shipping posts a -active movement at the source and a +in_transit movement at the destination. See Stock states.
  • Shippable quantity — a line's active quantity minus what's already been shipped. A shipment can never ship more than remains.
  • Lot allocation — the exact source FIFO layers a line draws from, chosen by hand instead of leaving SKU.io to pick by FEFO/FIFO.
  • ASN — an Advanced Shipment Notice email sent to a third-party logistics (3PL) destination warehouse to announce an incoming shipment.

Before you begin

RequirementWhy it's needed
Ship warehouse transfers permission (warehouse_transfers.ship)Required to create a shipment, edit a shipment line's quantity, delete a shipment, and mark an FBA transfer as shipped.
An Open transferShipments can only be created against an Open transfer. A Draft or Closed transfer is rejected. See Create and open a warehouse transfer.
On-hand stock at the source warehouseShipping consumes real stock. If a line's source stock can't cover the shipped quantity, the shipment is rejected.
A standard (non-channel-managed) transfer, for the manual ship flowAmazon FBA/AWD and Walmart WFS transfers are shipped through their channel, not through the Create Shipment dialog — see Channel-managed transfers.

Create a shipment

Open transfers show a Ship button in the action bar (and a Create Shipment button on the Shipments tab). Both open the same Create Shipment dialog.

  1. Open the transfer from Inventory → Warehouse Transfers and confirm its status is Open.

  2. Click Ship (or open the Shipments tab and click Create Shipment).

  3. In the Create Shipment dialog, fill in the shipment header:

    FieldNotes
    Shipment DateDefaults to the transfer date, or today. This date stamps the movements.
    Shipping MethodOptional. Defaults to the transfer's shipping method.
    Tracking NumberOptional carrier tracking reference.
    Shipping CostOptional. A cost you can carry into transfer costing later.
  4. Review the Shipment Lines. Each line shows its SKU, Product, Remaining (shippable) quantity, and an editable Ship Qty.

  5. Adjust Ship Qty per line. Leave a line at its full remaining quantity to ship it in full, or lower it to ship part of the line now and the rest in a later shipment.

  6. Click Create Shipment.

What happens: SKU.io creates the shipment and, for each shipped line, posts a -active movement at the source warehouse and a matching +in_transit movement at the destination, then transitions the line's allocation to Fulfilled. The transfer's shipment status becomes Partially Shipped or, once every line is fully shipped, Shipped. You can follow every movement in the inventory movement ledger.

Ship everything, or only the lines you choose

If you don't single out any lines, SKU.io ships every line's full remaining quantity. If you set quantities on specific lines, only those lines ship — the rest stay unshipped for a later shipment. This is how you build a partial shipment.

You can't ship more than remains

A line's Ship Qty can't exceed its remaining shippable quantity (active quantity minus what's already shipped). Exceeding that limit is rejected with a message such as "Cannot ship 5 units of warehouse_transfer_line 42 — only 3 remaining." If the source warehouse doesn't hold enough stock to cover the shipped quantity, the shipment is rejected for insufficient stock, naming the SKU. And if a line has no allocation to fulfil, the shipment is rejected as not allocated — reopen the transfer so allocations are rebuilt.

Ship with a lot override or a specific source bin

For lot-tracked products, or when you want a line to draw from a particular bin, the Create Shipment dialog exposes two optional per-line controls. When you leave them alone, SKU.io consumes automatically — by FEFO/FIFO across pickable bins.

Pick the source bin

When bin locations are enabled for the source warehouse, each shipment line shows a Pick From column.

  1. In the Create Shipment dialog, open the Pick From selector on a line.
  2. Choose the source-warehouse bin this line should draw its stock from.

The bin must be an active (non-deprecated) location in the transfer's source warehouse. Choosing a bin in another warehouse, or a deprecated bin, is rejected with "The selected source bin does not belong to the transfer source warehouse." Leave Pick From empty to let SKU.io walk pickable bins automatically. See Move stock between bins for how bins hold stock.

Override the lots (FEFO)

Lot-tracked lines show a lot consumption panel. SKU.io seeds a FEFO suggestion (earliest expiry first), which you can accept or change.

  1. In the lot panel for a line, review the suggested lots.
  2. Adjust the quantity drawn from each FIFO layer, or add layers, so the amounts add up to the line's Ship Qty.
  3. Create the shipment as usual.

Each override entry names a source FIFO layer and a quantity. The rules SKU.io enforces:

  • Every entry's quantity must be greater than zero.
  • The entries must add up to the line's shipped quantity.
  • Each layer must be an active layer in the source warehouse with enough on hand.
  • The allocation must respect your tenant's lot-override policy. Depending on that policy, choosing an expired lot may be blocked ("Your lot policy blocks consuming expired stock.") or a non-earliest-expiry lot may be blocked ("Your lot policy requires consuming the earliest-expiry lot first (FEFO).").

Errors are reported inline against the specific line and layer so you can correct them without losing the rest of the dialog.

Edit a shipped quantity

After a shipment exists, you can correct how much a line shipped from the shipment's detail page. Editing is deliberately a two-step action so you can see the inventory consequences before you commit.

  1. Open the shipment from the transfer's Shipments tab.
  2. On the line you want to correct, open the Edit Shipment Quantity dialog.
  3. Enter the new shipment quantity. SKU.io previews the change and shows the inventory implications — the resulting shipment-line quantity, the unchanged transfer-line quantity, the amount already received, and the in-transit amount at the destination after the edit.
  4. Select I understand the inventory implications and want to apply this change.
  5. Click Save.

What happens: increasing the quantity posts additional -active / +in_transit movements at the source and fulfils that much more of the line's allocation; decreasing it reverses movements and reverts the fulfilled allocation. The parent transfer line's quantity is preserved — editing the shipment never changes the transfer's intent, only what shipped.

Two limits on editing a shipment line
  • You can't reduce below what's already been received. Shrinking a shipment line under the total already received is rejected: "Shipment quantity cannot be set below the total already received against this line."
  • You can't exceed the transfer line quantity. Raising a shipment line above its parent transfer line's quantity is rejected: "Shipment quantity cannot exceed the warehouse transfer line quantity."

The dialog blocks Save in both cases and, if the source can't cover an increase, rejects it for insufficient stock. You must confirm the implications before the change will save — leaving the confirmation unchecked keeps the change pending.

Delete a shipment

Deleting a shipment fully reverses it and returns the transfer to its pre-shipment state.

  1. Open the transfer and go to the Shipments tab.
  2. On the shipment, click Delete Shipment.
  3. Confirm.

What happens: SKU.io removes the shipment's receipts and shipment lines first — reversing the +in_transit and -active movements and reverting each Fulfilled allocation back to Allocated — then recomputes the transfer's shipment and receipt status. The source stock is restored and the transfer is shippable again. Deleting a shipment requires the Ship warehouse transfers permission.

Deleting a shipment vs. editing it

Delete the whole shipment when it shouldn't have happened at all. To fix only the shipped amount on one line, edit the shipped quantity instead — it keeps the shipment and its receipts intact.

Channel-managed transfers (FBA, AWD, and WFS)

Transfers to (or from) a channel-managed warehouse are never shipped through the Create Shipment dialog — shipping is driven by the channel's inbound lifecycle. The manual ship flow rejects them so it can't post phantom in-transit stock at a warehouse that holds no SKU-side on hand.

  • Amazon FBA / AWD — the shipment is created when you open the transfer; you then announce dispatch with Mark as Shipped (below).
  • Walmart WFS — shipping is driven by the WFS inbound; there's no manual ship step.

Mark an FBA transfer as Shipped

For a transfer destined to Amazon FBA, an open transfer shows a Mark as Shipped button instead of Ship.

  1. Open the FBA transfer and confirm it's Open.
  2. Click Mark as Shipped.
  3. In the dialog, set the Shipment Date (required) and, optionally, a Tracking Number.
  4. Click Mark as Shipped.

What happens: SKU.io processes the linked Amazon inbound shipment — creating the pending inbound, handling any shortages, and updating status. The transfer then ships automatically once the Amazon inbound reaches Shipped or later. Marking as shipped requires the Ship warehouse transfers permission.

When Mark as Shipped is rejected
  • A non-FBA destination is rejected — the button only appears for FBA transfers.
  • A transfer that already has a pending inbound is rejected as already shipped.
  • A transfer with no linked Amazon inbound shipment is rejected — there's nothing to mark.
Receiving a channel-managed transfer

You can't manually receive an Amazon FBA/AWD or Walmart WFS transfer either — the receipt is recorded automatically from the channel. Attempting a manual receipt is rejected with a clear message. See Receive a transfer.

Send an Advanced Shipment Notice (3PL)

When a transfer ships to a third-party logistics (3PL) warehouse, you can email that warehouse an ASN so they know stock is coming.

  1. Open the transfer whose destination is a 3PL warehouse.
  2. In the action bar, click Send ASN.

What happens: SKU.io emails the ASN to the destination warehouse and records the send time. The button then reads Resend ASN, and you can send it again at any time.

The Send ASN action only appears when the destination is a 3PL warehouse with an email address on file. A non-3PL destination is rejected ("Warehouse should be 3PL"), as is a 3PL destination with no email on the address ("Destination address should has an email"). On the transfers list, you can filter for transfers whose ASN hasn't gone out yet — a 3PL destination with no recorded send.

Next steps

Last verified: