# EDI 850 Purchase Order: Complete Guide

> Learn everything about EDI 850 purchase order transactions with interactive examples from Walmart, Target, and Amazon. Understand segments, implementation, and best practices.

**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.

<EDIGuideCTA transactionType="850" />

## What is an EDI 850?

**An EDI 850 Purchase Order is a structured electronic order document defined by the [ASC X12 standards body](https://x12.org/) 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](https://x12.org/products/transaction-sets) defines the base 850 segments every implementation starts from
- [GS1 US standards](https://www.gs1us.org/standards) govern the GTIN/UPC identifiers carried in `PO108-PO109` line 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.

<EDISample id="850-walmart-basic" />

## Key segments explained

### BEG — Beginning segment

The header that opens every 850. Four elements you'll always see:

- **BEG01** — Transaction set purpose code. `00` is original, `01` is cancellation, `04` is change, `05` is replacement.
- **BEG02** — Purchase order type. `SA` is stand-alone (most common), `DS` is drop ship, `NE` is new order with no obligation, `BK` is 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 `CCYYMMDD` format.

### 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-12345` for vendor part number)
- **PO108/109** — Second identifier (e.g. `UP*012345678901` for 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 location
- `N1*BT` — Bill-to
- `N1*BY` — Buyer (purchasing org)
- `N1*SE` — Selling party

### DTM — Date/time references

- `DTM*002` — Requested delivery date
- `DTM*010` — Ship not before
- `DTM*011` — Ship not later than
- `DTM*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.

<EDISample id="850-target-dropship" />

What changes from a replenishment 850:

- `BEG02` flips to `DS` (drop ship)
- `N1*ST` carries the consumer's name and address (no `92*` location code)
- A `REF*CO` segment usually carries the consumer-facing order ID
- Quantities are typically `1` per 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.

<EDISample id="850-amazon-vendor" />

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) and `DTM*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-PO109` is 12 digits with a passing mod-10 check digit before you accept the line.
- **Vendor part resolves**: Verify `PO106-PO107` (with `VN` qualifier) maps to a live SKU in your item master, not a discontinued or unmapped record.
- **Quantity sanity**: Reject orders where `PO102` is zero or fractional for an `EA` unit of measure, since those usually indicate a partner mapping bug.
- **Achievable delivery**: Compare `DTM*002` against the SKU's lead time and your fulfillment center's cutoff times before promising.
- **Complete ship-to**: Reject the 850 (or escalate) if `N1*ST` is present but missing `N3` or `N4`, 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](/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](/guides/edi/855-purchase-order-acknowledgment)** — your response to the 850
- **[856 Ship Notice (ASN)](/guides/edi/856-ship-notice)** — advance ship notification
- **[810 Invoice](/guides/edi/810-invoice)** — request for payment
- **[997 Functional Acknowledgment](/guides/edi/997-functional-acknowledgment)** — receipt confirmation
- **[860 Purchase Order Change](/guides/edi/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](/edi-inspector) to validate your 850 documents, or [contact our team](/) for implementation support.
