999 - Implementation Acknowledgment

Image Description

Written by Mike

October 09, 2018

The 999 Implementational Acknowledgment is a response to a previously transmitted functional group. It may identify the acceptance or rejection of the function group, transaction sets or segments. In addition to ensuring the transmitted file was syntactically correct, increasing levels of detail may be enforced by the trading partner.

Effective January 1, 2012, the 999 Implementation Acknowledgment has replaced the 997 Functional Acknowledgment. CMS did extend the compliance deadline to March 31, 2012.

So, what's the purpose of the 999 and why should I care?

As a trading partner sending EDI files, the 999 allows you to track the receipt of EDI files with the trading partner. This is critical to ensure that the trading partner hasn't lost any of your files. If you utilize the services of a Medicare Claims Clearinghouse, the failure could be between you and the Clearinghouse or between the Clearinghouse and the payer. Sending claims directly to the payer limits the failure to only between you and the payer.

As a trading partner receiving EDI files, the 999 allows your system to validate syntactically incorrect EDI files and kick them out of the front end system early. There's no reason to bog down the main processing system with garbage EDI files.

Use of the 999 implementational acknowledgment isn't mandated but most places do utilize it in some capacity. This is a must have for automatic acknowledgment between trading partners.

Here are the possible segments that make up a 999 transaction.

Control Segments

  • ISA - Interchange Control Header
  • IEA - Interchange Control Trailer
  • GS - Function Group Header
  • GE - Function Group Trailer
  • TA1 - Interchange Acknowledgment Segment

Inner Segments

  • 0100 - ST - Transaction Set Header
  • 0200 - AK1 - Functional Group Response Header
  • 0300 - AK2 - Transaction Set Response Header
  • 0400 - IK3 - Error Identification
  • 0500 - CTX - Segment Context
  • 0500 - CTX - Business Unit Identifier
  • 0600 - IK4 - Implementation Data Element Note
  • 0700 - CTX - Element Context
  • 0800 - IK5 - Transaction Set Response Trailer
  • 0900 - AK9 - Functional Group Response Trailer
  • 1000 - SE - Transaction Set Trailer

Accepted or Rejected - What to look for?

In order to determine if your 999 was accepted or rejected, you will need to review the IK5 and AK9 segments. Here are a few examples of partial 999's and a brief translation.

> Example: 999 - 3 Scenarios
  • Example 1: Accepted
  • IK5*A~
  • AK9*A*1*1*1~
  • Example 2: Accepted with errors
  • IK5*E~
  • AK9*A*1*1*1~
  • Example 3: Rejected
  • IK5*R*5~
  • AK9*R*1*1*0~

The IK501 (data element 01) and AK901 (data element 01) specify whether the identified transaction set is accepted or rejected. For your reference, see the tables below for the appropriate code and meaning.

IK501 - Transaction Set Acknowledgment Code

Code Definition
AAccepted
EAccepted But Errors Were Noted
MRejected, Message Authentication Code (MAC) Failed
RRejected
WRejected, Assurance Failed Validity Tests
XRejected, Content After Decryption Could Not Be Analyzed

AK901 - Functional Group Acknowledge Code

Code Definition
AAccepted
EAccepted, But Errors Were Noted
MRejected, Message Authentication Code (MAC) Failed
PPartially Accepted, At Least One Transaction Set Was Rejected
RRejected
WRejected, Assurance Failed Validity Tests
XRejected, Content After Decryption Could Not Be Analyzed

Here are a few complete 999 examples of what you might expect to see returned from an 837 EDI transaction.

Sample 999 - Accepted

> Example: 999 - Accepted
  • ISA*00*          *00*          *ZZ*RECEIVERID     *ZZ*SENDERID       *181006*0534*^*00501*000000011*0*P*:~
  • GS*FA*RECEIVERCODE*SENDERCODE*20181006*0534*22*X*005010X231A1~
  • ST*999*0001*005010X231A1~
  • AK1*HC*734591*005010X222A1~
  • AK2*837*734591001*005010X222A1~
  • IK5*A~
  • AK9*A*1*1*1~
  • SE*6*0001~
  • GE*1*22~
  • IEA*1*000000011~

Sample 999 - Accepted with Errors

> Example: 999 - Accepted with Errors
  • ISA*00*          *00*          *ZZ*RECEIVERID     *ZZ*SENDERID       *181006*0535*^*00501*000000011*0*P*:~
  • GS*FA*RECEIVERCODE*SENDERCODE*20181006*0535*22*X*005010X231A1~
  • ST*999*0001*005010X231A1~
  • AK1*HC*734591*005010X222A1~
  • AK2*837*734591001*005010X222A1~
  • IK3*CLM*23*2300*8~
  • CTX*CLM01:1 0702~
  • IK4*6*1073*7*Z~
  • IK5*E*5~
  • AK9*A*1*1*1~
  • SE*9*0001~
  • GE*1*22~
  • IEA*1*000000011~

Sample 999 - Rejected

> Example: 999 - Rejected
  • ISA*00*          *00*          *ZZ*RECEIVERID     *ZZ*SENDERID       *181006*0536*^*00501*000000011*0*P*:~
  • GS*FA*RECEIVERCODE*SENDERCODE*20181006*0536*22*X*005010X231A1~
  • ST*999*0001*005010X231A1~
  • AK1*HC*734591*005010X222A1~
  • AK2*837*734591001*005010X222A1~
  • IK3*CLM*23*2300*8~
  • CTX*CLM01:1 0702~
  • IK4*2*782*6*$206~
  • IK3*CLM*23*2300*8~
  • CTX*CLM01:1 0702~
  • IK4*2*782*6*$206~
  • IK5*R*5~
  • AK9*R*1*1*0~
  • SE*12*0001~
  • GE*1*22~
  • IEA*1*000000011~

Determining the status of your transaction is fairly straightforward once you know what to look for. If your transaction happened to have errors or rejections, we'll need to dig a bit deeper into the other segments contained in the 999.

Continue reading the next article where we discuss the other segments contained in the 999 that will help you interpret 999 rejections.


We hope you found this article helpful! Please reach out to us with questions/feedback.