Canadian Pacific
/
Functional Acknowledgment
  • Specification
  • EDI Inspector
Import guide into your account
Stedi maintains this guide based on public documentation from Canadian Pacific. Contact Canadian Pacific for official EDI specifications. To report any errors in this guide, please contact us.
Go to Stedi Network
Canadian Pacific logo

X12 997 Functional Acknowledgment

X12 Release 7010

This X12 Transaction Set 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.

Delimiters
  • ~ Segment
  • * Element
  • > Component
  • ^ Repetition
EDI sample
  • Sample
View the latest version of this implementation guide as an interactive webpage
https://www.stedi.com/app/guides/view/canadian-pacific/functional-acknowledgment/01H66FVA7DYW2YBDW9EHVZ9TW6
Powered by
Build EDI implementation guides at stedi.com
Overview
ISA
-
Interchange Control Header
Max use 1
Required
GS
-
Functional Group Header
Max use 1
Required
heading
ST
0100
Transaction Set Header
Max use 1
Required
AK1
0200
Functional Group Response Header
Max use 1
Required
AK2 Loop
AK9
0700
Functional Group Response Trailer
Max use 1
Required
SE
0800
Transaction Set Trailer
Max use 1
Required
GE
-
Functional Group Trailer
Max use 1
Required
IEA
-
Interchange Control Trailer
Max use 1
Required
ISA

Interchange Control Header

RequiredMax use 1

To start and identify an interchange of zero or more functional groups and interchange-related control segments

Example
ISA-01
I01
Authorization Information Qualifier
Required
Identifier (ID)

Code identifying the type of information in the Authorization Information

00
No Authorization Information Present (No Meaningful Information in I02)
ISA-02
I02
Authorization Information
Required
String (AN)
Min 10Max 10

Information used for additional identification or authorization of the interchange sender or the data in the interchange; the type of information is set by the Authorization Information Qualifier (I01)

ISA-03
I03
Security Information Qualifier
Required
Identifier (ID)

Code identifying the type of information in the Security Information

00
No Security Information Present (No Meaningful Information in I04)
ISA-04
I04
Security Information
Required
String (AN)
Min 10Max 10

This is used for identifying the security information about the interchange sender or the data in the interchange; the type of information is set by the Security Information Qualifier (I03)

ISA-05
I05
Interchange ID Qualifier
Required
Identifier (ID)
Min 2Max 2

Code indicating the system/method of code structure used to designate the sender or receiver ID element being qualified

Codes
ISA-06
I06
Interchange Sender ID
Required
String (AN)
Min 15Max 15

Identification code published by the sender for other parties to use as the receiver ID to route data to them; the sender always codes this value in the sender ID element

ISA-07
I05
Interchange ID Qualifier
Required
Identifier (ID)
Min 2Max 2

Code indicating the system/method of code structure used to designate the sender or receiver ID element being qualified

Codes
ISA-08
I07
Interchange Receiver ID
Required
String (AN)
Min 15Max 15

Identification code published by the receiver of the data; When sending, it is used by the sender as their sending ID, thus other parties sending to them will use this as a receiving ID to route data to them

ISA-09
I08
Interchange Date
Required
Date (DT)
YYMMDD format

Date of the interchange

ISA-10
I09
Interchange Time
Required
Time (TM)
HHMM format

Time of the interchange

ISA-11
I65
Repetition Separator
Required
String (AN)
Min 1Max 1

Type is not applicable; the repetition separator is a delimiter and not a data element; this field provides the delimiter used to separate repeated occurrences of a simple data element or a composite data structure; this value must be different than the data element separator, component element separator, and the segment terminator

^
Repetition Separator
ISA-12
I11
Interchange Control Version Number Code
Required
Identifier (ID)

Code specifying the version number of the interchange control segments

00701
Standards Approved for Publication by ASC X12 Procedures Review Board through October 2013
ISA-13
I12
Interchange Control Number
Required
Numeric (N0)
Min 9Max 9

A control number assigned by the interchange sender

ISA-14
I13
Acknowledgment Requested Code
Required
Identifier (ID)
Min 1Max 1

Code indicating sender's request for an interchange acknowledgment

0
No Interchange Acknowledgment Requested
1
Interchange Acknowledgment Requested (TA1)
2
Interchange Acknowledgment Requested only when Interchange is "Rejected Because Of Errors"
3
Interchange Acknowledgment Requested only when Interchange is "Rejected Because Of Errors" or "Accepted but Errors are Noted"
ISA-15
I14
Interchange Usage Indicator Code
Required
Identifier (ID)
Min 1Max 1

Code indicating whether data enclosed by this interchange envelope is test, production or information

I
Information
P
Production Data
T
Test Data
ISA-16
I15
Component Element Separator
Required
String (AN)
Min 1Max 1

Type is not applicable; the component element separator is a delimiter and not a data element; this field provides the delimiter used to separate component data elements within a composite data structure; this value must be different than the data element separator and the segment terminator

>
Component Element Separator

Functional Group Header

RequiredMax use 1

To indicate the beginning of a functional group and to provide control information

Example
GS-01
479
Functional Identifier Code
Required
Identifier (ID)

Code identifying a group of application related transaction sets

FA
Functional or Implementation Acknowledgment Transaction Sets (997, 999)
GS-02
142
Application Sender's Code
Required
String (AN)
Min 2Max 15

Code identifying party sending transmission; codes agreed to by trading partners

GS-03
124
Application Receiver's Code
Required
String (AN)
Min 2Max 15

Code identifying party receiving transmission; codes agreed to by trading partners

GS-04
373
Date
Required
Date (DT)
CCYYMMDD format

Date expressed as CCYYMMDD where CC represents the first two digits of the calendar year

GS-05
337
Time
Required
Time (TM)
HHMM, HHMMSS, HHMMSSD, or HHMMSSDD format

Time expressed in 24-hour clock time as follows: HHMM, or HHMMSS, or HHMMSSD, or HHMMSSDD, where H = hours (00-23), M = minutes (00-59), S = integer seconds (00-59) and DD = decimal seconds; decimal seconds are expressed as follows: D = tenths (0-9) and DD = hundredths (00-99)

GS-06
28
Group Control Number
Required
Numeric (N0)
Min 1Max 9

Assigned number originated and maintained by the sender

GS-07
455
Responsible Agency Code
Required
Identifier (ID)
Min 1Max 2

Code identifying the issuer of the standard; this code is used in conjunction with Data Element 480

T
Transportation Data Coordinating Committee (TDCC)
X
Accredited Standards Committee X12
GS-08
480
Version / Release / Industry Identifier Code
Required
String (AN)

Code indicating the version, release, subrelease, and industry identifier of the EDI standard being used, including the GS and GE segments; if code in DE455 in GS segment is X, then in DE 480 positions 1-3 are the version number; positions 4-6 are the release and subrelease, level of the version; and positions 7-12 are the industry or trade association identifiers (optionally assigned by user); if code in DE455 in GS segment is T, then other formats are allowed

007010
Standards Approved for Publication by ASC X12 Procedures Review Board through October 2013

Heading

ST
0100
Heading > ST

Transaction Set Header

RequiredMax use 1

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

  • 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.
  • There is only one Functional Acknowledgment Transaction Set per acknowledged functional group.
  • Only one acknowledgement can be sent for each functional group. The acknowledgment can be either a single Transaction Set 997 or a single Transaction Set 999 as mutually agreed upon by the trading partners. Different Functional Groups may have different acknowledgements, e.g. some Functional Groups, within the same interchange, may be acknowledged with the 997 and others with the 999.
Example
ST-01
143
Transaction Set Identifier Code
Required
Identifier (ID)

Code identifying a Transaction Set

  • 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).
997
Functional Acknowledgment
ST-02
329
Transaction Set Control Number
Required
Numeric (N)
Min 4Max 9

Identifying control number that must be unique within the transaction set functional group assigned by the originator for a transaction set

AK1
0200
Heading > AK1

Functional Group Response Header

RequiredMax use 1

To start acknowledgment of a functional group

  • AK1 is used to respond to the functional group header and to start the acknowledgment for a functional group. There shall be one AK1 segment for the functional group that is being acknowledged.
  • The Functional Acknowledgement is generated at the point of translation, intended for the originator (not any intermediate parties).
  • 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.
Example
AK1-01
479
Functional Identifier Code
Required
Identifier (ID)
Min 2Max 2

Code identifying a group of application related transaction sets

  • AK101 is the functional ID found in the GS segment (GS01) in the functional group being acknowledged.
AK1-02
28
Group Control Number
Required
Numeric (N0)
Min 1Max 9

Assigned number originated and maintained by the sender

  • AK102 is the functional group control number found in the GS segment in the functional group being acknowledged.
AK1-03
480
Version / Release / Industry Identifier Code
Optional
String (AN)
Min 1Max 12

Code indicating the version, release, subrelease, and industry identifier of the EDI standard being used, including the GS and GE segments; if code in DE455 in GS segment is X, then in DE 480 positions 1-3 are the version number; positions 4-6 are the release and subrelease, level of the version; and positions 7-12 are the industry or trade association identifiers (optionally assigned by user); if code in DE455 in GS segment is T, then other formats are allowed

  • AK103 is the version release industry identifier code in the GS segment (GS08) in the functional group being acknowledged.
AK2 Loop
OptionalMax >1
AK2
0300
Heading > AK2 Loop > AK2

Transaction Set Response Header

RequiredMax use 1

To start acknowledgment of a single transaction set

  • AK2 is used to start the acknowledgment 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.
Example
AK2-01
143
Transaction Set Identifier Code
Required
Identifier (ID)
Min 3Max 3

Code identifying a Transaction Set

  • AK201 is the transaction set ID found in the ST segment (ST01) in the transaction set being acknowledged.
AK2-02
329
Transaction Set Control Number
Required
Numeric (N)
Min 4Max 9

Identifying control number that must be unique within the transaction set functional group assigned by the originator for a transaction set

  • AK202 is the transaction set control number found in the ST segment in the transaction set being acknowledged.
AK2-03
1705
Implementation Convention Reference
Optional
String (AN)
Min 1Max 35

Reference assigned to identify Implementation Convention

  • AK203 is the implementation convention reference, if any, found in the ST segment (ST03) in the transaction set being acknowledged.
AK3 Loop
OptionalMax >1
AK3
0400
Heading > AK2 Loop > AK3 Loop > AK3

Data Segment Note

RequiredMax use 1

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

  • 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 or proper subsets of 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).
Example
AK3-01
721
Segment ID Code
Required
Identifier (ID)
Min 2Max 3

Code specifying the segment ID of the data segment in error (See Appendix A - Number 77)

AK3-02
719
Segment Position in Transaction Set
Required
Numeric (N0)
Min 1Max 10

The numerical count position of this data segment from the start of the transaction set: the transaction set header is count position 1

AK3-03
447
Loop Identifier Code
Optional
String (AN)
Min 1Max 6

The loop ID number given on the transaction set diagram is the value for this data element in segments LS and LE

AK3-04
720
Segment Syntax Error Code
Optional
Identifier (ID)
Min 1Max 3

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

AK4
0500
Heading > AK2 Loop > AK3 Loop > AK4

Data Element Note

OptionalMax use 99

To report errors in a data element or composite data structure and identify the location of the data element

Example
AK4-01
C030
Position in Segment
RequiredMax use 1
Code indicating the relative position of the simple data element or composite data structure in error within a segment, count beginning with 1 for the position immediately following the segment ID; additionally indicating the relative position of a repeating structure in error, count beginning with 1 for the position immediately following the preceding element separator; additionally indicating the relative position of a component of a composite data structure in error, count beginning with 1 for the position following the preceding element or repetition separator
C030-01
722
Element Position in Segment
Required
Numeric (N0)
Min 1Max 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

C030-02
1528
Component Data Element Position in Composite
Optional
Numeric (N0)
Min 1Max 2

To identify the component data element position within the composite that is in error

C030-03
1686
Repeating Data Element Position
Optional
Numeric (N0)
Min 1Max 4

To identify the specific repetition of a data element that is in error

AK4-02
725
Data Element Reference Code
Optional
String (AN)
Min 1Max 4

Code identifying the location of the data element in the Data Element Dictionary

AK4-03
723
Data Element Syntax Error Code
Required
Identifier (ID)
Min 1Max 3

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

AK4-04
724
Copy of Bad Data Element
Optional
String (AN)
Min 1Max 99

This is a copy of the data element in error

  • In no case shall a value be used for AK404 that would generate a syntax error, e.g., an invalid character.
AK3 Loop end
AK5
0600
Heading > AK2 Loop > AK5

Transaction Set Response Trailer

RequiredMax use 1

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

Example
AK5-01
717
Transaction Set Acknowledgment Code
Required
Identifier (ID)
Min 1Max 1

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

AK5-02
718
Transaction Set Syntax Error Code
Optional
Identifier (ID)
Min 1Max 3

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

AK5-03
718
Transaction Set Syntax Error Code
Optional
Identifier (ID)
Min 1Max 3

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

AK5-04
718
Transaction Set Syntax Error Code
Optional
Identifier (ID)
Min 1Max 3

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

AK5-05
718
Transaction Set Syntax Error Code
Optional
Identifier (ID)
Min 1Max 3

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

AK5-06
718
Transaction Set Syntax Error Code
Optional
Identifier (ID)
Min 1Max 3

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

AK2 Loop end
AK9
0700
Heading > AK9

Functional Group Response Trailer

RequiredMax use 1

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

Example
AK9-01
715
Functional Group Acknowledge Code
Required
Identifier (ID)
Min 1Max 1

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

  • If AK901 contains the value "A" or "E", then the transmitted functional group is accepted.
AK9-02
97
Number of Transaction Sets Included
Required
Numeric (N0)
Min 1Max 6

Total number of transaction sets included in the functional group or interchange (transmission) group terminated by the trailer containing this data element

AK9-03
123
Number of Received Transaction Sets
Required
Numeric (N0)
Min 1Max 6

Number of Transaction Sets received

AK9-04
2
Number of Accepted Transaction Sets
Required
Numeric (N0)
Min 1Max 6

Number of accepted Transaction Sets in a Functional Group

AK9-05
716
Functional Group Syntax Error Code
Optional
Identifier (ID)
Min 1Max 3

Code indicating error found based on the syntax editing of the functional group header and/or trailer

AK9-06
716
Functional Group Syntax Error Code
Optional
Identifier (ID)
Min 1Max 3

Code indicating error found based on the syntax editing of the functional group header and/or trailer

AK9-07
716
Functional Group Syntax Error Code
Optional
Identifier (ID)
Min 1Max 3

Code indicating error found based on the syntax editing of the functional group header and/or trailer

AK9-08
716
Functional Group Syntax Error Code
Optional
Identifier (ID)
Min 1Max 3

Code indicating error found based on the syntax editing of the functional group header and/or trailer

AK9-09
716
Functional Group Syntax Error Code
Optional
Identifier (ID)
Min 1Max 3

Code indicating error found based on the syntax editing of the functional group header and/or trailer

SE
0800
Heading > SE

Transaction Set Trailer

RequiredMax use 1

To indicate the end of the transaction set and provide the count of the transmitted segments (including the beginning (ST) and ending (SE) segments)

Example
SE-01
96
Number of Included Segments
Required
Numeric (N0)
Min 1Max 10

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

SE-02
329
Transaction Set Control Number
Required
Numeric (N)
Min 4Max 9

Identifying control number that must be unique within the transaction set functional group assigned by the originator for a transaction set

Heading end

Functional Group Trailer

RequiredMax use 1

To indicate the end of a functional group and to provide control information

Example
GE-01
97
Number of Transaction Sets Included
Required
Numeric (N0)
Min 1Max 6

Total number of transaction sets included in the functional group or interchange (transmission) group terminated by the trailer containing this data element

GE-02
28
Group Control Number
Required
Numeric (N0)
Min 1Max 9

Assigned number originated and maintained by the sender

Interchange Control Trailer

RequiredMax use 1

To define the end of an interchange of zero or more functional groups and interchange-related control segments

Example
IEA-01
I16
Number of Included Functional Groups
Required
Numeric (N0)
Min 1Max 5

A count of the number of functional groups included in an interchange

IEA-02
I12
Interchange Control Number
Required
Numeric (N0)
Min 9Max 9

A control number assigned by the interchange sender

EDI Samples

Sample

ISA*00* *00* *ZZ*SENDER *ZZ*RECEIVER *231102*0350*^*00701*000000001*0*T*>
GS*FA*SENDERGS*RECEIVERGS*20231102*035046*000000001*X*007010
ST*997*0001
AK1*SR*34567
AK2*404*345670001
AK5*A
AK9*A*1*1*1
SE*6*0001
GE*1*000000001
IEA*1*000000001

Stedi is a registered trademark of Stedi, Inc. All names, logos, and brands of third parties listed on this page are trademarks of their respective owners (including “X12”, which is a trademark of X12 Incorporated). Stedi, Inc. and its products and services are not endorsed by, sponsored by, or affiliated with these third parties. Use of these names, logos, and brands is for identification purposes only, and does not imply any such endorsement, sponsorship, or affiliation.