Best Practices6 May 202610 min read

How to set up a goods-receiving SOP that catches errors before they cost you

A 12-step receiving SOP that catches the errors most warehouses miss — short shipments, lot mix-ups, undocumented damage. Lift it and adapt it for your warehouse.

The trailer pulls onto the yard at 06:40. Driver hands over a CMR, the goods-in lead signs it without reading the line count, and the forklift starts pulling pallets off. Forty minutes later the trailer leaves. At 14:00 a picker can't find SKU 88412 for an outbound order. By 17:00 someone has worked out that the trailer was twelve pallets short of what the ASN promised, the missing SKUs are mixed across three customers, and the carrier's POD says "received in good order, no exceptions". You now owe the customer the stock, the carrier owes you nothing, and the only photo anyone took that morning is of the breakfast van.

I've seen this exact day play out in four different warehouses. The fix isn't more software, more cameras, or another KPI on the wall. It's a receiving SOP that's written down, in order, with the record for each step defined so tightly that nothing leaves the goods-in lane without an artefact attached to it. You don't argue with a carrier without artefacts. You don't recover stock from a 3PL move without artefacts. And you don't catch a half-pallet that wasn't on the ASN without a step that explicitly looks for it.

Below is a 12-step SOP I'd hand to a new warehouse manager on day one. Each step has what you do, what you record, and the error it catches. Lift it, adapt it, run it.

The 12-step receiving SOP

  1. Pre-arrival: reconcile the ASN against the PO Before the trailer is on the yard, the goods-in lead opens the inbound shipment and cross-checks the advance shipping notice against the purchase order it claims to fulfil. Line count, SKU list, unit count, claimed pallet count, expected weight. Record the reconciliation as a asnReconciledAt timestamp on the shipment, with a note for any mismatch. The error this catches: the trailer that's been routed to the wrong DC. I once watched a load of frozen pizza turn up at an ambient site because the carrier copied the wrong consignee from a sister-shipment. The ASN said "ambient confectionery, 26 pallets". The pre-arrival check spotted it in seven minutes and the trailer went back on the road before a single pallet was unsealed.

  2. Yard check-in: seal photo and ID capture Driver arrives, parks on the inbound bay. Before the doors come open, take a photo of the trailer seal with the seal number visible, plus the driver's CMR or delivery note, plus the trailer plate. Record sealNumber, sealPhotoUrl, arrivedAt, driverId. Cross-check the seal number against the ASN's declared seal. The error caught is the seal that was broken in transit and re-applied with a different number — chain-of-custody is gone, but at least now you've recorded that fact within sixty seconds of arrival. Without this step, a carrier can credibly argue the loss happened on your floor, not in their truck. With it, the photo timestamp is your defence.

  3. Unload supervision: trailer-load photo Before any pallet moves off the deck, a goods-in operative photographs the loaded trailer from the door. Two angles ideally — straight-on and a corner shot showing pallet stacks. Record the photos against the shipment as trailerLoadPhotos. This is your damage-claim defence. The error caught: the pallet that was already crushed on arrival but doesn't get flagged until it's been moved twice on your floor. Without the on-trailer photo, the carrier will claim your forklift did it. With the photo, the crush is visibly there before anyone touched it, and the claim writes itself. Cost me about ninety seconds per inbound, saved me a five-figure claim defence in one quarter.

  4. Pallet count verification at the door As pallets come off the deck, a second person — not the forklift driver — tallies them onto a clipboard or scanner against the ASN's declared count. Record actualPalletCount and any variance immediately. Don't wait for the trailer to be empty before counting. The error caught: short shipments. The ASN promised 26 pallets, 24 come off, the carrier's PO note still says "26 dispatched". If you sign the carrier's POD before counting, you've just told the carrier you received 26. The driver will be on his next collection within the hour and the carrier's TMS will have closed the leg. Catching it at the door means the driver signs your variance note before he leaves, and that note is what your carrier's claims team will ask for in week three of the dispute.

  5. Weight check on the pallet scale For shipments where weight matters — bulk chemicals, food, anything sold by mass — each pallet goes over the floor scale before it leaves the inbound lane. Record actualWeightKg per pallet, compare against expectedWeightKg from the ASN, flag any pallet outside a 2% tolerance. The error caught: shrinkage and swap. A pallet labelled "premium gin, 504 bottles" that weighs 380 kg instead of 540 kg is missing about 30% of its contents — either pilfered at origin, swapped en route, or simply mis-built. Without the scale check, you find out about it three weeks later when the customer's own inventory count comes in short. With the scale check, the variance is on paper before the trailer leaves.

  6. Carton-level scan Pallets come off the deck, get broken to carton level (or scanned by SSCC if you're working with mixed-SKU pallets), and every carton scan logs against the shipment. Record cartonScanCount per SKU and a deviation against the ASN's expected cartonsPerSku. The error caught: SKU integrity at the carton level — the case of SKU 41250 that's been mis-labelled as SKU 41205 (a different colour variant) somewhere in the supplier's pack-out. Pallet-count won't catch it because the pallet count is right. Carton-scan catches it because the carton barcode doesn't match the SKU the line was expecting. The five-second scan saves a downstream customer return that costs you the carton plus the return shipping plus the goodwill.

  7. Damage photo and flag Any carton or pallet that shows visible damage — torn shrink, crushed corner, water staining, broken seal on a sealed case — gets photographed and flagged as damageReceived on the inbound line, with the photo URL attached. Record before the pallet moves off the inbound lane. The error caught: undocumented damage that turns into a downstream returns problem you can't claim against the carrier for. The customer rejects the carton at delivery, comes back to you, you go back to the carrier, the carrier asks for the inbound damage photo, you don't have one, and you eat the cost. The photo is forty seconds of work per damaged unit. The claim recovery is hundreds of pounds per unit.

  8. Lot and batch capture For any SKU with traceability — food, pharma, cosmetics, dangerous goods, anything regulated — the carton scan also captures the lot or batch code printed on the carton, plus the best-before or expiry date. Record lotNumber, expiryDate, and receivedDate per inbound line. The error caught: the lot mix-up. Two cartons of the same SKU arrive from the same supplier, same PO, but one is lot 24-A091 (expires in six months) and one is lot 23-D310 (expires in three weeks). Without lot capture they go to the same bin, FEFO becomes guesswork, and the older lot ages out unsold. Worse, in a recall scenario, you can't tell the FSA which customers received the affected lot. Capture is cheap. Not capturing it is what gets your operating licence reviewed.

  9. Putaway suggestion vs actual location The WMS proposes a putaway location based on velocity, SKU rules, and capacity. The forklift driver confirms or overrides. If overridden, the driver records a reason — "suggested bay blocked", "pallet too tall", "hazmat conflict". Record both suggestedLocation and actualLocation, plus the override reason. The error caught: slotting drift. Over a quarter, drivers quietly override putaway suggestions because "the suggested bay is always blocked". Six months later your velocity heatmap is meaningless because every fast-mover is in the bay nobody planned for. Reviewing override reasons weekly tells you which slotting rules need updating and which drivers need retraining, before drift becomes the new normal.

  10. Cycle-count flag on first putaway Every newly putaway pallet gets flagged for a verification cycle-count within seven days of receipt. The cycle-counter scans the location, confirms the pallet is where the WMS says it is, and the unit count matches. Record firstCountCompletedAt and any variance. The error caught: zero-trust on new inventory. About 1 in 80 putaways will have something off — a wrong location keyed in, a unit count entered as 480 when it was 408, a pallet split that didn't get logged. Catching these in the first week, while the receipt is fresh and the trailer paperwork is still on the desk, is the difference between a five-minute fix and a written-off SKU. Treat new inventory as suspect until it's been counted independently.

  11. Receipt-document upload to POI/POC archive All inbound artefacts — signed CMR, carrier POD, ASN PDF, seal photo, trailer photos, damage photos, variance notes — get uploaded to a single proof-of-inbound (POI) record against the shipment. Record documentsArchivedAt and verify nothing is missing from the required-document checklist before the shipment is closed. The error caught: the missing document you find out about six weeks later when finance needs it for a claim or audit. Paper CMRs that live on a clipboard get lost. Phone photos that live on the goods-in lead's personal device leave with them when they change job. A centralised POI archive is boring infrastructure, but it's the artefact your insurance broker, your auditor, and your claims team will all eventually ask for.

  12. Variance reconciliation within 24 hours Any inbound line with a flagged variance — count, weight, lot, damage, scan-mismatch, anything — gets reviewed and closed within 24 hours of receipt. Either the variance is resolved (recount, recovered, no-issue) or it's escalated as a claim against the supplier or carrier with the artefacts already attached. Record varianceResolvedAt, resolutionType, and claimReference if escalated. The error caught: the receiving error that ages into a write-off. Variances older than seven days have a recovery rate around 20% in my experience. Variances closed within 24 hours have a recovery rate above 80%, because the carrier hasn't yet closed the leg, the driver remembers the load, and the artefacts are fresh. Time is the variable that decides whether you recover the cost or absorb it.

The errors most teams miss

Three patterns turn up over and over when I audit a receiving function that's "broadly fine":

  • The half-pallet that wasn't on the ASN. A supplier consolidates a top-up onto an existing pallet without amending the ASN. You receive it as a normal pallet, the extra units float in unallocated, and three weeks later you've got phantom stock that nobody trusts. Step 1 (ASN reconciliation) and step 6 (carton-scan vs expected) are what catch it.
  • The lot mix-up that defeats FEFO. Two lots of the same SKU on the same inbound. Without step 8 (lot capture), they share a bin and your FEFO logic is sorting against a single age — usually the newer one, because that's what got received last. The older lot quietly ages out.
  • The seal that was broken in transit. Carrier driver re-seals at a service station after a check. Nobody flags it. By the time you find a 4-carton shortage, the seal photo (step 2) is the only thing standing between you and "received in good order". If you didn't photograph the seal on arrival, you didn't catch it.

A receiving SOP is one of those operations documents that pays back the time you spend writing it within the first month, and keeps paying back every month after. The trick is making the record for each step non-negotiable. A step without an artefact is a step you can't audit, can't claim against, and can't improve. A step with an artefact is a step that defends itself.

While we're on it: if you're counting pallets in step 4 and finding that "1 pallet" doesn't quite describe what's coming off the trailer — part-pallets, oversized pallets, mixed-SKU pallets — pallet equivalents are how you stop arguing with yourself about the count. They tie the unit to the floor footprint, not the physical pallet, and the maths gets cleaner for everything downstream.

If you'd like the receiving workflow above wired into a WMS that records each artefact natively — ASN reconciliation, seal photos, weight variance, lot capture, putaway override reasons, variance ageing — Loaditude's warehouse installation is built around exactly this SOP. The 12 steps map onto config screens, not spreadsheets.