How to Read an EDI Rejection
Acknowledgments come in layers, and each layer answers a different question. A TA1 answers “was the envelope (ISA to IEA) readable?” A 997 or 999 answers “was each document valid X12?” and names the segment (AK3/IK3) and element (AK4/IK4) that failed. An 824 answers “could our system use it?” with business errors such as a total out of balance or an item not on file. EDIFACT partners send a CONTRL for the syntax layer and often an APERAK for the business layer.
Positions in an acknowledgment count from the start of the transaction set: ST (or UNH) is segment 1. Element positions count from 1 after the segment ID, so AK4*1 on a BIG segment is BIG01. Paste the original document and the explainer does that counting for you, shows the current value and works out numbers such as the right SE01 count or invoice total.
More on each document: the 997 functional acknowledgment guide, the 824 application advice guide and the EDIFACT CONTRL guide. To check a document before you send it, run it through the EDI inspector. When a rejection has already turned into a deduction, read the remittance with the 820 remittance reader and see how EDI chargebacks work.
997, 999 and TA1 Code Lists
Segment syntax error codes (AK304, IK304)
| Code | Meaning |
|---|---|
| 1 | Unrecognized segment ID |
| 2 | Unexpected segment |
| 3 | Mandatory segment missing |
| 4 | Loop occurs over maximum times |
| 5 | Segment exceeds maximum use |
| 6 | Segment not in defined transaction set |
| 7 | Segment not in proper sequence |
| 8 | Segment has data element errors |
| I4 | Implementation 'Not Used' segment present |
| I6 | Implementation dependent segment missing |
| I7 | Implementation loop occurs under minimum times |
| I8 | Implementation segment below minimum use |
| I9 | Implementation dependent 'Not Used' segment present |
Full list. Source: Wisconsin DHS, 999 acknowledgment instructions (P-00268).
Data element syntax error codes (AK403, IK403)
| Code | Meaning |
|---|---|
| 1 | Mandatory data element missing |
| 2 | Conditional required data element missing |
| 3 | Too many data elements |
| 4 | Data element too short |
| 5 | Data element too long |
| 6 | Invalid character in data element |
| 7 | Invalid code value |
| 8 | Invalid date |
| 9 | Invalid time |
| 10 | Exclusion condition violated |
| 12 | Too many repetitions |
| 13 | Too many components |
| I6 | Code value not used in implementation |
| I9 | Implementation dependent data element missing |
| I10 | Implementation 'Not Used' data element present |
| I11 | Implementation too few repetitions |
| I12 | Implementation pattern match failure |
| I13 | Implementation dependent 'Not Used' data element present |
Full list. Source: Wisconsin DHS, 999 acknowledgment instructions (P-00268).
Transaction set acknowledgment codes (AK501, IK501)
| Code | Meaning |
|---|---|
| A | Accepted |
| E | Accepted, but errors were noted |
| M | Rejected, message authentication code (MAC) failed |
| R | Rejected |
| W | Rejected, assurance failed validity tests |
| X | Rejected, content after decryption could not be analyzed |
Full list. Source: EdiFabric, X12 997 acknowledgment error codes.
Transaction set syntax error codes (AK502, AK503, AK504, AK505, AK506, IK502)
| Code | Meaning |
|---|---|
| 1 | Transaction set not supported |
| 2 | Transaction set trailer missing |
| 3 | Transaction set control number in header and trailer do not match |
| 4 | Number of included segments does not match actual count |
| 5 | One or more segments in error |
| 6 | Missing or invalid transaction set identifier |
| 7 | Missing or invalid transaction set control number |
| 8 | Authentication key name unknown |
| 9 | Encryption key name unknown |
| 10 | Requested service (authentication or encryption) not available |
| 11 | Unknown security recipient |
| 12 | Incorrect message length (encryption only) |
| 13 | Message authentication code failed |
| 15 | Unknown security originator |
| 16 | Syntax error in decrypted text |
| 17 | Security not supported |
| 18 | Transaction set not in functional group |
| 19 | Invalid transaction set implementation convention reference |
| 23 | Transaction set control number not unique within the functional group |
| 24 | S3E security end segment missing for S3S security start segment |
| 25 | S3S security start segment missing for S3E security end segment |
| 26 | S4E security end segment missing for S4S security start segment |
| 27 | S4S security start segment missing for S4E security end segment |
| I5 | Implementation one or more segments in error |
| I6 | Implementation convention not supported |
Full list. Source: Wisconsin DHS, 999 acknowledgment instructions (P-00268).
Functional group acknowledgment codes (AK901)
| Code | Meaning |
|---|---|
| A | Accepted |
| E | Accepted, but errors were noted |
| M | Rejected, message authentication code (MAC) failed |
| P | Partially accepted, at least one transaction set was rejected |
| R | Rejected |
| W | Rejected, assurance failed validity tests |
| X | Rejected, content after decryption could not be analyzed |
Full list. Source: EdiFabric, X12 997 acknowledgment error codes.
Functional group syntax error codes (AK905, AK906, AK907, AK908, AK909)
| Code | Meaning |
|---|---|
| 1 | Functional group not supported |
| 2 | Functional group version not supported |
| 3 | Functional group trailer missing |
| 4 | Group control number in the functional group header and trailer do not agree |
| 5 | Number of included transaction sets does not match actual count |
| 6 | Group control number violates syntax |
| 10 | Authentication key name unknown |
| 11 | Encryption key name unknown |
| 12 | Requested service (authentication or encryption) not available |
| 13 | Unknown security recipient |
| 14 | Unknown security originator |
| 15 | Syntax error in decrypted text |
| 16 | Security not supported |
| 17 | Incorrect message length (encryption only) |
| 18 | Message authentication code failed |
| 19 | Functional group control number not unique within interchange |
| 23 | S3E security end segment missing for S3S security start segment |
| 24 | S3S security start segment missing for S3E security end segment |
| 25 | S4E security end segment missing for S4S security start segment |
| 26 | S4S security start segment missing for S4E security end segment |
Full list. Source: EdiFabric, X12 997 acknowledgment error codes.
TA1 interchange note codes (TA105)
| Code | Meaning |
|---|---|
| 000 | No error |
| 001 | The interchange control number in the header and trailer do not match |
| 002 | This standard as noted in the control standards identifier is not supported |
| 003 | This version of the controls is not supported |
| 004 | The segment terminator is invalid |
| 005 | Invalid interchange ID qualifier for sender |
| 006 | Invalid interchange sender ID |
| 007 | Invalid interchange ID qualifier for receiver |
| 008 | Invalid interchange receiver ID |
| 009 | Unknown interchange receiver ID |
| 010 | Invalid authorization information qualifier value |
| 011 | Invalid authorization information value |
| 012 | Invalid security information qualifier value |
| 013 | Invalid security information value |
| 014 | Invalid interchange date value |
| 015 | Invalid interchange time value |
| 016 | Invalid interchange standards identifier value |
| 017 | Invalid interchange version ID value |
| 018 | Invalid interchange control number value |
| 019 | Invalid acknowledgment requested value |
| 020 | Invalid test indicator value |
| 021 | Invalid number of included groups value |
| 022 | Invalid control structure |
| 023 | Improper (premature) end-of-file (transmission) |
| 024 | Invalid interchange content (for example, an invalid GS segment) |
| 025 | Duplicate interchange control number |
| 026 | Invalid data element separator |
| 027 | Invalid component element separator |
| 028 | Invalid delivery date in deferred delivery request |
| 029 | Invalid delivery time in deferred delivery request |
| 030 | Invalid delivery time code in deferred delivery request |
| 031 | Invalid grade of service code |
Full list. Source: Microsoft Learn, X12 TA1 acknowledgments and error codes.
824 and CONTRL Code Lists
824 application acknowledgment codes (OTI01)
| Code | Meaning |
|---|---|
| GA | Functional group accept |
| GC | Functional group accept with data content change |
| GP | Functional group partial accept/reject |
| GR | Functional group reject |
| TA | Transaction set accept |
| TC | Transaction set accept with data content change |
| TE | Transaction set accept with error |
| TP | Transaction set partial accept/reject |
| TR | Transaction set reject |
| IA | Item accept |
| IE | Item accept with error |
| IR | Item reject |
Codes used in published retailer guides; the standard list is longer. Source: HIBCC, 824 Application Advice implementation guide.
824 application error condition codes (TED01)
| Code | Meaning |
|---|---|
| 101 | Effective date too early |
| 102 | Improper placement of labels |
| 103 | Invoice number |
| 104 | Item already exists (product/service ID) |
| 105 | Item marked for delete |
| 802 | Invalid debit or credit flag code |
| 803 | Missing or invalid payment method code |
| 807 | Missing or invalid originating account number |
| 808 | Missing or invalid receiving account number |
| 809 | Missing effective entry date |
| 812 | Missing transaction reference or trace number |
| 848 | Incorrect data |
| 003 | Duplicate billing |
| 005 | Route error |
| 006 | Duplicate |
| 007 | Missing data |
| 008 | Out of range |
| 009 | Invalid date |
| 010 | Total out of balance |
| 011 | Not matching |
| 012 | Invalid combination |
| 024 | Other unlisted reason |
| OTH | Other unspecified application error |
Codes used in published retailer guides; the standard list is longer. Source: Army and Air Force Exchange Service, 824 Application Advice (4030).
CONTRL action codes (UCI04, UCF03, UCM03)
| Code | Meaning |
|---|---|
| 4 | This level and all lower levels rejected |
| 7 | This level acknowledged, next lower level acknowledged if not explicitly rejected |
| 8 | Interchange received |
Full list. Source: GS1 EANCOM 2002 S3, CONTRL syntax and service report.
CONTRL syntax error codes (UCI05, UCF04, UCM04, UCS02, UCD01)
| Code | Meaning |
|---|---|
| 2 | Syntax version or level not supported |
| 7 | Interchange recipient not actual recipient |
| 12 | Invalid value |
| 13 | Missing |
| 14 | Value not supported in this position |
| 15 | Not supported in this position |
| 16 | Too many constituents |
| 17 | No agreement |
| 18 | Unspecified error |
| 19 | Invalid decimal notation |
| 20 | Character invalid as service character |
| 21 | Invalid character(s) |
| 22 | Invalid service character(s) |
| 23 | Unknown interchange sender |
| 24 | Too old |
| 25 | Test indicator not supported |
| 26 | Duplicate detected |
| 27 | Security function not supported |
| 28 | References do not match |
| 29 | Control count does not match number of instances received |
| 30 | Groups and messages/packages mixed |
| 31 | More than one message type in group |
| 32 | Lower level empty |
| 33 | Invalid occurrence outside message, package, or group |
| 34 | Nesting indicator not allowed |
| 35 | Too many data element or segment repetitions |
| 36 | Too many segment group repetitions |
| 37 | Invalid type of character(s) |
| 38 | Missing digit in front of decimal sign |
| 39 | Data element too long |
| 40 | Data element too short |
| 41 | Permanent communication network error |
| 42 | Temporary communication network error |
| 43 | Unknown interchange recipient |
| 45 | Trailing separator |
| 46 | Character set not supported |
| 47 | Envelope functionality not supported |
| 48 | Dependency notes condition violated |
Full list. Source: Microsoft Learn, EDIFACT CONTRL acknowledgment error codes.