HL segment errors: the 856's most-broken part
The HL segment flattens your shipment's tree into a list, and every HL must name its own ID (HL01), its parent's ID (HL02), and its level type (HL03). One wrong parent number and the whole tree is nonsense to the receiver.
A correct tree, annotated
HL*1**S~ ID 1, no parent, Shipment HL*2*1*O~ ID 2, parent 1, Order HL*3*2*P~ ID 3, parent 2, Pack (carton 1) HL*4*3*I~ ID 4, parent 3, Item (inside carton 1) HL*5*2*P~ ID 5, parent 2, Pack (carton 2) ← parent is the ORDER, not carton 1 HL*6*5*I~ ID 6, parent 5, Item (inside carton 2)
The classic mistakes
| Mistake | Symptom |
|---|---|
| Second carton parented to the first carton (HL*5*3*P) | Receiver sees cartons nested inside cartons |
| Non-sequential or duplicate HL01 IDs | Structural rejection; some systems silently mis-assign |
| Wrong HL03 code (e.g., T vs P for tare/pack) | Level interpreted as the wrong thing — check the retailer guide's allowed set |
| Items parented to the order when the guide requires pack-level items | Missing carton level |
| CTT/SE counts not updated after editing | Envelope-count rejection — the count segments must match reality |
Why hand-built ASNs break here
The parent-ID bookkeeping is exactly the kind of arithmetic humans fumble at 4:45pm — it's renumbering a tree by hand every time a carton is added. It's also exactly what code never gets wrong: FluentEDI's generator derives the tree from your spreadsheet's carton column and emits the numbering mechanically.
Validate any 856's structure free — paste it into the viewer (raw-segment view shows the HL chain). Full hierarchy explainer:the 856 guide.