Skip to content
Independent EDI conversion and validation software. Retailer names identify interoperability targets; no retailer endorsement is implied.
Shipment Sentry

EDI 997 vs 999: acknowledgement is a scoped technical status

Reviewed 2026-09-09 Independent research
On this page

Both the 997 and 999 exist to communicate acknowledgement information, but the expected document and interpretation depend on the partnership, transaction family, and implementation. A receiver or managed service may generate one and not the other.

Direct answer: Configure whether each partnership expects a 997, 999, TA1, or combination; correlate every acknowledgement to the exact interchange, group, and transaction controls; preserve group and transaction-level results; and keep business-status monitoring separate. Neither a positive 997 nor 999 proves an ASN was received accurately or an invoice will be paid.

An operator reviews a transport document and a separate processing checklist beside a loading dock.
Delivery and downstream acceptance need separate evidence.

Practical difference

AWS B2B Data Interchange describes a 997 as a functional acknowledgement used for many finance, transportation, supply-chain, and communication/control transactions. It describes 999 generation for configured healthcare-related flows and states that its service generates either a 999 or 997, never both. That is service behavior, not a universal rule for every partner.

The safe product model therefore avoids a hard-coded “997 good, 999 unexpected” assumption. A versioned partnership profile states what response is expected and by when.

Correlation fields

At minimum, preserve enough identity to resolve:

  • trading partnership and direction;
  • interchange sender/receiver and control;
  • functional group and control;
  • transaction set and control;
  • original content hash and transmission attempt;
  • acknowledgement type, status, errors, and receipt time.

An acknowledgement that cannot resolve uniquely is not success. Quarantine it for investigation instead of applying it to every open transaction with a similar filename.

Status precedence

Acknowledgements may be duplicated or arrive out of order. Use monotonic precedence so an accepted duplicate cannot erase a prior rejection or detailed error without an explicit corrected transaction flow.

Record group and transaction results independently. A group-level response can coexist with a transaction-level exception, and a UI should not compress that into one green badge.

Technical versus business status

Keep separate timelines for:

Timeline Example evidence
transport AS2/SFTP delivery evidence
interchange TA1 or envelope processing
functional/implementation 997 or 999
partner business processing Amazon transaction status or Vendor Central state
physical/financial outcome receiving, payment, deductions, credits

This separation catches the “accepted but nothing happened” failure that no error webhook emits.

Test matrix

  • expected 997 accepted, rejected, and accepted-with-errors;
  • expected 999 with transaction-level implementation error;
  • acknowledgement for an unknown control number;
  • same control reused by another partnership;
  • accepted response arriving after rejection;
  • duplicate response processed twice;
  • no response by deadline;
  • technical success followed by business failure or stalled status.

Support boundary

Shipment Sentry records each response from grouped 997, 999 and 824 uploads separately. Matching uses the workspace, partner route, outbound direction and every supplied document reference. Duplicate batches preserve the original response identities; unmatched responses are revisited when outbound records arrive. Ambiguous references remain unmatched. These are correlation checks: partner conformance still requires the applicable implementation guide.

Get an ASN readiness audit →

What an EDI acknowledgment actually answers

An acknowledgment is evidence about a particular processing step. Before interpreting its status, identify the sender, the document it references, the standard version, and the step that generated it. A transport server, translator, order application, and receiving warehouse can all produce different evidence about the same shipment. Their results belong together in a timeline, but they are not interchangeable approvals.

Four connected folders represent a purchase order, acknowledgment, shipment notice and invoice.
References link related documents; each document still records a different business event.

Consider an ASN uploaded before a truck leaves a warehouse. The upload completes, the receiver's translator accepts its structure, and the business application subsequently rejects an unknown purchase order. Each event can be correct. The failure is in treating the first positive signal as the final outcome. An effective EDI monitoring system keeps the unresolved business step visible even when earlier technical steps succeeded.

Define a route's expected response contract before sending live documents. It should state which acknowledgments are required, which party produces them, how controls are correlated, the deadline, and what closes each operational task. Some workflows do not produce every possible response. A monitor that expects an unsupported acknowledgment creates false alarms; one that expects nothing can miss a silent processing failure indefinitely.

EDI 997 functional acknowledgment

The 997 provides functional acknowledgment information for a referenced functional group and, when supplied, its transactions. When reading one, distinguish the acknowledgment's own envelope controls from the controls it is acknowledging. The incoming 997 is itself an X12 document with its own identity. Matching its ST control directly to the original ASN's ST control confuses those two roles.

In common implementations, AK1 identifies the referenced functional group, AK2 identifies a referenced transaction when present, and acknowledgment result segments convey the applicable outcomes. Error details can identify a segment or element problem. Exact usage and code interpretation depend on the version and implementation guide. A parser should preserve the original codes and locations alongside a plain-language explanation so an operator can verify the interpretation.

Do not assume every accepted transaction is individually listed. Partner profiles can differ in whether they enumerate accepted transactions or primarily report exceptions. Reconcile the group totals and available transaction details according to the actual response contract. If information is insufficient to identify a transaction outcome, report that limitation instead of manufacturing a row-level acceptance from an optimistic default.

EDI 999 implementation acknowledgment

The 999 communicates implementation acknowledgment information. It is commonly encountered where implementation-guide checks matter, including healthcare workflows, but a product should select it from the actual partnership requirements rather than from an industry stereotype. The relevant question is what response this receiver has agreed to generate for this transaction and version.

Warehouse analyst compares a structured EDI document with a highlighted validation finding.
Review validation findings against the source document before approving a correction.

A useful reader distinguishes referenced group and transaction identity from implementation-error detail. It should retain contextual information that helps locate the reported segment or element. A friendly message such as “required value missing” is helpful only when the operator can trace it back to a specific original transaction and rule. Avoid discarding unfamiliar codes just because the interface has no predefined description for them.

The 999 is not a universal replacement for every 997 workflow. Changing the expected acknowledgment type without partner agreement can break monitoring and onboarding even if the parser supports both. During a migration, record which routes and effective dates use each response. Keep historical interpretation available so a replay of an older file uses its original contract.

Compare TA1, 997, 999, 824, and AS2 MDN

These messages address different layers. TA1 concerns interchange acknowledgment. The 997 and 999 concern functional or implementation processing. An 824 can convey application advice in an agreed workflow. An AS2 message disposition notification concerns the AS2 exchange and its configured receipt semantics. None of those names alone proves that goods were received or that an invoice was approved for payment.

For example, a successful AS2 receipt can establish evidence about delivery of a signed message while a subsequent 997 rejects a transaction inside it. An accepted 997 can precede application advice reporting a business discrepancy. A dashboard should make those combinations representable. A single status column that changes from “sent” to “accepted” loses the distinction unless it also states exactly what was accepted.

Use separate fields for transport outcome, interchange outcome, functional or implementation outcome, and business outcome. Add source and receipt timestamps to each event. Where a partner provides an API transaction status instead of an 824, preserve that evidence under the business processing layer. The user should be able to open the underlying response, subject to permissions, without guessing which system supplied a badge.

Match acknowledgments using a scoped correlation key

Control numbers are not globally unique identifiers. Different trading partners can legitimately use the same number, and test and production environments can overlap. A safe lookup starts with the workspace, partnership, environment, and direction, then uses the referenced envelope controls and transaction identity. Sender and receiver roles reverse in the return message, so interpretation needs the route context.

An engineer connects warehouse, accounting and partner-exchange records across three work areas.
Record identifiers and processing evidence at every handoff between systems.

Keep the original emitted artifact hash and delivery request alongside that key. This connects the response to exact bytes and the mapping version that produced them. A filename such as shipment-final.edi is useful to a person but is not a reliable correlation key. Files may be renamed during transport, and a later upload may reuse the same name with different content.

If multiple candidates match, create an ambiguous-correlation exception. If none matches, retain an unmatched acknowledgment and retry correlation when the original record becomes available. A response may arrive before an asynchronous import completes. Dropping it as “unknown” loses useful evidence; applying it to the nearest timestamp risks marking the wrong transaction accepted.

Preserve group results and transaction results

One interchange can contain several groups, and a group can contain several transactions. A summary result does not eliminate the need to inspect detail. Record counts and outcomes at the scope in which they were supplied. A partially accepted group should remain partially accepted even when some individual transactions succeeded. Operators need to know which business documents require repair.

Imagine a group containing three invoices where two pass and one is rejected. Replaying all three as new business documents may duplicate the accepted invoices. The recovery action should identify the rejected transaction, correct its cause, and follow the partner's resubmission policy. Keep the original group relationship for audit purposes while representing the correction as a distinct operation.

When a response is internally inconsistent, preserve it and raise an exception. Do not silently choose whichever field makes the dashboard green. Contradictory counts, duplicated transaction references, or an impossible control scope can indicate a parsing defect, a malformed response, or a partner issue. Those cases need evidence and investigation rather than a guessed success state.

Handle duplicates, delayed responses, and conflicting results

Duplicate delivery is normal enough that the system should expect it. Fingerprint the incoming artifact and maintain stable event identity so processing the same response twice does not send two alerts or apply two state transitions. Preserve transport receipt history separately if the same logical response arrives through repeated attempts. Deduplication should not erase useful evidence that the partner resent it.

Out-of-order arrival requires more care than sorting by receipt time. An old acceptance can arrive after a rejection associated with a corrected document, or an acknowledgment can reference an earlier attempt. Match the exact original transaction first. Then project its state using the route's interpretation rules. A more recent arrival is not automatically a more authoritative business outcome.

Conflicting acknowledgments should remain visible. Record both events, the conflict reason, and any operator resolution. Avoid overwriting the original raw response when a status changes. A later support investigation may depend on proving that two different messages were received. If the partner explicitly corrects a prior response, retain that correction relationship rather than pretending the earlier event never existed.

Set deadlines that reflect the actual partner workflow

An acknowledgment timeout is a configured expectation, not proof of rejection. Record when the relevant timer starts: local generation, successful transport, partner receipt, or another agreed milestone. Starting every timer when a user uploads a draft creates misleading overdue alerts while the file is still awaiting approval. The deadline should match the step being monitored.

Two warehouse staff compare an implementation binder with a carton and handheld scanner.
Use the partner guide and representative test cases to verify the intended workflow.

Account for the partner's documented service window and your operational escalation policy. Store timezone and calendar assumptions explicitly. A route that processes batches overnight has different expectations from an immediate response workflow. Do not invent a universal number of minutes for all partners. Measure observed latency and investigate changes, while keeping contractual deadlines distinct from historical averages.

When a deadline expires, show the last confirmed event, expected missing evidence, assigned owner, and next safe action. The action may be checking the partner portal, querying a managed transport provider, or contacting support through an authorized process. Automatic resend is appropriate only when the route's deduplication and delivery evidence make it safe. An uncertain outcome should remain uncertain until reconciled.

Investigate “EDI accepted but order missing”

Start by establishing what “accepted” refers to. Open the evidence and confirm the referenced controls. Then check whether the business application imported the document, rejected a business rule, or is still processing. An accepted translator result can coexist with a missing customer account, unknown item, invalid order reference, or blocked downstream integration.

Source documents connect through translucent mapping layers to one organized shipment record.
A mapping should explain where each target value came from and preserve its business meaning.

Compare the normalized business identifiers against the destination records. For an invoice, verify the intended invoice number, order references, currency, and supplier identity. For an ASN, verify the shipment and purchase order references. Use exact values rather than a description search that might find a similarly named record. Preserve leading zeroes and any partner-defined formatting.

If the ERP write timed out, query its stable external reference before retrying. A remote application may have committed the record even though the client never received its response. Repeating a create operation without reconciliation can generate duplicates. The EDI integration guide explains why transport receipts and confirmed application writes need separate recovery paths.

Repair rejected documents without hiding the original failure

Classify the error before editing. Structural problems may require parser or serializer changes. Implementation errors may require a profile or mapping correction. Business errors may require corrected source data or a decision by operations. An acknowledgment reader should help identify the likely layer while retaining the original reported code. It should not automatically substitute a plausible value for a missing business fact.

Create a correction from the appropriate source and pin the new mapping or profile version. Validate the corrected artifact, review what changed, and apply the partner's required replacement or resubmission semantics. The previous rejection remains part of the document history. A correction is successful only after the new expected evidence arrives, not when the user clicks a retry button.

Capture the root cause in an actionable category: source export missing a field, item crosswalk incomplete, guide version mismatch, serializer count defect, or partner master-data issue. Use that information to prevent recurrence. Counting every error as “EDI failed” makes it impossible to tell whether reliability work belongs in software, warehouse process, or partner onboarding.

Design an operator-friendly acknowledgment dashboard

The main list should show the business reference, partner, document type, environment, technical outcome, business outcome, age, and exception owner. Let users filter missing, rejected, unmatched, and conflicting responses. A document detail view should connect the original file to validation, mapping, delivery attempts, acknowledgments, and application evidence in one readable timeline.

Use labels that name the layer: “transport receipt verified,” “997 accepted,” or “business processing pending.” Include plain explanations for unfamiliar codes and accessible text alongside color. A green icon alone is insufficient, especially when a user is investigating a mixed group outcome or using assistive technology. Provide redacted export options that preserve controls and error locations without exposing unnecessary commercial data.

Permissions matter because acknowledgment records can reveal customer relationships and document contents. Scope search, downloads, retries, and exception assignment to the authorized workspace. A support link must not expose another company's raw file through a guessed identifier. Audit operator resolutions and replay decisions so the team can reconstruct who changed the workflow and why.

Questions people ask about EDI acknowledgment monitoring

Does a 997 mean my invoice will be paid?

No. It supplies technical acknowledgment information in the agreed scope. Payment depends on later business and financial processing, including matching and approval. Track those outcomes separately and use the receiver's documented status sources. A positive technical response is valuable evidence, but it does not settle an invoice dispute by itself.

Should I send a 997 in response to a 997?

Do not create an acknowledgment loop. Follow the partnership's explicit acknowledgment policy for acknowledgment documents themselves. Configure generation by document type and processing role rather than replying automatically to every incoming X12 message. Test the policy with duplicate responses and unsupported document types before enabling unattended processing.

Can a 999 contain useful detail after a rejection?

Yes, where the implementation supplies it. Preserve segment, element, and contextual error information and map it back to the original document. The exact fields and codes depend on the applicable version. If the response lacks sufficient detail, report that limitation and retain the raw evidence for partner investigation.

What if an acknowledgment never arrives?

Mark the expected response overdue after the configured deadline, investigate the last confirmed processing step, and reconcile delivery before resending. Missing evidence is different from a negative acknowledgment. Check whether the route actually requires that response and whether it may be available through another agreed channel.

Can an LLM interpret EDI rejection codes?

It can help explain redacted evidence, but the authoritative interpretation comes from the applicable standard, version, and partner guide. Require exact source references for proposed meanings and verify them. Never let a generated explanation change production state or trigger a resend without deterministic correlation and the appropriate operator policy.

Primary sources

Apply the current standard, profile, and trading-partner requirements for your workflow. Each result establishes only the checks it explicitly reports.