Advanced Shipping Notice (ASN): A Practical Guide to Faster, Cleaner Receiving

An advanced shipping notice (ASN) is a message your supplier sends before a shipment arrives, listing exactly what's on the truck, how it's packed, and when it should hit your dock. Get it right and your receiving team knows what's coming, scans it in minutes, and flags shortages before the driver leaves. Get it wrong, or skip it entirely, and you're back to counting cartons by hand and arguing over invoices a week later.
This guide covers what an ASN actually contains, how the EDI 856 standard structures it, a worked example of receiving with and without one, and how to start using ASNs without buying a six-figure system.
What an advanced shipping notice (ASN) actually contains
An ASN is not a packing slip and it's not an invoice. It's a structured, machine-readable document sent ahead of the goods. A complete one answers four questions before the truck shows up:
- What is shipping. Line items by SKU, quantity, lot or batch, and often serial numbers.
- How it's packed. The carton and pallet hierarchy, with an SSCC-18 license plate barcode on each shipping unit so you can scan instead of count.
- When and how it's arriving. Carrier, tracking or PRO number, ship date, and expected delivery window.
- What it references. The purchase order number, so the receipt reconciles against what you actually ordered.
That last point is the whole game. An ASN links a physical pallet to a specific PO line, which means receiving becomes a verification task ("did I get what the ASN promised?") instead of a discovery task ("what is all this?").
The EDI 856 hierarchy, in plain terms
Most ASNs move as an EDI 856 transaction set. The 856 is built on nested Hierarchical Levels (HL loops), and the structure is the part people find confusing, so here it is stripped down:
Shipment -> the whole truckload, carrier, ship date, delivery date
Order -> one PO, bill-to and ship-to
Pack -> a pallet or carton, tagged with an SSCC-18 barcode
Item-> SKU, quantity, lot, serial
A single 856 can carry multiple orders, each order multiple packs, each pack multiple items. Your receiving system reads that tree, and when a worker scans the SSCC label on a pallet, the system already knows which PO it belongs to and every SKU inside it. No manual keying, no guessing.
You don't have to run classic EDI to get the same benefit. Plenty of modern setups exchange the identical hierarchy as JSON or XML over an API. The data model is what matters, not the transport.
Worked example: receiving with and without an ASN
Say a supplier sends you a 20-pallet inbound, 40 cartons per pallet, mixed SKUs.
Blind receiving (no ASN). A worker opens each carton, identifies the SKU, counts units, and keys the result against an open PO they had to look up. Call it 3 minutes per carton across 800 cartons. That's about 40 labor hours, and errors compound because every count is manual.
ASN receiving. The ASN arrived overnight. Each pallet carries an SSCC label. The worker scans the pallet label, the system expands the expected contents, and they confirm by exception, only stopping when a scan doesn't match. Realistic pace is closer to 30 seconds per pallet plus spot checks, well under 5 labor hours for the same truck.
Here's the rough formula for the labor you save per inbound:
Savings (hrs) = (Units_or_cartons x Manual_time) - (Pack_count x Scan_time)
= (800 x 3 min) - (20 x 30 sec)
= 2400 min - 10 min
≈ 39.8 labor hours saved on one truck
Even after you add spot-check counts and discrepancy handling, the gap is enormous, and it repeats on every inbound.
ASN receiving vs blind receiving
| Factor | Blind receiving | ASN receiving |
|---|---|---|
| Speed | Count every carton | Scan the pack, confirm by exception |
| Error rate | High, every count manual | Low, system pre-loads expected qty |
| Shortage detection | Days later, at invoice | At the dock, before the driver leaves |
| Dock scheduling | Reactive | Planned from delivery windows |
| Cross-docking | Hard | Practical, contents known in advance |
The dock-scheduling and cross-docking rows are where mid-size operations quietly win. When you know a truck's contents and arrival window a day ahead, you can staff the dock correctly and route fast-moving items straight through to outbound instead of putting them away and picking them again.
Why retailers fine you for bad ASNs
If you supply large retailers, ASNs stop being optional. Programs like Walmart's On-Time In-Full (OTIF) and similar vendor compliance rules charge back suppliers for late, missing, or inaccurate ASNs. Penalties commonly run a few percent of invoice value per violation, and they add up fast across weekly shipments.
The exposure math is simple:
Annual chargeback risk = Shipments/yr x Noncompliance_rate x Avg_penalty
Move 500 shipments a year, run a 4% error rate at a $200 average penalty, and you're bleeding roughly $4,000 in avoidable fines. Cutting the error rate is almost always cheaper than paying the fines, and an accurate ASN process is the lever.
How to start using ASNs
You don't need to boil the ocean. A workable rollout looks like this:
- Pick your format. EDI 856 if a trading partner mandates it, otherwise a JSON or XML feed over an API you already control.
- Standardize the hierarchy. Agree on Shipment / Order / Pack / Item with your top suppliers, and require an SSCC or equivalent license plate on every pack.
- Match on the PO. Every ASN must reference a real purchase order line so receipts reconcile automatically.
- Receive by scan and exception. Load the ASN, scan pack labels, and surface only mismatches for a human.
- Close the loop. Auto-post the receipt, flag shortages and overages at the dock, and feed the result back to procurement.
If you want the deeper mechanics of putaway, lot tracking, and multi-location stock that sit downstream of receiving, the documentation walks through the full inbound flow.
Where Inventoros fits
Inventoros handles ASN-style inbound out of the box. You can push a shipment notice through the REST and GraphQL API, receive against the referenced PO by scanning packs, and let the system reconcile expected versus actual across multi-location stock. It's free, open source (MIT), and self-hosted, so the receiving data and supplier feeds stay on infrastructure you own, whether that's cPanel, a VPS, or Docker. No per-seat pricing, no vendor lock-in on your inbound pipeline.
FAQ
What's the difference between an ASN and a packing slip? A packing slip is a paper document that travels inside or on the box, read by a human after the shipment arrives. An advanced shipping notice is a structured electronic message sent before arrival, so your system can plan the dock, pre-load expected quantities, and receive by scanning. Same intent, very different timing and machine-readability.
Is an ASN the same as EDI 856? EDI 856 is the most common standard format for an ASN, but "ASN" is the business concept and "856" is one way to transmit it. You can exchange the identical Shipment / Order / Pack / Item hierarchy as JSON or XML over a modern API and it's still an ASN. Many suppliers now support both.
What is an SSCC on an ASN? The SSCC-18 (Serial Shipping Container Code) is an 18-digit license plate barcode applied to each pallet or carton. The ASN maps each SSCC to its contents, so scanning one label tells your system every SKU, quantity, and lot inside that pack. It's what makes scan-based receiving possible instead of counting.
Do small warehouses need ASNs? If you receive more than a handful of multi-SKU inbounds a week, yes. The payoff isn't only large-retailer compliance, it's the labor and error reduction shown above. A small operation with two receivers can reclaim most of a workday per busy inbound, and catch shortages at the dock instead of at invoice reconciliation.