Tracking 997 acknowledgments and a new API endpoint for your transactions
Adrian Duyzer
When you send a document to a trading partner, the transport doesnât tell you much. The file left your system and landed on an SFTP server or crossed an AS2 connection, and that is the last thing you know for certain. Whether your partnerâs system picked it up, parsed it, and accepted it is a separate question, and it is the question that actually matters, because a purchase order that was delivered but never processed looks exactly like one that was processed, right up until someone calls asking where their order is.
X12 has an answer for this: the 997 functional acknowledgment, a small document your partner sends back that says âI received your batch of transactions, and here is whether I accepted it.â The trouble is what most EDI setups do with 997s, which is nothing. They arrive, they get logged as one more inbound document, and nobody connects them back to the outbound documents they acknowledge. So the receipt you needed sits unread in a folder while you field the phone call anyway.
Tediware now makes that connection for you.
How it works
Say you send an 850 purchase order to a partner, and it goes out in a functional group with control number 1043. On the EDI Transactions page, that document now shows Awaiting 997 in a new 997 column.
Sooner or later (partners vary a lot on this, which is part of why tracking it matters) your partnerâs system sends back a 997 containing something like:
AK1*PO*1043~
AK9*A*1*1*1~
The AK1 segment names the group being acknowledged, control number 1043, your 850. The AK9 carries the verdict, and A means accepted. Tediware reads both, matches the control number back to the document you sent, and the 850âs status flips to 997 accepted. If the partner had rejected it, you would see 997 rejected instead, and you could open the transaction to inspect the 997 they returned.
The page also gets a 997 filter, so you can answer the questions this data exists to answer: show me everything still waiting on an acknowledgment, or everything this partner has rejected.
Tracking is on by default for every partner. Some partners simply never send 997s, and for those you can turn it off on the partnerâs configuration page (Track 997 acknowledgments for outbound), so their documents donât sit in an Awaiting state that will never clear.
The new API endpoint
The EDI transaction log (what you see when you go to https://tediware.com/app/edi-transmissions) is now queryable over the API. GET /platform/edi_transactions returns your organizationâs transaction records (retained for 45 days), with cursor pagination and filters for direction, transaction set, trace GUID, and acknowledgment state.
The query for getting a list of unacknowledged transactions:
curl "https://tediware.com/platform/edi_transactions?ack_status=unacknowledged" \
-H "Authorization: Key your-api-key-here"
{
"ediTransactions": [
{
"id": "4c2021f8-8310-4628-80f9-b578d4d68e11",
"incoming": false,
"transactionSetIdentifier": "850",
"senderExtid": "YOURID",
"senderQualifier": "ZZ",
"receiverExtid": "PARTNERID",
"receiverQualifier": "ZZ",
"interchangeControlNumber": "1042",
"groupControlNumber": "1043",
"transactionSetControlNumber": "1043",
"traceGuid": "5ab72145-4a4b-40f6-95de-e2579f163f79",
"acknowledgmentStatus": "unacknowledged",
"createdAt": "2026-07-01T14:22:33.260Z",
"updatedAt": "2026-07-01T14:22:33.260Z"
}
],
"pagination": {
"hasMore": true,
"nextCursor": "MjAyNi0wMy0zMFQxNDoyMjozMy4yNjAwMDBafDRjMjAyMWY4..."
}
}
There it is: the 850 with group control number 1043, still waiting on its 997. The ack_status parameter takes unacknowledged, acknowledged, accepted, or rejected, and the acknowledgmentStatus field on each record reports the same states. The field is omitted when no acknowledgment is expected, which covers inbound documents, 997s themselves, and partners where youâve turned tracking off.
Tediware doesnât yet alert you when a document has been waiting too long. If you want that today, a scheduled job that runs the query above and complains about anything older than a day gets you there with very little code.
What it doesnât cover yet
Partners who acknowledge with the 999 instead of the 997 (common in healthcare) arenât correlated yet. The verdict is read from the group-level AK9, which maps one to one to your document because Tediware sends one transaction set per functional group. And documents you sent before this feature existed show no acknowledgment status, since there was nothing recording what they were owed at the time.
The full endpoint reference is in the API docs. If your partners have acknowledgment behavior that doesnât fit what Iâve described, Iâd genuinely like to hear about it: adrian@tediware.com.