Receiving and GRN

Check in inbound goods, match to ASN, generate Goods Receipt Note.

2 min readLast updated 13 Apr 2026

Receiving is the moment stock enters the warehouse. It produces a GRN (Goods Receipt Note) — the legal record of what was received, in what condition.

Expected vs unexpected arrivals

  • Expected — an ASN (Advance Shipment Notice) or purchase order tells you what's coming. The GRN reconciles receipts against the ASN.
  • Unexpected — walk-in / on-the-fly. GRN is created from scratch; an SKU must exist or be created before receiving.

Expected arrivals are strongly preferred — tighter variance control and auditable discrepancies.

Workflow

  1. Door assigned — receiving area selects an inbound door for the truck.
  2. Unload — cartons / pallets scanned onto a temporary receiving pallet / staging bin.
  3. Count — per SKU, expected vs actual. Discrepancies flagged.
  4. Inspect — damage / condition noted; photos attached for exceptions.
  5. Confirm GRN — GRN posted, stock created in the system (status: receiving, pending putaway).
  6. Putaway suggested — see putaway.

Handheld / mobile

Receiving runs on the handheld scanner. Scan ASN barcode → scan each carton → count → exceptions → confirm. Speed matters — the dock is a bottleneck.

Quality holds

If an inspection flag is raised, stock lands in the Quarantine zone, not general pick stock. Released by WAREHOUSE_QA role after resolution (accept, return-to-vendor, dispose).

Variance handling

Count mismatches post as variance lines on the GRN:

  • Short — ship short; may trigger a vendor claim.
  • Over — keep and bill, or return, per customer agreement.
  • Wrong SKU — refuse or remap.

Variance reports feed into vendor scorecards and customer reconciliation.

Documents

  • GRN PDF — sent to the shipper / customer as confirmation.
  • Discrepancy report — for variance > threshold.
  • Damage report — if any damaged cartons.

All filed in Documents Center.

API

Third-party systems (ERP, vendor portal) can post ASNs and receive GRN events via webhook.

Was this article helpful?