Digging Into X12 EDI
Let's get specific and dig into exactly how X12 EDI works by examining a simple EDI , specifically, the GF 990 Response To Load Tender (referred to as "the 990" going forward).
990 View the 990 in the X12 ReferenceThe 990 is used in logistics. Consider a carrier, i.e. a logistics company that moves freight from point A to point B for its customers. We will call this carrier Acme Trucking.
Acme Trucking has a customer, Waldo Mart, who needs freight moved. Waldo Mart needs to move a lot of freight, and would like to be able to tell Acme Trucking about it without needing to pick up the phone and call someone. In other words, they would like to automate their operations, which they will do by establishing a relationship and using EDI to exchange key documents.
To tell Acme Trucking that it needs a shipment picked up and carried from a warehouse to a distributor, Waldo Mart transmits an SM 204 Motor Carrier Load Tender EDI document to Acme Trucking.
204 View the 204 in the X12 ReferenceThis document contains all the information that Acme Trucking needs to determine if they are willing and able to carry the shipment: where it needs to get picked up, where it is going, how much it weighs, how much Waldo Mart is willing to pay for the service, and so on.
Once Acme Trucking has reviewed the information and decided whether or not they wish to carry the shipment, they must reply to Waldo Mart by sending them the 990.
The 990's role is to tell Waldo Mart whether or not Acme Trucking has accepted or declined the shipment. Here is an example EDI document that does exactly that.
GF 990 Response To Load Tender - Accepted
EDI
ISA*00* *00* *ZZ*ACME *ZZ*WALDO *250303*1506*U*00401*000000052*0*P*:~ GS*GF*ACME*WALDO*20250303*1506*52*X*004010~ ST*990*00000052~ B1*ACME*339807*20250301*A~ N9*CN*ACM12345~ SE*4*00000052~ GE*1*52~ IEA*1*000000052~
JSON
{
"heading": {
"transaction_set_header_ST": {
"transaction_set_identifier_code_01": "response_to_a_load_tender_990",
"transaction_set_control_number_02": "00000052"
},
"beginning_segment_for_booking_or_pick_up_delivery_B1": {
"standard_carrier_alpha_code_01": "ACME",
"shipment_identification_number_02": "339807",
"date_03": "20250301",
"reservation_action_code_04": "reservation_accepted_A"
},
"reference_identification_N9": {
"reference_identification_qualifier_01": "carriers_reference_number_pro_invoice_CN",
"reference_identification_02": "ACM12345"
},
"transaction_set_trailer_SE": {
"number_of_included_segments_01": 4,
"transaction_set_control_number_02": "00000052"
}
}
}
Annotated
Interchange Control Header
ISA*00* *00* *ZZ*ACME *ZZ*WALDO *250303*1506*U*00401*000000052*0*P*:~
| Position | Value | Name | Meaning |
|---|---|---|---|
| ISA-01 | 00 | Authorization Information Qualifier | No authorization information present |
| ISA-02 | Authorization Information | Blank (not used) | |
| ISA-03 | 00 | Security Information Qualifier | No security information present |
| ISA-04 | Security Information | Blank (not used) | |
| ISA-05 | ZZ | Interchange ID Qualifier (Sender) | Mutually defined |
| ISA-06 | ACME | Interchange Sender ID | |
| ISA-07 | ZZ | Interchange ID Qualifier (Receiver) | Mutually defined |
| ISA-08 | WALDO | Interchange Receiver ID | |
| ISA-09 | 250303 | Interchange Date | |
| ISA-10 | 1506 | Interchange Time | |
| ISA-11 | U | Repetition Separator | |
| ISA-12 | 00401 | Interchange Control Version Number | X12 release 004010 |
| ISA-13 | 000000052 | Interchange Control Number | |
| ISA-14 | 0 | Acknowledgment Requested | No acknowledgment requested |
| ISA-15 | P | Usage Indicator | Production data |
| ISA-16 | : | Component Element Separator |
Functional Group Header
GS*GF*ACME*WALDO*20250303*1506*52*X*004010~
| Position | Value | Name | Meaning |
|---|---|---|---|
| GS-01 | GF | Functional Identifier Code | Response to a Load Tender -- identifies this group as containing 990 documents |
| GS-02 | ACME | Application Sender's Code | |
| GS-03 | WALDO | Application Receiver's Code | |
| GS-04 | 20250303 | Date | |
| GS-05 | 1506 | Time | |
| GS-06 | 52 | Group Control Number | |
| GS-07 | X | Responsible Agency Code | Accredited Standards Committee X12 |
| GS-08 | 004010 | Version / Release / Industry Identifier Code |
Transaction Set Header
ST*990*00000052~
| Position | Value | Name | Meaning |
|---|---|---|---|
| ST-01 | 990 | Transaction Set Identifier Code | Response to a Load Tender |
| ST-02 | 00000052 | Transaction Set Control Number |
Beginning Segment for Booking or Pick-up/Delivery
B1*ACME*339807*20250301*A~
| Position | Value | Name | Meaning |
|---|---|---|---|
| B1-01 | ACME | Standard Carrier Alpha Code | |
| B1-02 | 339807 | Shipment Identification Number | |
| B1-03 | 20250301 | Date | |
| B1-04 | A | Reservation Action Code | A = Reservation Accepted |
Extended Reference Information
N9*CN*ACM12345~
| Position | Value | Name | Meaning |
|---|---|---|---|
| N9-01 | CN | Reference Identification Qualifier | Carrier's Reference Number (PRO/Invoice) |
| N9-02 | ACM12345 | Reference Identification |
Transaction Set Trailer
SE*4*00000052~
| Position | Value | Name | Meaning |
|---|---|---|---|
| SE-01 | 4 | Number of Included Segments | |
| SE-02 | 00000052 | Transaction Set Control Number |
Functional Group Trailer
GE*1*52~
| Position | Value | Name | Meaning |
|---|---|---|---|
| GE-01 | 1 | Number of Transaction Sets Included | |
| GE-02 | 52 | Group Control Number |
Interchange Control Trailer
IEA*1*000000052~
| Position | Value | Name | Meaning |
|---|---|---|---|
| IEA-01 | 1 | Number of Included Functional Groups | |
| IEA-02 | 000000052 | Interchange Control Number |