Of the several hundred X12 transaction sets, one dominates North American retail: the EDI 850, the Purchase Order. When Walmart, Target, Costco, Amazon Vendor or any large retailer wants to buy something from a supplier, it sends an 850. If you sell into any of them, you receive 850s. If you handle any of that supplier integration work, you read 850s. This is a plain-language guide to what one looks like and how it hangs together.
The anatomy of an 850
An 850 is a text document made of segments. Each segment starts with a two- or three-letter tag, followed by elements separated by a delimiter (usually '*'), and terminated by another delimiter (usually '~' or newline). Human-readable is a stretch, but readable-enough with practice.
The minimum viable 850 has roughly a dozen segment types. The full spec allows for a hundred or so. Most retailers use fifteen to twenty-five.
The segments you'll always see
**ISA** — Interchange Control Header. Envelope-level metadata: sender/receiver IDs, date, control number.
**GS** — Functional Group Header. Groups related transactions.
**ST** — Transaction Set Header. Marks the start of one 850.
**BEG** — Beginning of Purchase Order. Order number, order type, order date. This is the marquee segment — it says 'this is order 12345, dated 2026-02-15, of type New Order'.
**REF** — Reference Identification. Any additional reference numbers (contract number, blanket PO reference, department code).
**DTM** — Date/Time Reference. Required-by-date, cancel-after-date, ship-window dates.
**N1 / N3 / N4** — Name / Address / Geographic Location. Who to ship to, bill to, buyer address.
**PO1** — Baseline Item Data. The actual line items. There is one PO1 loop per SKU, and this is where the money lives.
**PID** — Product/Item Description. Free-text description of each item.
**CTT** — Transaction Totals. Line-count totals, hash totals — used to detect truncation.
**SE / GE / IEA** — Closing segments that mirror the openers.
The three things that get 850s rejected
**Envelope errors.** The ISA has strict field-position and padding rules. Get one character wrong and the receiver rejects the whole file with a TA1 (Interchange Acknowledgment) before it ever gets parsed.
**Missing REF numbers.** Every retailer has its own set of required REF qualifiers (Walmart wants a Department Number in a specific REF*DP; Target wants a Vendor Number in a REF*VN). Missing one gets you a 997/999 rejection at the transaction level.
**Wrong date formats or wrong DTM qualifiers.** Ship-not-before, ship-not-after and required-by-date are all separate DTM segments with different qualifiers. Confusing them causes downstream fulfilment chaos even when the document technically parses.
A minimal 850 example
Here's what a stripped-down 850 looks like, with segment terminators shown as newlines for readability:
``` ISA*00* *00* *ZZ*BUYERCORP *ZZ*SUPPLIER01 *260215*1000*U*00401*000000001*0*P*> GS*PO*BUYERCORP*SUPPLIER01*20260215*1000*1*X*004010 ST*850*0001 BEG*00*NE*PO-2026-001**20260215 REF*DP*065 DTM*002*20260301 N1*ST*STORE 4192 DC N3*100 DISTRIBUTION DR N4*BENTONVILLE*AR*72712 PO1*1*100*EA*15.99**BP*ABC-123 PID*F****WIDGET, BLUE, LARGE CTT*1 SE*10*0001 GE*1*1 IEA*1*000000001 ```
That's a real 850, however stripped down. It says: BUYERCORP is ordering 100 units of SKU ABC-123 (a large blue widget), at $15.99 each, from SUPPLIER01, delivered to Store 4192 DC in Bentonville, AR, by 2026-03-01, under Department 065.
The ecosystem around the 850
An 850 rarely arrives alone. It's usually followed by an 855 (PO Acknowledgment) from the supplier, then an 856 (Advance Ship Notice) when the goods leave the warehouse, then an 810 (Invoice) after the goods are received. Reconciliation between these four documents is where most of a supplier's back-office work actually happens.
The takeaway
The 850 is boring, entrenched, and quietly runs a large chunk of the global retail economy. If you're building software that touches retail supply chain in North America, you will encounter 850s. Learn the twenty core segments, respect the retailer-specific quirks, and invest in the tooling around it — mapping, validation, observability, rejection triage. The document itself isn't going anywhere, but the layer around it is where all the current opportunity lies.