Functional Acknowledgments (997)

What 997 acknowledgments are, what they mean, and what to do when one is rejected.

The 997 Functional Acknowledgment is one of the most common EDI documents you will see, but it is also one of the most misunderstood. Think of it as a delivery receipt for EDI documents. When you send a document to a retailer, their system automatically sends back a 997 to confirm it arrived and could be read.

What a 997 Does (and Does Not) Mean

A 997 tells you one thing: the receiving system was able to accept and parse your document. It confirms that:

  • The document was successfully delivered to the trading partner's system
  • The document structure was valid and could be read
  • The required segments and data elements were present

A 997 does not tell you:

  • Whether the content of the document was correct (e.g., right prices, valid PO number)
  • Whether the retailer agrees with or approves the document
  • Whether the order will be fulfilled or the invoice will be paid
Important: Think of it this way — a 997 is like a mail carrier confirming a letter was delivered. It does not mean the recipient read the letter, agreed with it, or plans to respond favorably.

997 Accepted vs. 997 Rejected

When you receive a 997, it will have one of two outcomes:

Accepted (Code A): Your document was received and parsed without errors. This is what you want to see. The document made it through the front door of the retailer's system. Content-level review happens separately.

Rejected (Code R): Your document could not be parsed or had structural errors. The retailer's system could not read it properly. This needs immediate attention because the retailer essentially never received a usable document from you.

Common 997 Rejection Reasons

If you receive a rejected 997, the error details will usually point to one of these issues:

  • Invalid segment or segment out of order: The document structure did not match the expected EDI format. This is usually a configuration issue.
  • Wrong EDI version: Your document was sent in a version the retailer does not support. For example, you sent version 4010 but they require 5010.
  • Missing required data element: A field that the retailer requires was left blank or omitted. For instance, a missing ship-to address or missing UPC code.
  • Invalid qualifier or code: A code value in the document was not recognized. This often happens with ID qualifiers or unit-of-measure codes.
  • Duplicate control number: The interchange or group control number was the same as a previously received document. Each transmission must have a unique control number.

What to Do When You Get a 997 Rejection

  1. Open the rejected document in RetailReady and look at the error details. The 997 will include specific error codes pointing to the problem segment.
  2. Check the error code against the descriptions above. RetailReady translates most error codes into plain-English explanations.
  3. Fix the underlying issue. If it is a data problem (missing field, wrong code), correct the document and resend. If it is a structural problem (wrong version, segment order), this may require a configuration change — contact support.
  4. Resend the document after the fix. Monitor for a new 997 to confirm the corrected version was accepted.
Tip: If you are seeing repeated 997 rejections for the same error, it is likely a configuration issue with your trading partner setup. Check the connection settings in Trading Partners, or reach out to RetailReady support for help.

997 Status Codes Explained

When a trading partner receives your EDI document, they send back a 997 Functional Acknowledgment with one of these status codes:

StatusWhat It MeansAction Required
Accepted (A)Your document was received and passed all validation. Everything is good.None — document processed successfully
Accepted With Errors (E)Your document was received and will be processed, but the trading partner found minor issues.Review the error details for future improvements
Rejected (R)Your document was rejected entirely. It will NOT be processed.Fix all errors and resend the complete document

Note: These are the status codes that RetailReady actively processes. Other X12 997 codes exist in the standard but are extremely rare in retail EDI.

Segment-Level Errors (AK3)

If a 997 comes back with segment-level errors, it means specific sections of your document had problems. Here's what each error means:

  • Unrecognized Segment — Your document contains a segment the trading partner doesn't recognize. This usually means a non-standard extension was included.
  • Unexpected Segment — A segment appeared in the wrong location. Segment order matters in X12.
  • Mandatory Segment Missing — A required segment is not present. Check that all required fields are filled in.
  • Loop Exceeded Maximum — A repeating group (like line items) exceeded the allowed count. You may need to split into multiple documents.
  • Segment Exceeds Maximum Use — A segment appeared more times than allowed. Check for duplicates.
  • Segment Not In Transaction Set — A segment was included that doesn't belong in this document type.
  • Segment Out Of Sequence — Segments are in the wrong order. Regenerate to fix.
  • Segment Has Element Errors — The segment itself is fine, but one or more fields within it have issues. See element errors below.

Element-Level Errors (AK4)

Element errors are the most specific — they pinpoint exactly which field within a segment has a problem:

  • Required Field Missing — A mandatory field was left empty. Fill in all required fields.
  • Conditional Field Missing — A field that becomes required based on other field values is missing.
  • Too Many Data Elements — More fields than expected in a segment.
  • Field Too Short — A value doesn't meet the minimum length. Common with IDs that require padding.
  • Field Too Long — A value exceeds the maximum length. Trim it down.
  • Invalid Character — EDI only allows certain characters (typically alphanumeric). Remove special characters.
  • Invalid Code Value — A field contains a code that isn't in the allowed list.
  • Invalid Date — Date must be in CCYYMMDD format (e.g., 20260315).
  • Invalid Time — Time must be in HHMM or HHMMSS format.
  • Exclusion Condition Violated — Two mutually exclusive fields both have values. Remove one.

Group-Level Errors (AK9)

Group errors affect the entire functional group (the container that holds your transaction sets):

  • Functional Group Not Supported — The trading partner doesn't accept this type of document group.
  • Version Not Supported — The X12 version you're using isn't supported. Check with your trading partner.
  • Group Trailer Missing — The GE segment is missing. Regenerate to fix the envelope.
  • Control Number Mismatch — The GS and GE control numbers don't match. Regenerate to fix.
  • Transaction Set Count Mismatch — Declared count doesn't match actual. Regenerate.
  • Control Number Syntax Error — Invalid control number format. Regenerate.

Ready to put this into practice?

Try RetailReady free for 14 days. No credit card required.

Start Free Trial