Skip to main content

Receive Warehouse Transfer Shipment

POST 

/api/warehouses/transfers/:transfer/receive

Records a receipt against a warehouse transfer, adding the received quantities to stock at the destination warehouse.

Required scope: warehouses:write

Grant this scope to your token under Settings → Developer → Personal Access Tokens.

Fields: products (required array of {id: warehouse transfer line ID, quantity, shipment_line_id}), shipment_id (the shipment being received), receipt_date (defaults to now), blemished (array of {product_id, sku, quantity, condition, reference} - received units in damaged condition are booked in as a new blemished product with the given SKU), condition and integration_unique_id.

The transfer must be open.

Shipping is handled for you per line: any line in the request that has NOT been dispatched yet has a shipment created for the quantity being received, so a transfer can be received without calling the shipment endpoint first. This applies per line, so it still works when other lines on the same transfer already shipped.

A line that is only PARTLY dispatched is not auto-shipped — a receipt cannot be split across two shipments — so such a line yields only its already-dispatched remainder. Read quantity_shipped and quantity_receivable on the transfer's lines to see what a receipt can take. Requesting a receipt where nothing at all is receivable returns 422 rather than silently recording nothing.

Auto-shipping does not apply to channel-managed destinations (Amazon FBA/AWD, Walmart WFS), whose dispatch and receipt are driven by the channel.

Authentication: Requires Bearer token.

  • rechain_affected (optional bool, default false) — when the entry is dated earlier than existing consumption in an affected product/warehouse pool, opt in to re-anchor those later transactions to the oldest available stock (true FIFO) after the save commits. Runs as a background job; pools in a locked accounting period or with unsupported shapes are skipped and reported.

Serial numbers. products[].serials (optional array of strings) names the serials received on a serialized line. They must be In Transit on this shipment; otherwise the call returns 422. Without them, the oldest serials in transit are received. Received serials become In Stock at the destination. Deleting the receipt puts them back In Transit. Closing the transfer with a receiving discrepancy scraps the serials that never arrived, with the reason "Lost in transit".

Request​

Responses​

Created

Response Headers
    Content-Type