Line Item Part Three, The ACK
ACK is an Acknowledgment segment. It is commonly found on response transactions to Purchase Orders or 855. It is one of the lines found in the PO1 loop or group. As this line modifies the PO1 line data from the Purchase Order, what it can contain and how that data is handled is important for the stability of the supply chain integration. For clarity, we are going to use the 4010 x12 standard.
Parts of ACK
Here is a diagram of a sample ACK segment:

Like any other segment in EDI, the ACK segment is composed of elements. Here is a list, element by element and what it contains.
| ACK_01 | This is the Line Item Status Code. This code can be the entire purpose of the ACK line if it indicates that the line is cancelled, or it can indicate that something has changed. The Diagram above has a Status Code of “IP” indicating that the price from the Order has changed. The ACK should then reflect the changed price here. In the case of an 855 that indicates the part number has changed or substituted the status will be “IS” and the new part number will be listed in the Product or Service ID element. The PO1 line that this ACK is a part of should contain the original part number, price, quantity, or whatever was on the order, and the ACK will contain the modification. |
| ACK_02 | This is the quantity modified. This is not required, but is very important. If the order was for 10 items, and there is a change, substitution or delay in 5 of them, a PO1 group should contain 2 ACK lines one with the accepted status on the 5 that are ok, and another for the 5 that are |
| ACK_03 | This is the Unit of Measure. It is a 2 character, Alpha-Numeric value. It is also an encoded value. Being “encoded” means that there is a list of acceptable values for this element, any value outside of that set is invalid and will cause an exception.When the ACK_02 and ACK_03 are used together, we can tell how much of something is being modified or acknowledged |
| ACK_04 | This is the date Qualifier. This is not required, even if ACK_05 is present, this element may be empty. When it is present, it is an encoded value that identifies what type of data is in the ACK_05. In the case of our example, it is the PO date. |
| ACK_05 | This is a Date element. It is required if ACK_04 is populated. The format is CCYYMMDD. This element is always 8 characters long when it is populated. |
| ACK_06 | This is a reference number. I have never seen this used, but if you have a use for it, go ahead. |
| ACK_07 | This is a Product or Service Qualifier. This element is a 2 character, encoded value. All of the “Qualifier” defined elements are encoded values. This, again, means that there is a list of acceptable values for this element, any value outside of that set is invalid and will cause an exception.This qualifier defines what type of value is found in the next element, the ACK_08. So if the ACK_07 has a “VC”, then the ACK_08 contains a Vendor’s Catalog Number. (This means it is a part number as found in the Vendor Catalog.) |
| ACK_08 | This is a Product or Service ID. It is Alpha-Numeric, and can be from 1 to 48 characters in length. It is conditional with the ACK_07, if one is present, the other must be present. This value is an identifier like a part number or other type of line item data. |
| ACK_09 to ACK_26 | This pattern continues all way to ACK_25 and ACK_26. All of the segment pairs from ACK_07 to ACK_26 that have the same potential values for each pair. |
| ACK_27 | This is Agency Qualifier Code. It is an 2 character encoded value to designate what agency, state or entity is being referenced. It is not required and I have never seen this used. |
| ACK_28 | This is Source SubQualifier. It is an 15 character Alpha-Numeric value that references the source table being used. It is not required and I have never seen this used. |
| ACK_29 | This is Industry Code. It is an 30 character Alpha-Numeric value that references an industry code list. It is not required and I have never seen this used. |
Best Practices
With the ACK the best practices are more in how to implement and what to expect. So here are some things to remember when implementing this segment.
- An ACK is part of a PO1 line for a response to another PO1 line transaction. This segment supplies a status, and can modify the line item contents.
- There can be more than one ACK segment for a line item. (4010 855s allow 104 repetitions of the ACK)
- When an ACK explicitly changes the line item it can only change that one type.
- There is a status called Accepted With Changes. “AC” For this, you will need to parse the ACK and see if any of the values have changed.
Subscribe to "The Integration Engineer" by Email
Find out about the tools and services available at The Integration Engineer's Consulting site.











