The EDI 850 is the X12 transaction set for electronic purchase orders. It is the way retailers and distributors tell their suppliers what to ship, and it is the most-used document in B2B EDI. Almost every order cycle in retail, grocery, and distribution begins with an inbound 850.
This guide walks through the structure of an 850, shows three real examples (Walmart, Target drop-ship, Amazon Vendor Central) with our interactive renderer, and covers the partner-specific gotchas that trip up most implementations.
What is an EDI 850?
An EDI 850 Purchase Order is a structured electronic order document defined by the ASC X12 standards body that buyers send to suppliers to initiate a B2B order. It carries everything a vendor needs to fulfill (PO number, ship-to, line items, prices, delivery dates) in a fixed format that supplier ERPs can ingest without human re-keying.
The base 850 structure is governed by the X12 standards. Trading partners extend it with their own conventions:
- The X12.org Transaction Sets reference defines the base 850 segments every implementation starts from
- GS1 US standards govern the GTIN/UPC identifiers carried in
PO108-PO109line item segments - Each large retailer (Walmart, Target, Amazon Vendor Central, Kroger, Costco) publishes its own EDI implementation guide describing required references, qualifiers, and timing rules that suppliers must follow to avoid chargebacks
What's in an 850
An 850 contains everything a vendor needs to fulfill an order:
| Field | Where it lives | Example |
|---|---|---|
| Order number | BEG03 | 4500123456 |
| Order date | BEG05 | 20231120 (CCYYMMDD) |
| Ship-to address | N1*ST + N3 + N4 | Walmart Store #001, Bentonville AR |
| Bill-to address | N1*BT + N3 + N4 | Walmart Inc, corporate |
| Line items | PO1 + PID per line | Qty, UOM, unit price, vendor SKU, UPC |
| Delivery date | DTM*002 | 20231123 |
| Ship windows | DTM*010 / DTM*011 | "Not before / not later than" |
| Special terms | REF segments | Department, allowance, routing codes |
Interactive example: Walmart 850
This is a real Walmart purchase order shape. Use the Plain English tab below for a human-readable translation, the Split View to see raw and parsed side-by-side, or click any segment to break it down element-by-element.
Walmart 850 Purchase Order (Basic)
A basic Walmart purchase order with multiple line items
Raw EDI (X12)
Human-Readable
Interchange
Functional Group
Transaction 850
Purchase OrderOrder Information
References
Line Items (3)
Key segments explained
BEG — Beginning segment
The header that opens every 850. Four elements you'll always see:
- BEG01 — Transaction set purpose code.
00is original,01is cancellation,04is change,05is replacement. - BEG02 — Purchase order type.
SAis stand-alone (most common),DSis drop ship,NEis new order with no obligation,BKis blanket. - BEG03 — Purchase order number. The buyer's PO # — what you'll reference back in your 855 acknowledgment and 810 invoice.
- BEG05 — Order date in
CCYYMMDDformat.
PO1 — Line item baseline
One PO1 segment per ordered line. The shape is:
PO1*<line#>*<qty>*<UOM>*<unit price>*<basis>*<ID qual>*<ID>*<ID qual>*<ID>...
- PO101 — Line number (
001,002, ...) - PO102 — Quantity ordered
- PO103 — Unit of measure (
EA,CA,PL, etc.) - PO104 — Unit price
- PO106/107 — First product identifier qualifier + value (e.g.
VN*PROD-12345for vendor part number) - PO108/109 — Second identifier (e.g.
UP*012345678901for UPC)
A PID segment usually follows each PO1 to carry the free-text product description.
N1 — Name segments
Identify the parties involved. The qualifier in N101 tells you which party:
N1*ST— Ship-to locationN1*BT— Bill-toN1*BY— Buyer (purchasing org)N1*SE— Selling party
DTM — Date/time references
DTM*002— Requested delivery dateDTM*010— Ship not beforeDTM*011— Ship not later thanDTM*037— Ship date
Three real-world variants
The 850 is a flexible spec, and every retailer uses it slightly differently. Here are the three patterns that cover most of the volume in B2B retail.
1. Retail replenishment (Walmart, Target, Kroger)
Standard store replenishment orders. Ship to a warehouse or store, in case-pack quantities, to a routing-guide-defined window. The Walmart example above is the canonical shape.
Common requirements:
- Strict routing guides (you ship to the right DC at the right time or you eat chargebacks)
- Department-level reference numbers in
REF*DP - UPC validation — wrong check digit means rejection
2. Drop-ship orders (Target, Amazon, Wayfair)
The retailer takes the consumer's order, then sends an 850 to you to ship directly to the end consumer. The N1*ST becomes a residential address.
Target 850 Purchase Order (Drop Ship)
Target drop ship order with ship-to consumer address
Raw EDI (X12)
Human-Readable
Interchange
Functional Group
Transaction 850
Purchase OrderOrder Information
References
Line Items (2)
What changes from a replenishment 850:
BEG02flips toDS(drop ship)N1*STcarries the consumer's name and address (no92*location code)- A
REF*COsegment usually carries the consumer-facing order ID - Quantities are typically
1per line (consumer single-purchase units)
3. Amazon Vendor Central
Amazon's 850 follows the same X12 spec but with Amazon-specific quirks: ASIN-based identifiers, fulfillment-center routing codes, and strict delivery windows.
Amazon 850 Purchase Order (Vendor Central)
Amazon Vendor Central purchase order for FC replenishment
Raw EDI (X12)
Human-Readable
Interchange
Functional Group
Transaction 850
Purchase OrderOrder Information
References
Line Items (3)
Amazon-specific notes:
- Ship-to is the FC code (e.g.
ONT8,LAX9) — you must ship to the right FC - Product identifier is usually
UK*<ASIN>(UK = GTIN-style qualifier Amazon uses) DTM*010(ship not before) andDTM*011(ship not later than) are non-negotiable — late deliveries trigger chargebacks- Large quantities — case-pack and pallet-quantity awareness matters
Implementation best practices
Validate before you acknowledge
Don't send a clean 855 ack until you've actually validated the 850. Check:
- UPC/GTIN check: Confirm the value in
PO108-PO109is 12 digits with a passing mod-10 check digit before you accept the line. - Vendor part resolves: Verify
PO106-PO107(withVNqualifier) maps to a live SKU in your item master, not a discontinued or unmapped record. - Quantity sanity: Reject orders where
PO102is zero or fractional for anEAunit of measure, since those usually indicate a partner mapping bug. - Achievable delivery: Compare
DTM*002against the SKU's lead time and your fulfillment center's cutoff times before promising. - Complete ship-to: Reject the 850 (or escalate) if
N1*STis present but missingN3orN4, since the order is not actionable without a full address.
Respond on time
After receiving an 850, you typically owe the trading partner three responses:
| Response | When | Purpose |
|---|---|---|
997 Functional Ack | Within 24 hours | "I received the 850 and it parsed" |
855 PO Acknowledgment | Within 48 hours | "I will fulfill (or partially fulfill) this order" |
856 ASN | At time of shipment | "Here's what's on the truck" |
810 Invoice | After delivery | "Pay me this amount" |
Missing a 997 is the fastest way to get flagged as non-compliant.
Common errors to avoid
Missing required segments
Bad: BEG*00*SA*PO123**20231120~PO1*001*100*EA*15.99~CTT*1~SE*4*0001~
Good: BEG*00*SA*PO123**20231120~N1*ST*BUYER...~N3*ADDR~N4*CITY*ST*ZIP~PO1...~CTT*1~SE*7*0001~
You need at minimum a ship-to (N1*ST + N3 + N4) for the order to be actionable.
Invalid UPC format
Bad: PO1*001*100*EA*15.99*PE*VN*PROD-1*UP*12345
Good: PO1*001*100*EA*15.99*PE*VN*PROD-1*UP*012345678901
UPCs are 12 digits with a mod-10 check digit. Anything shorter is malformed.
Date format errors
Bad: DTM*002*11/20/2023
Good: DTM*002*20231120
X12 dates are always CCYYMMDD — no separators, no two-digit years.
Test your own 850s
Drop your own EDI 850 file into our free EDI Inspector to:
- Validate segment structure against the X12 spec
- Check for missing required elements
- Translate to plain English for non-EDI stakeholders
- Export to JSON or CSV for downstream processing
- Compare against trading partner specs
Related transaction sets
- 855 Purchase Order Acknowledgment — your response to the 850
- 856 Ship Notice (ASN) — advance ship notification
- 810 Invoice — request for payment
- 997 Functional Acknowledgment — receipt confirmation
- 860 Purchase Order Change — when buyers modify an existing 850
Frequently Asked Questions
What is the difference between an EDI 850 and an EDI 875?
The 850 is the general-purpose X12 purchase order used across retail, distribution, and manufacturing. The 875 is the grocery-specific PO format used by some grocery chains, with extensions for case and pallet quantities, voluntary product groups, and grocery item dimensions. If you're trading with a grocery retailer, check their implementation guide — most have moved to the 850 with grocery extensions, but a few still require the 875.
Does an 850 have to be acknowledged?
Most trading partners require both a 997 Functional Acknowledgment (proof you received the document syntactically) and an 855 Purchase Order Acknowledgment (proof you accept or reject the order at a business level). The 997 is usually due within minutes; the 855 is typically due within 24 hours. Skipping either is one of the most common chargeback triggers.
What's the difference between BEG02 = "SA" and BEG02 = "DS"?
BEG02 is the purchase order type. "SA" means stand-alone (a normal stocking order), "DS" means drop-ship (the buyer wants the goods shipped directly to a consumer or third party), and "NE" means new order (often used by Amazon Vendor Central). The type changes how you fulfill it — drop-ship orders carry consumer addresses in N1*ST, and replenishment orders carry store or DC codes.
How do I match line items between an 850 and an 856 ASN?
Use the vendor part number (PO106-PO107 on the 850 maps to LIN02-LIN03 on the ASN with VN qualifier) plus the UPC (PO108-PO109 maps to LIN02-LIN03 with UP qualifier). Buyer ERPs match on both. If your part numbers drift between the 850 and 856, expect rejections.
Why does an 850 sometimes have multiple N1*ST segments?
Because the order is split across multiple ship-to locations. Walmart and Target chain orders frequently carry one PO with line items destined for different stores. The HL hierarchy or repeated N1*ST blocks tell you which lines go where. If you flatten this away during import, you lose the routing data and goods will end up in the wrong places.
Need help?
Try our free EDI inspector to validate your 850 documents, or contact our team for implementation support.