Shipments & Receiving
How to create shipments against a transfer order and record goods receipt.
Shipment Statuses
| Status | Meaning |
|---|---|
| active | Shipment created; quantities being managed |
| received | Goods received |
| cancelled | Shipment voided |
Note: transfer shipment statuses differ from PO shipment statuses. Transfer shipments use
active(notannounced) as their initial state.
Creating a Shipment
Shipments are added from the Shipments tab on the transfer order detail page.
| Field | Required? | Notes |
|---|---|---|
| Estimated delivery date | ✅ Required if Shopify sync enabled | The backend throws an error if this is missing when sync is on |
| Tracking number | Optional | |
| Shipment items | — | Per line item: set quantity announced |
Status transition: when the first shipment is created against a confirmed transfer, the transfer status automatically changes from confirmed to in_transit and all confirmed line items transition to in_transit. This is a backend operation requiring no manual action. Subsequent shipments do not change the status again.
Three Quantities Per Shipment Item
Each shipment item tracks three independent quantities:
| Field | Meaning |
|---|---|
| Quantity announced | Units expected / allocated to this shipment |
| Quantity accepted | Units received and passed inspection |
| Quantity defect | Units received but failed inspection |
These three quantities drive two distinct sync phases when Shopify sync is enabled. See Shopify Sync for full details.
Receiving a Shipment
Open the shipment from the Shipments tab. For each shipment item, enter the quantity accepted and quantity defect. The two receipt quantities are independent — you can update either one separately.
When quantities are updated:
quantityPendingon the parent line item is recalculated automatically- If Shopify sync is enabled, the corresponding receipt mutations are enqueued immediately (delta-based, per change)
Partial Receipts
If only part of a shipment arrives, enter the quantities for the units that did arrive. The remaining quantity stays open. You can create additional shipments against the same transfer order until fully received. The transfer status remains in_transit until the transfer is explicitly marked complete.
Handling Discrepancies
Fewer units than announced
Update the shipment item to reflect what actually arrived. Create a new shipment for the outstanding quantity when the remainder is dispatched.
Units failing inspection
Set quantity accepted to the good units and quantity defect to the
failed units. Only accepted quantity counts toward your usable stock.
Defect quantity is tracked separately and reflected in the
quantityDefectComputed aggregate on the transfer.
Wrong product received
Do not record receipt in Synplex until the correct goods arrive. Recording incorrect stock will corrupt on-hand inventory counts.
Updating the Estimated Delivery Date
If the shipment ETA changes after the shipment has been synced to Shopify,
update the estimatedDeliveryDate on the shipment record. Synplex will
automatically enqueue a SHIPMENT_SET_TRACKING mutation to update the
ETA in Shopify — but only if:
- The shipment has a
shopifyId - Shopify sync is enabled on the parent transfer
- The parent transfer status is confirmed (not
in_transit)