X12 855 Purchase Order Acknowledgment Skeleton Generator
The 855 is how a supplier tells a customer 'we received your PO, here is what we will ship and when.' This generator produces a structurally correct 855 you can drop into your translator or send to a trading partner for first-round testing.
Fill in
15 characters in the real ISA, padded with spaces. Your VAN or AS2 setup decides the qualifier.
AD = with detail, no change. AC = with detail and change. AE = exceptions only. AK = no detail or change. RD = reject with detail. RJ = reject, no detail.
X12 855 message (4010 style, tilde segment terminator)
ISA*00* *00* *ZZ*NETRAYSELLER*ZZ*BUYERPARTNER*261020*0930*U*00401*000000101*0*T*>~ GS*PR*NETRAYSELLER*BUYERPARTNER*20261020*0930*101*X*004010~ ST*855*0001~ BAK*00*AC*4500123456*20261015~ REF*VN*SO-778120~ PO1*1*100*EA*12.40**BP*BRK-1001-A*VP*HX-48213~ ACK*IA*100*EA*068*20261105~ PO1*2*40*EA*88.00**BP*SHF-2200-C*VP*HX-77310~ ACK*IB*40*EA*068*20261203~ CTT*2~ SE*9*0001~ GE*1*101~ IEA*1*000000101~
Segment guide
BAK01 00 = original. BAK02 is the acknowledgment type. BAK03 is the buyer PO number echoed back. PO1 repeats the buyer line, ACK carries your line status and the promised date (qualifier 068 = current schedule ship date). CTT01 counts PO1 lines. SE01 counts segments from ST to SE inclusive (9 here). If you add or remove lines, update CTT and SE.
Starting skeleton only. Most partners publish an implementation guide that fixes the X12 version, qualifiers, required REF and N1 loops, and date formats, so always validate against that guide and your translator before sending. ISA element widths must be exact in production (ISA06 and ISA08 are 15 characters padded). Confirm 855 versus 865 usage with the buyer: 855 acknowledges a PO, 865 is seller-initiated changes.
Automate 855s from your ERP
Optional: we can review how your sales order and promise-date data could feed 855 generation.
Optional. The tool and every export work without this. No spam.
How to use the generator
Enter your and the buyer's ISA IDs, the buyer's PO number and date, and the two example lines. Pick the BAK02 type and an ACK01 status for each line. The message updates live. Copy it to a text file for your translator test harness, or export it with the page export buttons. For more than two lines, duplicate the PO1 and ACK pair and increment the line number, then update CTT01 and SE01.
- Keep one PO1 and one ACK per line
- ACK02 quantity is what you commit to ship
- Use ACK05 for the promised ship date, not the requested date
How the 855 is structured
An X12 interchange wraps a functional group, which wraps one or more transaction sets. The 855 set runs ST, BAK, optional REF/DTM/N1 header segments, a PO1 loop with ACK detail, CTT totals and SE. BAK02 tells the buyer whether you accepted without change (AD), accepted with changes (AC), sent exceptions only (AE) or rejected (RD or RJ). ACK01 then qualifies each line. Partners often use 855 data to update promise dates in their planning system.
Reading line status codes
IA means the line was accepted as ordered. IC means accepted with changes, usually a date or quantity. IQ means quantity changed and IP means price changed. IB means backordered, which should carry a new ship date. IR rejects the line. If any line is not IA, set BAK02 to AC or AE so the buyer's system routes the acknowledgment for review instead of auto-accepting it.
Common mistakes
Wrong segment count in SE01 is the most frequent reason a translator rejects a hand-built file. Others are echoing the wrong PO number, sending a changed price without IP, and using dates in YYMMDD where the partner wants CCYYMMDD. A 997 functional acknowledgment from the partner confirms syntax only. It does not mean the buyer accepted your dates.
Frequently Asked Questions
What is the difference between an 855 and an 865?
An 855 is the seller's acknowledgment of a buyer's purchase order. An 865 is a seller-initiated change or a response to a buyer's 860 change request. Many partners want the 855 for the first response and an 865 for later changes, so confirm in their guide.
Do I have to send an 855 for every PO?
Only if the trading partner requires it. Many OEMs and distributors mandate it within 24 to 48 hours and measure compliance. Even when optional, it reduces order status calls to your customer service team.
Which X12 version should I use?
Use the version in your partner's implementation guide. 004010 is still very common in manufacturing and distribution, but some partners require 005010. The segment names are largely the same, though element requirements differ.
Does this tool validate my message?
It builds a structurally consistent skeleton, but it is not a certified X12 validator. Run the output through your translator or a partner test environment and review the 997 or error reports it returns.
If your sales orders already live in an ERP, we can help generate 855s directly from order and promise-date data with a human approval step. This tool works fine on its own.
Related Tools
X12 855 Acknowledgment Status Codes Reference (BAK02 and ACK01)
Lookup table for the common BAK02 and ACK01 codes in an X12 855 PO acknowledgment and the follow-up action each one calls for.
Supply Chain & InventoryX12 Order-to-Cash Transaction Sets Reference
A lookup table of the X12 transaction sets that touch quoting, ordering, shipping, invoicing and payment, with who sends what.
Developer ToolsX12 850 Purchase Order EDI Skeleton Generator
Builds 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.
Developer ToolsX12 856 Advance Ship Notice Generator
Fill in shipment, carrier and item details and get a clean X12 856 skeleton with shipment, order and item hierarchy to use as a test file.
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