February 17, 2025
EDI 997 Functional Acknowledgment: What It Is and Why a Missing One Is a Problem
Every EDI transaction you send should get a 997 back. When the 997s stop coming — or when you get one with a rejection code — that’s usually the first signal something is wrong.
What Is a 997?
The 997 Functional Acknowledgment is a receipt. When your trading partner receives an EDI transaction from you, their system sends back a 997 to say:
- “I got your transaction”
- “It was structurally valid (or here’s what’s wrong with it)”
That’s it. The 997 is NOT a business acknowledgment — it doesn’t mean the order was accepted, the invoice was approved, or the shipment was received. It means the EDI transaction itself was received and parsed without structural errors.
When You Send a 997
Your system should send a 997 for every functional group you receive. If Walmart sends you an 850 Purchase Order, you send back a 997. If your 3PL sends you an 856, you send back a 997.
Most EDI platforms generate 997s automatically. If you’re not sending them, some trading partners will escalate it as a compliance issue.
What’s Inside a 997
The 997 is one of the simpler X12 transactions:
AK1 — Functional Group Response Header References the functional group (GS segment) you’re acknowledging. Includes the Group Control Number from the original transaction.
AK2 — Transaction Set Response Header References the specific transaction set (ST segment). One AK2 per transaction in the group.
AK5 — Transaction Set Response Trailer The result code:
A— AcceptedE— Accepted but errors were notedR— RejectedM— Rejected, message authentication code failedW— Rejected, invalid interchange control numberX— Rejected, security invalid
AK9 — Functional Group Response Trailer Overall result for the functional group. Same codes as AK5.
When You Get a Rejection
An AK5 or AK9 with code R means the transaction was structurally invalid. The 997 will include AK3 and AK4 segments that tell you:
- Which segment failed (AK3 has the segment ID and position)
- Which data element failed (AK4 has the element position and error code)
Error codes like 1 (unrecognized segment) or 8 (invalid character) point you directly at the problem. If you’re getting a 007 error code (mandatory segment missing), you’re missing a required segment.
When 997s Stop Coming
If your trading partner stops sending 997s, one of a few things happened:
- Their system is down — check if other transactions are flowing
- Your transactions aren’t reaching them — connectivity issue on your side
- Something in your envelope changed — ISA ID, qualifier, or GS IDs are wrong
- They started discarding them — rare, but some legacy systems stop sending 997s without notice
Start with the envelope. Check your ISA06 and ISA08 (sender/receiver IDs) against what the trading partner expects. A single character wrong in the ISA header and your transactions go nowhere.
Auto-997 vs Manual
Most modern EDI platforms generate and send 997s automatically. If you’re on a platform that requires manual 997 generation, fix that first — it’s a compliance risk and an operational headache.
If your EDI setup is generating rejections you can’t decode, or if 997s have gone quiet and you don’t know why, TebcoForge can diagnose it. EDI troubleshooting is usually faster than it looks once you know where to look.
Need help with EDI?
TebcoForge handles mapping, trading partner setup, and go-live. Tell us what you're working on.
Get a Free Quote