ediverse Explore the platform

Spotlight PEPPOL BIS Billing 3.0 The EU e-invoicing mandate is here — France Sept 2026, Belgium Jan 2026, Germany 2025.

X12 850 — Purchase Order

The 850 is the reference purchase-order transaction in North American EDI: the buyer tells the supplier it intends to buy, with the items, quantities and terms agreed upstream.

Purpose

The 850 documents a single business event: a firm order placed by a buyer with a supplier. It carries the order identifier and date, the parties involved (buyer, ship-to, bill-to), the line items with quantity and agreed price, and optionally references to a blanket contract or requested delivery date. It works equally well for a one-off spot order, a call-off against a blanket contract, or planned replenishment.

The 850 does not carry post-acceptance changes — those go through the 860 (Purchase Order Change Request). It does not carry cancellations either: a cancellation is modelled as an 860 with the right function code, or as a new 850 whose BEG references the order being cancelled.

Envelope structure

Like every X12 transaction, the 850 travels inside the three standard envelope levels: ISA/IEA (interchange), GS/GE (functional group, here PO), and ST/SE (the transaction set itself). Below is a didactic two-line 850 in release 004010:

x12 example-850.x12
ISA*00*          *00*          *ZZ*ACMERETAIL    *ZZ*ACMEVENDOR    *260513*1430*U*00401*000000123*0*P*>~
GS*PO*ACMERETAIL*ACMEVENDOR*20260513*1430*1*X*004010~
ST*850*0001~
BEG*00*SA*PO78901**20260513~
REF*DP*0042~
DTM*002*20260520~
N1*BY*ACME RETAIL CO*92*0001~
N1*ST*ACME WAREHOUSE 42*92*0042~
PO1*1*2*EA*9.99**UP*012345678905~
PO1*2*5*EA*19.50**UP*012345678912~
CTT*2~
SE*10*0001~
GE*1*1~
IEA*1*000000123~

The BEG opens the body: order type, function code (00 = Original), order identifier, and date. The N1 segments introduce the parties by role (BY = Buyer, ST = Ship To, BT = Bill To…). Each PO1 represents one line item. The CTT acts as an arithmetic control on the detail. The SE counts every segment of the transaction set (ST and SE trailer included).

Common segments

The segment groups you will encounter most often in a real-world 850:

  • HeaderST, BEG (Beginning Segment), CUR (currency), REF (references — contract number, internal order number), FOB (Free On Board), DTM (business dates).
  • Parties — repeated N1 loop with N3 (address), N4 (city / state / ZIP), PER (contacts).
  • LinesPO1 loop with PID (description), SAC (line allowance/charge), TXI (tax information), DTM (line-specific dates), SCH (schedule).
  • SummaryCTT (Control Total) for line-count consistency, AMT (totals when relevant), then SE closing the transaction.

The exact qualifier set allowed for each element is documented in the Implementation Guide (TR3) for the chosen release; ediverse.io does not redistribute it (see the X12 page for the copyright reminder).

When you'll see it

  • Retail / mass merchants — the 850 is the daily instrument of Walmart, Target, Costco and Lowe's with their suppliers. Vendor Compliance manuals typically pin the release at 4010 or 5010.
  • Manufacturing / automotive — used for spot orders and for call-offs against blanket orders. North American automotive often pairs the 850 with the 862 (Shipping Schedule) for JIT.
  • US federal government — GSA and DoD accept the 850 for catalogue purchases.
  • B2B distribution — wholesalers (Grainger, McKesson) and B2B marketplaces exchange 850 and 855 for the order then acknowledgment.

Documentation

The code 850 and the name Purchase Order are public and listed on x12.org/products/transaction-sets. The detailed content (loops, qualifiers, code lists per element, full loop structure) is the property of ASC X12 and DISA, distributed through the paid Implementation Guides (TR3) per release. ediverse.io only covers concepts, the public envelope and didactic examples; for segment-by-segment implementation refer to your licensed TR3.