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 Reference

The 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 Reference

This 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

ISA

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
GS

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
ST

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
B1

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
N9

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
SE

Transaction Set Trailer

SE*4*00000052~

Position Value Name Meaning
SE-01 4 Number of Included Segments
SE-02 00000052 Transaction Set Control Number
GE

Functional Group Trailer

GE*1*52~

Position Value Name Meaning
GE-01 1 Number of Transaction Sets Included
GE-02 52 Group Control Number
IEA

Interchange Control Trailer

IEA*1*000000052~

Position Value Name Meaning
IEA-01 1 Number of Included Functional Groups
IEA-02 000000052 Interchange Control Number