Receiving and put-away
Inventory accuracy is won or lost at the door. The inbound flow has three separated stages —
shipment (it’s coming), receipt (it’s here, counted), put-away (it’s on a shelf,
findable) — and the separation exists because each stage can disagree with the last.
1 — Track the inbound shipment
Status moves with POST /api/v1/inbound-shipments/{id}/in-transit and /{id}/arrived. The shipment
is the expectation — what the supplier says is on the truck.
2 — Receive against a receipt
The receipt records what was actually in the boxes — 480, not the 500 the PO ordered. Item by
item, condition included. Completing the receipt is what updates on-hand inventory and feeds the
three-way match on the supplier’s bill.
Never “receive to the PO” — entering ordered quantities instead of counting. It feels faster and it
poisons everything downstream: on-hand shows units that never arrived, picks come up
short, and the three-way match approves a bill for goods you
don’t have. The count at the dock is the only count that’s cheap.
Lot-tracked or serialized items get their lot/serial recorded at this step — see
traceability. Damaged goods take "condition": "damaged" and go to
quarantine or back to the vendor, not onto a
sellable shelf.
3 — Put away
Received-but-not-put-away stock is real but unfindable — it exists in totals and not on any
shelf a picker visits. The put-away task closes that gap and stamps the location
(GET /api/v1/warehouse-locations/{id}/inventory shows what’s where). Watch the age of open
put-aways; a dock full of completed receipts is inventory you own and cannot sell.
When the count is wrong
Two tools, different jobs:
Cycle counts are the habit that replaces the annual full-count nightmare: a few locations a day,
biased toward fast movers and recent discrepancies. adjust is for the moment you’re holding the
broken item — always with a reason, because a pattern of “shrinkage” adjustments at one location is
a finding, not noise.