EDI X12 850 Purchase Order Skeleton Generator
The EDI 850 is the X12 transaction set for a purchase order. This generator produces a compact single-line example you can use to test a connection with a supplier or to learn how the segments fit together.
Fill in
X12 850 (version 005010)
ISA*00* *00* *ZZ*ACMEBUYER *ZZ*SUPPLIERONE *261020*0930*U*00501*000000101*0*T*>~ GS*PO*ACMEBUYER*SUPPLIERONE*20261020*0930*101*X*005010~ ST*850*0001~ BEG*00*SA*PO-450021**20261020~ CUR*BY*USD~ DTM*002*20261120~ PO1*1*500*EA*4.15**BP*PN-48213*VP*V-77120~ PID*F****Machined housing, anodized~ SCH*500*EA***002*20261120~ CTT*1*500~ SE*9*0001~ GE*1*101~ IEA*1*000000101~
This is a test skeleton for one line item, not a full trading partner implementation. Segment order, required elements and qualifiers vary by trading partner implementation guide, so confirm the guide before sending. The ISA fields are fixed width: sender and receiver IDs must be exactly 15 characters, and the control number 9 digits. Never send test data with a production usage indicator.
EDI mapping review
Optional: send us your 850 mapping and we will review it against common rejection causes.
Optional. The tool and every export work without this. No spam.
How to use the generator
Enter the sender and receiver IDs exactly as agreed with your trading partner, padded to 15 characters, then set the date, control number and PO number. Fill in one line item with quantity, unit of measure, price and part numbers. Copy the output into a text file and run it through your EDI translator or VAN test tool. Keep the usage indicator on T for test until both sides have validated the message, then switch to P for production.
- Pad ISA sender and receiver to 15 characters
- Keep usage indicator T while testing
- Match qualifiers to the partner implementation guide
- Increment control numbers per interchange
Segment by segment
ISA and IEA wrap the interchange and GS and GE wrap the functional group. ST and SE wrap the 850 transaction set, and SE01 holds the number of segments from ST to SE inclusive, which is 9 in this skeleton. BEG gives the purpose code, the type of order (SA is stand-alone order), the PO number and the date. PO1 holds the line number, quantity, unit of measure, price and part number qualifiers such as BP for buyer part and VP for vendor part. SCH gives a delivery schedule and CTT counts line items.
Adding more lines
To add lines, repeat the PO1, PID and SCH loop for each item, increment the line number in PO1, and update CTT01 with the number of lines. Then recount the segments between ST and SE and put the new total in SE01. A wrong SE01 count is the most common reason a translator rejects a hand-built file. Add N1 loops for ship-to and bill-to parties if your partner requires them, because this skeleton leaves them out.
Common mistakes
Frequent errors include wrong ISA padding, a segment count in SE that does not match, a date format mismatch between YYMMDD in ISA and CCYYMMDD in GS and BEG, reuse of an interchange control number, and sending a test interchange with a production flag. Another trap is assuming every partner accepts the same qualifiers. Always request the partner's 850 guide and validate against it.
- Recount SE01 after any change
- ISA date is 6 digits, GS and BEG dates are 8
- Do not reuse control numbers
- Validate against the partner guide
Frequently Asked Questions
What does the 850 transaction set do?
The 850 is the X12 purchase order. A buyer sends it to a supplier to order goods or services. The supplier normally replies with an 855 purchase order acknowledgement, and later an 856 advance ship notice and an 810 invoice.
What does SE01 count?
SE01 is the total number of segments in the transaction set, counting the ST segment and the SE segment. If you add or remove a segment between them, update this number or the receiving translator will reject the set.
Why are the ISA IDs padded to 15 characters?
ISA is a fixed-width segment. The sender and receiver ID elements must be exactly 15 characters, so shorter IDs are padded with trailing spaces. A wrong length breaks the interchange and most translators reject it before reading the content.
Is this suitable for production use?
No. It is a teaching and testing skeleton. A production 850 needs partner-specific segments, qualifiers, addresses, terms and often multiple lines. Use your EDI translator and the trading partner guide to build the real mapping.
If your ERP creates POs but your EDI mapping is slow to change, we can help build and test mappings and a read-only monitor that shows which POs were acknowledged.
Related Tools
Purchase Order Acknowledgement Review Checklist
A checklist for reviewing a supplier's order acknowledgement before you accept differences in price, dates, terms or quality requirements.
Developer ToolsSupplier PPM and On-Time Delivery SQL Query Generator
Fill in your receipt table and column names to generate a ready-to-run SQL query for supplier reject PPM and on-time delivery.
Supply Chain & InventoryIncoterms 2020 Buyer and Seller Responsibility Reference
A searchable table of all 11 Incoterms 2020 rules showing where risk transfers and who handles carriage, customs and insurance.
Supply Chain & InventorySingle-Source Supplier Dependency Risk Assessment
Answer ten questions about one supplier and part to get a dependency score and the first mitigation steps to consider.
More Developer Tools tools
See all- SAP Sales Order ABAP SELECT Generator (VBAK, VBAP, VBFA)
- SAP Sales Order Create BAPI ABAP Generator (BAPI_SALESORDER_CREATEFROMDAT2)
- SAP ABAP Open Items SELECT Generator
- SAP ACDOCA SQL Query Generator
- SAP QM Inspection Lot ABAP SELECT Generator
- SAP Quality Notification Pareto SQL Query Generator
- SAP QM Usage Decision BAPI Skeleton
- ABAP Custom Exception Class Generator
- ABAP Unit Test Class Generator
Keep exploring
Free tools
- X12 850 Purchase Order EDI Skeleton GeneratorBuilds a single-line ANSI X12 850 purchase order with ISA, GS, ST, BEG, N1 and PO1 segments you can use as a test file or mapping reference.
- X12 810 Invoice EDI Template GeneratorFill in invoice, PO and line details and get a clean X12 810 invoice skeleton with envelope and matching control numbers.
- X12 855 Purchase Order Acknowledgment Skeleton GeneratorBuilds a correctly structured X12 855 PO acknowledgment (ISA through IEA) with BAK, PO1 and ACK loops so you can test with a trading partner.
ERP fixes and how-tos
- How to Set Up an EDI Trading Partner in Plex SystemsHow to configure a new EDI trading partner in Plex EDI Data Manager, map document types like 850, 830, 862, and 856, and test before going live.
- SyteLine EDI or BOD inbound document fails to create a sales orderWhy an inbound EDI order or ION BOD fails to create a SyteLine sales order, and how to trace the failure through the EDI error log or ION BOD inbox to the root cause.
Runs with your ERP
- Cleo Integration Cloud with SAP: EDI 850, 856 and 810How Cleo Integration Cloud connects trading partners to SAP S/4HANA and ECC for 850 orders, 856 ASNs and 810 invoices using IDocs and S/4HANA APIs.
- TrueCommerce EDI and Infor M3TrueCommerce managed EDI for Infor M3 (also VISUAL and other Infor ERPs): documents, data flows, setup steps, pitfalls, alternatives and where AI helps.
- SPS Commerce EDI with SAP Business OneHow SPS Commerce Fulfillment connects SAP Business One to retail trading partners: EDI orders, ASNs, invoices, setup, pitfalls and a private AI layer.
Guides
- EDI Implementation for Manufacturers: A Practical GuideEDI implementation for manufacturers: map 850, 856, and 810 transactions to your ERP, pick a VAN or AS2, and go live with trading partners in 90 days.
- SyteLine EDI Transaction Sets: Configuring 850, 810 & 856Configure EDI transaction sets 850, 810, and 856 in Infor SyteLine. Step-by-step guide for purchase orders, invoices, and ASN documents with IDO mapping.
- EDI Transaction Sets Every Manufacturer Should KnowA manufacturer reference to EDI transaction sets: what 850, 855, 856, 810, 862, and 830 documents contain and how each maps into ERP order and shipping data.