X12 vs EDIFACT: What European Shippers Need to Know
X12 vs EDIFACT explained for freight EDI: how the two standards differ, which carriers use which, and how to map IFTMIN to EDI 204.
If you've ever received a rejected load tender file from a US-based carrier network and had no idea why, the answer is almost always this: your system spoke EDIFACT, and the carrier's system was expecting X12. X12 and EDIFACT are the two dominant syntax standards for structuring electronic business documents like load tenders, shipment status updates, and freight invoices — X12 is governed by the US-based ASC X12 committee and dominates North American carrier networks, while EDIFACT is governed by the UN and is the default across Europe and much of Asia. Both predate modern APIs by decades and still carry the bulk of contracted freight volume today.
X12 vs EDIFACT: the basic split
X12 and EDIFACT are two major EDI standards used to exchange business documents electronically. X12 is maintained by a North America-based standards group, while EDIFACT is governed by UNECE and the ISO. The dates matter here too: X12 was developed by the Accredited Standards Committee in 1979, while EDIFACT was developed by the UN Economic Commission for Europe in 1986. Neither has been retired. If you're a European shipper onboarding a US parcel carrier or a transatlantic freight forwarder, you will hit X12. If you're connecting to DSV, DB Schenker, or almost any road carrier operating inside the EU, you'll hit EDIFACT.
Don't confuse this with AS2, SOAP, or REST
X12 and EDIFACT define what's inside the message, not how it travels. AS2, SFTP, and REST APIs are transport mechanisms, and none of them are tied to a single syntax standard. A carrier can send you an EDIFACT IFTMIN document over AS2, drop it on an SFTP server, or even wrap it inside a REST API payload as a string. Knowing a carrier "has an API" tells you nothing about whether the document format you're parsing is X12, EDIFACT, or something proprietary dressed up as JSON. This confusion causes more wasted integration hours than almost anything else in carrier onboarding — teams spend weeks debugging "the API" when the real issue is a mismatched message dialect sitting on top of a working transport layer.
Structural differences side by side
The two standards are conceptually similar (segments and elements arranged in sequence) but not interoperable without a translation layer. An EDIFACT ORDERS message can't be read as an X12 850 without translation by one side or an EDI provider.
| Element | X12 | EDIFACT |
|---|---|---|
| Interchange header/footer | ISA for the header and IEA for the footer | UNB for the header and UNZ for the footer |
| Functional group | GS for the header segment and GE for the footer | UNG for the header segment and UNE for the footer, both optional |
| Document unit name | Transaction Set | Message |
| Document identifier style | 3-digit numeric code (e.g. 850) | Six-character message names rather than numeric transaction sets |
| Acknowledgment | TA1 and 997 acknowledgements | CONTRL acknowledgments, similar to the functional 997 in X12 |
| Governing body | ASC X12, accredited by ANSI | UN/CEFACT |
The freight-specific message pairs you'll actually hit
Most comparisons of X12 vs EDIFACT are written for retail EDI (purchase orders, catalogs, invoices between buyer and supplier). Carrier connectivity runs on a narrower, freight-specific set of documents. The sets that matter are the 204 (load tender), 990 (tender response), 214 (status), 210 (invoice) and 997 (acknowledgment) in X12, and IFTMIN and IFTSTA in EDIFACT.
- Load tender: X12 204 ↔ EDIFACT IFTMIN. EDI 204 is the Motor Carrier Load Tender, the shipper's request for a carrier to move a shipment.
- Tender response: X12 990 ↔ EDIFACT equivalents in the IFTMBC/IFTMSI family. EDI 990 is the carrier's response to a shipping request, confirming acceptance or rejection.
- Shipment status: X12 214 ↔ EDIFACT IFTSTA. EDI 214 provides real-time tracking updates on a shipment.
- Freight invoice: X12 210 ↔ EDIFACT INVOIC.
- Functional acknowledgment: X12 997 ↔ EDIFACT CONTRL, confirming a document arrived and parsed correctly.
If you only remember one row from that list, make it the first one. Retailers and large shippers mandate X12 in North America and EDIFACT in Europe; carriers expect 204 load tenders and return 214 status updates. That single sentence describes most of the onboarding friction European shippers run into when a contract lane suddenly routes through a North American carrier.
A worked example: reading an IFTMIN segment
Here's what an actual EDIFACT load tender header looks like at the segment level, taken from a real field-level mapping reference: UNH+1+IFTMIN:D:97A:UN reads as message reference 1, message type IFTMIN, directory D.97A, maintained by UN. Compare that to an X12 204, which carries the same load information (origin, destination, equipment, dates) but identifies itself numerically inside an ISA/GS envelope instead of a UNH segment with a six-letter message name. The underlying business content, a request to move a specific load, is identical. The syntax parsing it is not, and companies with both EU and US partners typically run both standards in parallel rather than forcing one trading partner onto the other's dialect.
This is exactly why most shippers don't hand-build a translation layer between the two. Multi-carrier TMS platforms such as MercuryGate, Descartes, Transporeon, Alpega, and Cargoson exist partly to absorb this problem, normalizing X12 and EDIFACT documents from different carriers into one internal interface so your ERP only ever has to speak one language, regardless of which dialect the carrier on the other end uses.
Why this still matters despite the push to APIs
EDI in both flavors remains entrenched for high-volume contracted freight, even as carrier platforms add REST and GraphQL options. Logistics software still runs X12 and EDIFACT document flows for 204, 214, 210, 990, DESADV and IFTSTA, alongside AS2 connectivity and REST/GraphQL APIs for partners who have moved past EDI, because in 2026 logistics data exchange still largely means EDI. European shippers will also occasionally run into regional variants layered on top of this split: TRADACOMS is occasionally used for UK-specific logistics needs, and manufacturing-heavy supply chains add ODETTE and VDA on top of X12 and EDIFACT. None of these replace the core X12/EDIFACT divide; they sit alongside it.
FAQ
Is EDIFACT being replaced by X12, or the other way around?
Neither. EDIFACT is not replacing X12, and both standards continue to coexist, with X12 remaining dominant in North America and EDIFACT leading global trade.
Can one AS2 connection carry both X12 and EDIFACT messages?
Yes. AS2 is a transport protocol, not a syntax, so the same AS2 endpoint can move either document type as long as your translator or mapping engine knows how to parse both on arrival.
Do I need to support both standards as a European shipper?
If you only move freight within the EU, EDIFACT alone may cover you. The moment a lane touches a US-based carrier, forwarder, or parcel network, you need X12 capability too. Most global manufacturers end up needing both standards, since even a roughly 80/20 X12-to-EDIFACT split shifts quickly as international channels are added.
What's the real difference between an X12 850 and an EDIFACT ORDERS message?
Same business document, a purchase order, different syntax. An X12 Purchase Order is 850, while an EDIFACT Purchase Order is often called ORDERS. The content maps roughly one to one; the wrapper and segment rules do not.
Will carrier APIs eventually replace both standards entirely?
Not in the near term. High-volume contracted lanes, legacy ERP integrations, and carrier back-office systems are built around EDI, and the realistic path for most shippers is a hybrid stack running EDI and API side by side for years, not a clean cutover to one or the other.
If you're currently mapping a new carrier and unsure which dialect you'll hit, the fastest way to find out is to ask for a sample interchange file before you write a line of mapping code. A UNB segment versus an ISA segment in the first few bytes tells you everything about which rulebook you're dealing with.