EDI 856: the advance ship notice that gets charged back

An EDI 856 is an X12 advance ship notice (ASN): a document sent ahead of a delivery that tells the receiver exactly what is on the truck, in what containers, in what hierarchy, under what labels. It is the retail supply chain's most enforced document, because it is the one the receiver can check physically, at the dock, the moment the trailer opens — and the one with a chargeback schedule attached when the check fails.

Why the ASN is the document that generates chargebacks

Three properties make the 856 unique among EDI documents.

It is verifiable. An invoice can be disputed over weeks. An ASN is compared against a pallet in minutes: the receiving dock scans the label, matches it against the ASN on file, and any gap is an exception before the trailer is unloaded. ASN compliance is therefore measured in scan success rates, not in arguments.

It is time-bound. Retailers require the ASN to arrive before the shipment does — typically ahead of the truck or within a short window after departure. A late ASN means blind receiving: the DC cannot plan doors, labor or putaway, and the sender owns that disruption.

It is priced. Large retail chains issue compliance chargebacks at published rates against cost of goods, regularly. The chargeback schedule is not negotiable leverage; it is a fee list for failure modes. Late ASN, unreadable label, quantity mismatch, wrong hierarchy — each has a number on it. This is why the 856 is the document that generates chargebacks while every other document generates disputes.

The HL hierarchy, explained as it is actually built

The 856's defining structure is the HL loop: a set of HL segments that describe the shipment as a tree. Each HL carries an ID, an optional parent ID, a level code, and a flag saying whether it has children. Four levels, read top to bottom.

Shipment level (HL code S)

The root of the tree: the physical movement itself. The segments here describe the load — TD1 for container count and type, TD5 for carrier and method, REF for the bill of lading, DTM for the ship date, FOB for freight terms. One S level per 856; it answers "what is arriving and when."

Order level (HL code O)

Under the shipment: which purchase orders this load satisfies. The PRF segment carries the PO number, joining the 856 back to the original 850. One truck can carry several orders, so an 856 can hold multiple O loops. This level is where partial shipments become visible: the order says 1,000, the O loop says 600 shipped.

Pack level (HL code P, with Tare level T for pallets)

Under the order: the handling units — cartons, totes. The MAN segment carries the SSCC-18 container number, the same number printed as the GS1-128 barcode on the physical unit. The pack level is the join between the document and the forklift. Some retailers require it to mirror the physical structure exactly; some accept an ASN without a pack level at all; the requirement is per retailer, and getting it wrong in either direction is a failure.

Item level (HL code I)

Under the pack: the items themselves. LIN carries the product ID — typically the UPC/GTIN with a qualifier — and SN1 carries the quantity shipped in the ordering unit of measure. Where the chain has an inner-pack structure, PO4 carries that geometry: how many eaches make an inner, how many inners make a case. The SN1/PO4 relationship is what lets the receiver convert a scan of eaches into cases and reconcile it against the order — the quantity check only works if both segments agree about units.

Why your ASN failed at the dock

The failure catalog below comes from production work with a non-asset 3PL with major US retail accounts. Every one of these failures passes the translator. All of them fail at the dock.

1. A hierarchy that validates but does not match the pallet. The 856 says ten cases on one pallet; the pallet arrives with nine and a mixed carton nobody told the document about. The tree is syntactically fine. The receiving scan finds the gap in ninety seconds. This is the most common class of failure, because the ASN is generated from the order while the pallet is built from reality, and nothing reconciles the two between pick confirm and transmission.

2. The label does not match the ASN. The SSCC-18 printed on the GS1-128 label must equal the MAN value in the pack level. When label generation and ASN generation are two systems — in the C05 engagement the label generator was a disconnected desktop tool and the carton-pallet structure was typed into EDI by hand — they drift. The scan fails, the carton becomes a manual problem, and the sender pays for the privilege. The fix we built tied them together: confirming a carton at pick simultaneously generates the label and the 856 carton record, so physical and transmitted data match by construction rather than by diligence.

3. The ASN arrived after the truck. Timing windows are enforced, and a late ASN turns a scheduled receipt into blind receiving. Causes are rarely dramatic: a batch job that runs after cutoff, a transmission retry that nobody watches, a 997 nobody reads. The dock does not care about the cause; the chargeback schedule does not either.

4. Quantity at the wrong level. The item-level SN1 total does not reconcile to the pack level above it, or the quantity is expressed in the wrong unit — eaches where the retailer expects cases. These are arithmetic errors that no syntax check catches, and they show up as over/short receipts that the sender must explain with the freight already in the building.

5. A pack level that exists on paper. The P loop says three pallets with fixed carton assignments; the warehouse re-palletized at staging because a carton was damaged. The document describes a shipment that never left the building. The cure is the same as failure 2: the ASN must be generated from the final physical state, not from an earlier plan.

The 856 and the UCC-128 label

The join nobody documents: the 856 and the GS1-128 carton label (the retail standard historically called UCC-128) are one compliance unit, but they are usually produced by two different systems.

The label carries the SSCC-18 in barcode form, plus human-readable content — ship-to, carton contents, PO — laid out per the retailer's spec. The ASN carries the same SSCC-18 in the MAN segment and the same contents in the HL tree. The receiver's first scan asserts their equality. When the two pipelines are separate — an EDI system building the ASN, a desktop tool printing labels — every repack, every reprint and every late order change is a chance for them to disagree.

Practically, this means the 856 project is also a labeling project. If your ASN accuracy is poor, look at how the label is produced before you look at the map. Connecting label generation to warehouse pick confirmation was the core of the fix that took the discrepancy from about 4% to 0.3%. (case C05)

Retailer differences

The same 856 is not the same 856 at two retailers. The standard defines the segments; the retailer's guide defines the compliance regime:

  • Hierarchy requirements — whether the pack level is mandatory, forbidden, or must mirror the physical build exactly.
  • Timing windows — how far ahead of the truck the ASN must arrive, and what "late" costs.
  • Label format — SSCC-18 structure and the human-readable layout on the GS1-128 label.
  • Chargeback schedule — published rates per failure mode, assessed against cost of goods.
  • Version and connectivity — 4010 vs 5010, AS2 vs VAN, per-partner test sequences.

This is why a "standard 856 map" is a myth at retail scale. The engagement behind these numbers shipped prebuilt transaction maps for large US retail-chain profiles — covering the 850, 856, 810, 940 and 945 — configured per partner without code changes. Where we can verify a retailer's published requirements, we will publish them on a page of their own.

An annotated 856

One shipment, one order, one carton, one item. The HL loop is the point: note the parent IDs building the tree.

ISA*00*          *00*          *ZZ*THREEPLISA   *ZZ*RETAILERISA    *260814*1430*U*00401*000000124*0*P*>~
GS*SH*THREEPL*RETAILER*20260814*1430*124*X*004010~
ST*856*0001~
BSN*00*00001234*20260814*1430~
HL*1**S~
TD1*CTN*10~
TD5**2*ABCD*M~
REF*BM*BOL-77890~
DTM*011*20260814~
FOB*PP~
HL*2*1*O*1~
PRF*PO-88231~
HL*3*2*P*1~
MAN*GM*000614141123456789~
HL*4*3*I*0~
LIN**UK*00012345678905~
SN1**10*CA~
CTT*4~
SE*17*0001~
GE*1*124~
IEA*1*000000124~
  • BSN — original (00) shipment notice, shipment ID 00001234, dated and timed. This ID is what the receiver keys against.
  • HL 1 (S) — shipment level: 10 cartons (TD1), carrier SCAC ABCD by motor (TD5), bill of lading BOL-77890 (REFBM), shipped 2026-08-14 (DTM011), freight prepaid (FOB*PP).
  • HL 2 (O) — order level under shipment: fulfills PO-88231 (PRF), the same PO the 850 and the 940 carried upstream.
  • HL 3 (P) — pack level under order: SSCC-18 000614141123456789 in MAN with qualifier GM — the number on the carton's GS1-128 label. A pallet would add a Tare (T) level above it.
  • HL 4 (I) — item level, leaf node: GTIN-14 (qualifier UK) 00012345678905 (LIN), 10 cases shipped (SN1).
  • CTT — 4 HL segments in the set. SE counts 17 segments including ST and SE itself.

What ASN accuracy is worth

The arithmetic is direct. Retail chargebacks are assessed at published rates against cost of goods.

Trading-partner onboarding in that program moved from 8–10 weeks to 12 days. The 810 invoice at the end of this chain only pays cleanly when the 856 at the front of it was true.

If your ASNs are generating chargebacks, the two-week diagnostic finds where the document and the pallet diverge — fixed price, $7,500, findings yours either way.

Written by the CrunchCode engineering team — the people who ran these integrations in production.

Next door

01EDI 810: the invoice that only pays if the chain was true
What the EDI 810 invoice carries, why invoices get disputed or paid short, and how leakage is born when the 810 never matched the 850.
02EDI 850: the purchase order that decides everything downstream
What the EDI 850 purchase order carries, the five fields that decide whether every downstream document works, and why 850s get rejected.
03EDI 940: warehouse shipping order, segment by segment
What the EDI 940 warehouse shipping order carries, segment by segment, why yours gets rejected, and what changes between 4010 and 5010.
04EDI 945: the confirmation nobody reconciles
What the EDI 945 warehouse shipping advice confirms, why it disagrees with what actually shipped, and what an unreconciled 945 costs.
05EDI 997: the document everyone automates and nobody reads
How the EDI 997 functional acknowledgment works, what its accept and reject codes mean, and what it costs when nobody reads the rejections.
06EDI integration with a custom or legacy ERP
Your ERP has no EDI connector. Here is what the integration actually involves, what breaks after go-live, and when to buy one instead.