997 Functional Acknowledgment

Functional Group ID=FA

Introduction:

This Draft Standard for Trial Use contains the format and establishes the data contents of the Functional 

Acknowledgment Transaction Set (997) for use within the context of an Electronic Data Interchange (EDI) 

environment. The transaction set can be used to define the control structures for a set of acknowledgments 

to indicate the results of the syntactical analysis of the electronically encoded documents. The encoded 

documents are the transaction sets, which are grouped in functional groups, used in defining transactions for 

business data interchange. This standard does not cover the semantic meaning of the information encoded in 

the transaction sets.

Notes:

1. Use this implementation convention (IC) to acknowledge receipt, and acceptance or rejection of a 

functional group and the transaction set(s) contained within it based upon EDI translation software syntax 

edits.

2. This IC incorporates the Proposed DLMS Change (PDC) and Approved DLMS Change (ADC) listed. 

PDCs/ADCs are available from the Enterprise Business Standards Office (EBSO) Website: 

https://www.dla.mil/HQ/InformationOperations/DLMS/elibrary/Transformats/140_997/ 

- ADC 1345 Administrative Update to Convert Federal 856 ASN, 857, 861, and 997 to DLMS ICs. ADC 

1345 converts the Federal IC 997 to a DLMS IC 997. No transaction usage changes are made by ADC 1345

Page Pos. Seg. Req. Loop Notes and

No. No. ID Name Des. Max.Use Repeat Comments

3 010 ST Transaction Set Header M 1 n1

4 020 AK1 Functional Group Response Header M 1 n2

LOOP ID - AK2 999999

5 030 AK2 Transaction Set Response Header O 1 n3

LOOP ID - AK3 999999

6 040 AK3 Data Segment Note O 1 c1

7 050 AK4 Data Element Note O 99

9 060 AK5 Transaction Set Response Trailer M 1

10 070 AK9 Functional Group Response Trailer M 1

12 080 SE Transaction Set Trailer M 1

Transaction Set Notes

1. These acknowledgments shall not be acknowledged, thereby preventing an endless cycle of 

acknowledgments of acknowledgments. Nor shall a Functional Acknowledgment be sent to report 

errors in a previous Functional Acknowledgment.

41F997_1_ADC_1345 July 08, 2019
The Functional Group Header Segment (GS) is used to start the envelope for the Functional 

Acknowledgment Transaction Sets. In preparing the functional group of acknowledgments, the 

application sender's code and the application receiver's code, taken from the functional group being 

acknowledged, are exchanged; therefore, one acknowledgment functional group responds to only 

those functional groups from one application receiver's code to one application sender's code.

There is only one Functional Acknowledgment Transaction Set per acknowledged functional group.

2. AK1 is used to respond to the functional group header and to start the acknowledgement for a 

functional group. There shall be one AK1 segment for the functional group that is being acknowledged.

3. AK2 is used to start the acknowledgement of a transaction set within the received functional group. 

The AK2 segments shall appear in the same order as the transaction sets in the functional group that 

has been received and is being acknowledged.

Transaction Set Comments

1. The data segments of this standard are used to report the results of the syntactical analysis of the 

functional groups of transaction sets; they report the extent to which the syntax complies with the 

standards for transaction sets and functional groups. They do not report on the semantic meaning of 

the transaction sets (for example, on the ability of the receiver to comply with the request of the 

sender).

41F997_1_ADC_1345 2 July 08, 2019
Segment: ST Transaction Set Header

Position: 010

Loop:

Level:

Usage: Mandatory

Max Use: 1

Purpose: To indicate the start of a transaction set and to assign a control number

Syntax Notes:

Semantic Notes: 1 The transaction set identifier (ST01) is used by the translation routines of the 

interchange partners to select the appropriate transaction set definition (e.g., 

810 selects the Invoice Transaction Set).

Comments:

Data Element Summary

Ref. Data

Des. Element Name Attributes

M ST01 143 Transaction Set Identifier Code M ID 3/3

Code uniquely identifying a Transaction Set

 997 Functional Acknowledgment

M ST02 329 Transaction Set Control Number M AN 4/9

Identifying control number that must be unique within the transaction set 

functional group assigned by the originator for a transaction set

Use to transmit a unique number assigned by the originator of the 

transaction set. The number may be system generated. This same 

number will be cited in SE02.

41F997_1_ADC_1345 3 July 08, 2019
Segment: AK1 Functional Group Response Header

Position: 020

Loop:

Level:

Usage: Mandatory

Max Use: 1

Purpose: To start acknowledgment of a functional group

Syntax Notes:

Semantic Notes: 1 AK101 is the functional ID found in the GS segment (GS01) in the functional 

group being acknowledged.

2 AK102 is the functional group control number found in the GS segment in the 

functional group being acknowledged.

Comments:

Notes: 1. Use to identify the unique identification number of the functional group in 

which the transaction set(s) being acknowledged was received.

2. Only one functional group may be referenced in a single 997 acknowledgment 

transaction set.

Data Element Summary

Ref. Data

Des. Element Name Attributes

M AK101 479 Functional Identifier Code M ID 2/2

Code identifying a group of application related transaction sets

Cite, using the appropriate code from the X12 code list, the functional 

group ID found in GS01 of the functional group being acknowledged.

Refer to 004010 Data Element Dictionary for acceptable code values.

M AK102 28 Group Control Number M N0 1/9

Assigned number originated and maintained by the sender

Use to identify the number cited in GS06 of the functional group being 

acknowledged.

41F997_1_ADC_1345 4 July 08, 2019
Segment: AK2 Transaction Set Response Header

Position: 030

Loop: AK2 Optional

Level:

Usage: Optional

Max Use: 1

Purpose: To start acknowledgment of a single transaction set

Syntax Notes:

Semantic Notes: 1 AK201 is the transaction set ID found in the ST segment (ST01) in the 

transaction set being acknowledged.

2 AK202 is the transaction set control number found in the ST segment in the 

transaction set being acknowledged.

Comments:

Notes: 1. Use to identify the unique identification number of the transaction set being 

acknowledged.

2. AK2 and AK5 shall be provided for each transaction set that is accepted.

3. Also, AK2 and AK5 shall be provided for each transaction set being rejected 

for containing a syntactical error.

Data Element Summary

Ref. Data

Des. Element Name Attributes

M AK201 143 Transaction Set Identifier Code M ID 3/3

Code uniquely identifying a Transaction Set

Refer to 004010 Data Element Dictionary for acceptable code values.

M AK202 329 Transaction Set Control Number M AN 4/9

Identifying control number that must be unique within the transaction set 

functional group assigned by the originator for a transaction set

Use to identify the number cited in SE02/ST02 of the transaction set 

being acknowledged.

41F997_1_ADC_1345 5 July 08, 2019
Segment: AK3 Data Segment Note

Position: 040

Loop: AK3 Optional

Level:

Usage: Optional

Max Use: 1

Purpose: To report errors in a data segment and identify the location of the data segment

Syntax Notes:

Semantic Notes:

Comments:

Notes: This 1/AK3/040 loop shall be used only to identify one or more segments 

containing syntactical errors resulting in rejection of the transaction set or 

functional group. This loop shall not be used when transaction set and 

functional group receipt and acceptance is being acknowledged.

Data Element Summary

Ref. Data

Des. Element Name Attributes

M AK301 721 Segment ID Code M ID 2/3

Code defining the segment ID of the data segment in error (See Appendix 

A - Number 77)

Use to identify the segment containing syntactical errors, as it appears 

in the ASC X12 Data Segment Dictionary, e.g., DTM, N1, REF, etc.

M AK302 719 Segment Position in Transaction Set M N0 1/6

The numerical count position of this data segment from the start of the 

transaction set: the transaction set header is count position 1

Use to identify the segment's sequential position within the data stream 

of the transaction set as transmitted. This number is not the segment's 

position number portrayed in the transaction set structure. For 

example, if the segments used in an 810 request for progress payment 

were as follows: ST, BIG, REF, N1, N1, PER, ITD, DTM, IT1, IT1, 

SLN, SLN, SLN, TDS, CTT, SE, and there was a syntax error in the 

second use of the N1 segment, the number cited would be 5. If the 

syntax error was in the third use of the SLN segment, the number cited 

would be 13.

AK303 447 Loop Identifier Code O AN 1/6

The loop ID number given on the transaction set diagram is the value for 

this data element in segments LS and LE

AK304 720 Segment Syntax Error Code O ID 1/3

Code indicating error found based on the syntax editing of a segment

Use only when a segment is being rejected, to identify the basis for 

rejection. Do not use when the error is in a data element within the 

segment and editing is being done at least to that level.

Refer to 004010 Data Element Dictionary for acceptable code values.

41F997_1_ADC_1345 6 July 08, 2019
Segment: AK4 Data Element Note

Position: 050

Loop: AK3 Optional

Level:

Usage: Optional

Max Use: 99

Purpose: To report errors in a data element or composite data structure and identify the 

location of the data element

Syntax Notes:

Semantic Notes: 1 In no case shall a value be used for AK404 that would generate a syntax error, 

e.g., an invalid character.

Comments:

Notes: Use to identify an error with a data element. When used, there must be a use of 

the AK3 segment citing the segment in which the data element with the error 

appears. Use multiple occurrences of this segment to identify all data element 

errors within the segment specified in the preceding AK3 segment.

Data Element Summary

Ref. Data

Des. Element Name Attributes

M AK401 C030 Position in Segment M

Code indicating the relative position of a simple data element, or the 

relative position of a composite data structure combined with the relative 

position of the component data element within the composite data 

structure, in error; the count starts with 1 for the simple data element or 

composite data structure immediately following the segment ID

M C03001 722 Element Position in Segment M N0 1/2

This is used to indicate the relative position of a simple data element, or 

the relative position of a composite data structure with the relative position 

of the component within the composite data structure, in error; in the data 

segment the count starts with 1 for the simple data element or composite 

data structure immediately following the segment ID

Use to indicate the position of the data element, within the segment, 

containing the error, e.g., 3, 12, etc.

C03002 1528 Component Data Element Position in Composite O N0 1/2

To identify the component data element position within the composite that 

is in error

Must Use AK402 725 Data Element Reference Number O N0 1/4

Reference number used to locate the data element in the Data Element 

Dictionary

Use to identify the data element number as it appears in the ASC X12 

Data Element Dictionary, for example, the data element number for 

N101 is 98, the data element number for N103 is 66.

M AK403 723 Data Element Syntax Error Code M ID 1/3

Code indicating the error found after syntax edits of a data element

41F997_1_ADC_1345 7 July 08, 2019
Refer to 004010 Data Element Dictionary for acceptable code values.

AK404 724 Copy of Bad Data Element O AN 1/99

This is a copy of the data element in error

41F997_1_ADC_1345 8 July 08, 2019
Segment: AK5 Transaction Set Response Trailer

Position: 060

Loop: AK2 Optional

Level:

Usage: Mandatory

Max Use: 1

Purpose: To acknowledge acceptance or rejection and report errors in a transaction set

Syntax Notes:

Semantic Notes:

Comments:

Notes: Use to indicate whether the transaction set indicated in the corresponding AK2 

segment was accepted or rejected. If the transaction set is being rejected, use this 

segment to identify up to five (5) syntax errors at the transaction level.

Data Element Summary

Ref. Data

Des. Element Name Attributes

M AK501 717 Transaction Set Acknowledgment Code M ID 1/1

Code indicating accept or reject condition based on the syntax editing of 

the transaction set

Refer to 004010 Data Element Dictionary for acceptable code values.

AK502 718 Transaction Set Syntax Error Code O ID 1/3

Code indicating error found based on the syntax editing of a transaction set

1. Use only when a transaction set is being rejected, to identify the basis 

for rejection. If multiple codes apply, they may be carried in AK503 

through AK506, as necessary. No individual code may be used more 

than once in a single use of this segment. 

2. Use code 5 when the 1/AK3/040 loop is not used and syntactical 

errors occurred below the transaction set level.

Refer to 004010 Data Element Dictionary for acceptable code values.

AK503 718 Transaction Set Syntax Error Code O ID 1/3

Code indicating error found based on the syntax editing of a transaction set

Refer to 004010 Data Element Dictionary for acceptable code values.

AK504 718 Transaction Set Syntax Error Code O ID 1/3

Code indicating error found based on the syntax editing of a transaction set

Refer to 004010 Data Element Dictionary for acceptable code values.

AK505 718 Transaction Set Syntax Error Code O ID 1/3

Code indicating error found based on the syntax editing of a transaction set

Refer to 004010 Data Element Dictionary for acceptable code values.

AK506 718 Transaction Set Syntax Error Code O ID 1/3

Code indicating error found based on the syntax editing of a transaction set

Refer to 004010 Data Element Dictionary for acceptable code values.

41F997_1_ADC_1345 9 July 08, 2019
Segment: AK9 Functional Group Response Trailer

Position: 070

Loop:

Level:

Usage: Mandatory

Max Use: 1

Purpose: To acknowledge acceptance or rejection of a functional group and report the 

number of included transaction sets from the original trailer, the accepted sets, and 

the received sets in this functional group

Syntax Notes:

Semantic Notes:

Comments: 1 If AK901 contains the value "A" or "E", then the transmitted functional group is 

accepted.

Notes: 1. Use only to indicate whether the functional group was accepted or rejected 

based on syntax errors in the functional group header or trailer.

2. If a functional group is rejected, all transaction sets within that group must be 

rejected using the AK9. In this case, individual AK2s for the rejected transaction 

sets need not be provided.

3. If the functional group is being rejected, use to identify up to five (5) syntax 

errors at the functional group level.

Data Element Summary

Ref. Data

Des. Element Name Attributes

M AK901 715 Functional Group Acknowledge Code M ID 1/1

Code indicating accept or reject condition based on the syntax editing of 

the functional group

Refer to 004010 Data Element Dictionary for acceptable code values.

M AK902 97 Number of Transaction Sets Included M N0 1/6

Total number of transaction sets included in the functional group or 

interchange (transmission) group terminated by the trailer containing this 

data element

M AK903 123 Number of Received Transaction Sets M N0 1/6

Number of Transaction Sets received

M AK904 2 Number of Accepted Transaction Sets M N0 1/6

Number of accepted Transaction Sets in a Functional Group

AK905 716 Functional Group Syntax Error Code O ID 1/3

Code indicating error found based on the syntax editing of the functional 

group header and/or trailer

1. Use only when a functional group is being rejected to identify the 

basis for rejection. 

2. Codes may also be carried in AK906 through AK909, but no 

41F997_1_ADC_1345 10 July 08, 2019
individual code may be used more than once in a single iteration of this 

segment. 

Refer to 004010 Data Element Dictionary for acceptable code values.

AK906 716 Functional Group Syntax Error Code O ID 1/3

Code indicating error found based on the syntax editing of the functional 

group header and/or trailer

Refer to 004010 Data Element Dictionary for acceptable code values.

AK907 716 Functional Group Syntax Error Code O ID 1/3

Code indicating error found based on the syntax editing of the functional 

group header and/or trailer

Refer to 004010 Data Element Dictionary for acceptable code values.

AK908 716 Functional Group Syntax Error Code O ID 1/3

Code indicating error found based on the syntax editing of the functional 

group header and/or trailer

Refer to 004010 Data Element Dictionary for acceptable code values.

AK909 716 Functional Group Syntax Error Code O ID 1/3

Code indicating error found based on the syntax editing of the functional 

group header and/or trailer

Refer to 004010 Data Element Dictionary for acceptable code values.

41F997_1_ADC_1345 11 July 08, 2019
Segment: SE Transaction Set Trailer

Position: 080

Loop:

Level:

Usage: Mandatory

Max Use: 1

Purpose: To indicate the end of the transaction set and provide the count of the transmitted 

segments (including the beginning (ST) and ending (SE) segments)

Syntax Notes:

Semantic Notes:

Comments: 1 SE is the last segment of each transaction set.

Data Element Summary

Ref. Data

Des. Element Name Attributes

M SE01 96 Number of Included Segments M N0 1/10

Total number of segments included in a transaction set including ST and 

SE segments

M SE02 329 Transaction Set Control Number M AN 4/9

Identifying control number that must be unique within the transaction set 

functional group assigned by the originator for a transaction set

Use the same number cited in ST02.

41F997_1_ADC_1345 12 July 08, 2019