← Back to Docs

Inventory Transfers

Overview

Transfer stock between locations. Supports multi-location stores with a full workflow: create draft → mark as shipped (in-transit) → receive at destination. Partial receiving is supported.

Transfer Workflow

Status Flow

StatusDescriptionAvailable Actions
DraftTransfer created, not yet shippedEdit, Ship, Cancel
In TransitShipped from source, not yet receivedReceive, Cancel
ReceivedReceived at destination locationView only
CancelledTransfer cancelledView only

Creating a Transfer

  1. Select From Location (source warehouse)
  2. Select To Location (destination — must be different from source)
  3. Add products with quantities (use "+ Add Product" for multiple items)
  4. Optionally add notes
  5. Click Create Transfer — generates transfer number (TR-00001)

Receiving a Transfer

Partial Receiving

When receiving, you can enter the actual quantity received for each item (may be less than requested). Inventory is updated based on received quantities:

Inventory Impact

ActionSource LocationDestination Location
Ship (Draft → In Transit)No changeNo change
Receive (In Transit → Received)- quantity_received+ quantity_received
CancelNo changeNo change

API Endpoints

EndpointMethodDescription
/api/inventory-transfersGETList transfers (filterable by status)
/api/inventory-transfersPOSTCreate new transfer
/api/inventory-transfers/{id}GETGet transfer details with items
/api/inventory-transfers/{id}/statusPUTUpdate status (ship/receive/cancel)
Multi-location: Locations are synced from Shopify via POST /api/locations/sync. Each location has a name, address, and primary flag. Inventory snapshots are tracked per location.