What an EDI 850 is
The 850 is the X12 purchase order. X12 describes it as the transaction set for placing orders for goods and services, and says it is not used for changes or acknowledgments. In X12's supply chain flow, a change to the order travels as an 860, and the supplier's answer as an 855.
The buyer's system sends the 850 to the supplier. The supplier's translator returns a 997 to confirm that it arrived and parsed. The order then goes into the supplier's ERP as a sales order.
The 850 segment by segment
This table follows the example in the viewer above. Each buyer publishes an implementation guide that says which segments and codes it uses, such as 3M's 850 specification. Check your customer's guide for the final word.
| Segment | What it carries | In the example |
|---|---|---|
| ISA | The interchange header: sender and receiver IDs, date and time, the control number, and the delimiters | ISA*00* *00* *ZZ*FERROVALE *ZZ*QUILLFI... |
| GS | The functional group header: the group code, the version, and the group control number | GS*PO*FERROVALE*QUILLFIELD*20261005*0930*101*X*004010~ |
| ST | The start of one transaction set, with its number and control number | ST*850*0001~ |
| BEG | The order itself: purpose, order type, purchase order number, and date | BEG*00*SA*4500012345**20261005~ |
| CUR | The currency of the prices | CUR*BY*USD~ |
| REF | A reference number, named by its qualifier | REF*IA*V-20417~ |
| PER | A contact at the buyer, with phone and email | PER*BD*Dana Whitlock*TE*6145550147*EM*purchasing@ferrovale.ex... |
| ITD | Payment terms: discount percent and days, net days | ITD*01*3*2**10**30~ |
| DTM | A date, named by its qualifier, such as 002 for delivery requested | DTM*002*20261016~ |
| N1, N3, N4 | A party, its address, and its city: buyer, ship-to, vendor | N1*BY*Ferrovale Industrial Supply*92*FIS-PURCH~ and 2 more |
| PO1 | One order line: quantity, unit, unit price, and product IDs | PO1*1*12*EA*412.50**BP*FIS-71402*VP*QE-1614-8-SS~ and 3 more |
| PID | The description of the line above it | PID*F****Stainless steel wall-mount enclosure, NEMA 4X, 16 x ... and 3 more |
| CTT | The number of lines and a hash total of the quantities | CTT*4*94~ |
| SE | The end of the set: the number of segments from ST to SE, and ST's control number | SE*22*0001~ |
| GE and IEA | The ends of the group and the interchange, each with its count and control number | GE*1*101~ |
The example explained
The example is an order from Ferrovale Industrial Supply, a fictional distributor, to Quillfield Enclosures, a fictional manufacturer, for electrical enclosures and parts:
BEG*00*SA*4500012345**20261005~is an original (00) stand-alone order (SA), number 4500012345, dated October 5, 2026.DTM*002*20261016~asks for delivery by October 16, 2026, andITD*01*3*2**10**30~sets a 2% discount for payment within 10 days, net 30.- N1*ST names the ship-to distribution center, with its address in N3 and N4. The buyer's ID for it, DC-COLUMBUS, is what the supplier maps to a ship-to address.
- 4 PO1 lines order 94 units in all, worth 11,095.00 USD at the listed prices. Each line carries the buyer's part number (BP) and the vendor's (VP).
- CTT repeats the count, 4 lines, and the hash total of the quantities, 94. In Best Buy Canada's 850 guide, CTT01 is the line count and CTT02 a hash total of the quantities ordered.
SE01 says the set has 22 segments, and the viewer's Checks tab confirms that the count matches from ST to SE.
Take the orders that arrive as PDFs
ThriveAI's order desk reads purchase orders that arrive by email and matches each line to your items and that customer's prices. It drafts the ERP order for a person to approve. Derik will tell you what a four-week build would cover.
See order desk automationHow an 850 maps to a sales order in your ERP
Taking an 850 means mapping it to a sales order field by field, and handling the lines that do not map cleanly:
| Sales order field | From the 850 | What to check |
|---|---|---|
| Customer | ISA06 or GS02, the sender's ID | Each trading partner ID maps to one customer account |
| Customer PO number | BEG03 | The same number arriving twice: BEG01 07 marks a duplicate |
| Order date | BEG05 | A real date, written CCYYMMDD |
| Ship-to address | N1*ST with N3 and N4, or the ID in N104 | The ID exists in the customer's ship-to list |
| Requested date | DTM*002 | Whether the plant can meet it |
| Payment terms | ITD | The same terms as the customer account |
| Item | PO1 vendor part (VP), or buyer part (BP) through a cross-reference | A buyer part with no cross-reference stops the line |
| Quantity and unit | PO102 and PO103 | Cases against eaches: convert before you enter |
| Unit price | PO104 | The customer's price list or contract |
The guide to the sales order covers what the order needs before it reaches the floor.
Common reasons an 850 fails
- Envelope errors. A wrong SE01 count, or a control number that differs between header and trailer, gets the set rejected. Microsoft's list of 997 error codes marks both with R, for rejected. The viewer's Checks tab finds these before you send.
- An item the supplier cannot match. A buyer part number with no cross-reference to the supplier's item stops the line. Sending the vendor part number (VP) as well, as the example does, gives the supplier its own number to match.
- A price that differs from the contract. PO104 should match the price the two companies agreed, or the line waits for someone to approve the difference.
- A ship-to the supplier does not know. A new store or warehouse ID in N104 needs an address on file before the order can ship.
- An order sent twice. A resend with purpose code 00 looks like a second order. 3M's guide lists 07 for a duplicate.
Where the 850 sits in order to cash
The 850 opens the cycle. Then come the supplier's 855 acknowledgment, the 856 ship notice when the goods leave, the 810 invoice, and the 820 payment. A 997 goes back after each document. The guide to the order to cash process shows where each step tends to break.
How AI reads the purchase orders that are not EDI
An 850 arrives already structured. A customer who emails a PDF purchase order sends the same fields in a layout of its own, and someone keys them into the ERP. ThriveAI's order desk reads those orders into the same fields: PO number, ship-to, and each line's part number, quantity, price, and date. It matches each line to your items and checks the price against that customer's, then drafts the ERP order for a person to approve.