Treadstone Associates
Article · 11 min read

EDI in logistics, explained plainly

A small carrier does not need EDI to exist. It needs EDI the day a customer worth keeping makes it a condition of onboarding.

Treadstone Associates · Updated 2026

Key takeaways

  • • EDI messages in North American road freight are X12 transaction sets — 204 tender, 990 response, 214 status, 210 invoice, 997 acknowledgment.
  • • A 997 means the file parsed. It does not mean the load was accepted; that is the 990.
  • • Crossing into Canada, advance commercial information must reach the CBSA at least one hour before arrival at the port of entry.
  • • Carriers using EDI or a service provider are eligible for a free eManifest Portal account, so the choice is not EDI or nothing.

The short answer

EDI — electronic data interchange — is a fixed-format message that one company’s system sends straight into another company’s system, with no email and no re-keying. In North American road freight those messages are X12 transaction sets, maintained by X12, a standards body chartered by the American National Standards Institute whose transportation subcommittee writes the freight formats. A small Canadian carrier does not need EDI to exist; it needs EDI the day a customer worth keeping says its onboarding requires it.

That is the honest test. EDI is not a maturity badge. It is a condition of trade imposed by larger trading partners, and the question is only whether the customers you want impose it.

What is actually being exchanged

Each message type has a number. In trucking, five carry most of the traffic, and X12’s own definitions are worth reading rather than paraphrasing:

  • 204 Motor Carrier Load Tender — used “to allow shippers or other interested parties to offer (tender) a shipment to a full load (truckload) motor carrier including detailed scheduling, equipment requirements, commodities, and shipping instructions”. X12 is explicit that it is not for an LTL bill of lading, pickup notification or manifest.
  • 990 Response to a Load Tender — the carrier’s answer to a 204.
  • 214 Transportation Carrier Shipment Status Message — used by a carrier “to provide shippers, consignees, and their agents with the status of shipments in terms of dates, times, locations, route, identifying numbers, and conveyance”.
  • 210 Motor Carrier Freight Details and Invoice — the invoice, or the charge detail behind it.
  • 997 Functional Acknowledgment — the receipt. X12 describes it as reporting “the results of the syntactical analysis of the electronically encoded documents”, which is worth reading twice: a 997 says the file parsed, not that anyone agreed to anything.

Confusing a 997 with a business answer is the single most common early mistake. A tender that produced a 997 and no 990 has not been accepted or declined. It is sitting there.

How a message physically moves

Three layers sit on top of each other, and problems usually live in a different layer from where they are noticed. The envelope wraps the transaction in interchange and functional-group headers so the receiving system knows who sent it and which standard version applies. The transaction set is the business document itself, built from segments and two-character code lists. The transport is how the file travels: McLeod’s published description of its EDI engine lists FTP, SFTP, AS2, external API and its own API endpoints, and formats beyond traditional ANSI X12 including XML and JSON.

That last point matters for a small carrier. “Do you support EDI?” increasingly means “can you exchange structured data at all?” — and for a new trading relationship, a documented API is often the cheaper route to the same outcome.

The Canadian layer nobody mentions in the vendor demo

If you cross into Canada, you already exchange structured data with a government, whether or not you call it EDI. Advance commercial information must reach the Canada Border Services Agency before the truck does, and the CBSA states that in the highway mode you must send it at least one hour prior to arrival at a port of entry so that the data can be validated, with delays and monetary penalties if you do not. Memorandum D3-4-2 adds the detail that properly formatted messages received less than one hour before the transmitted estimated time of arrival will be accepted but will generate an “insufficient review time” error, with penalties potentially applicable.

Two practical CBSA facts for a carrier deciding how to send that data. First, you need a carrier code: the CBSA issues a four-character unique identifier to carriers and freight forwarders, enrolled through the CARM Client Portal. Second, choosing EDI does not cut you off from a screen — the CBSA says that carriers who use EDI or a service provider to send their advance commercial information are eligible for a free eManifest Portal account, where the eManifest Portal shows the notices for each shipment.

So the real Canadian question is not “EDI or nothing”. It is whether you transmit through your own connection, through a service provider, or through the portal by hand — and how many crossings a week make hand-keying indefensible.

Does a small carrier need it?

Work through four questions in order and the answer usually falls out.

  • Is it a condition of the contract? If a shipper’s onboarding pack specifies 204 in, 990 out and 214 status at named milestones, that is a commercial requirement, not a technology choice.
  • How many documents a week? Below a handful, a person in a portal is cheaper than an integration and easier to fix. The crossover is volume plus repetition, not size of company.
  • Do you already own the receiving system? If your dispatch system has a documented EDI or API layer, you are buying a mapping. If it does not, you are buying a system.
  • Who fixes it at 6 a.m.? An unmonitored EDI connection is worse than no connection, because both parties believe messages are flowing.

Worked example: one shipper, two failures, no crisis

An Ontario carrier running eleven power units picked up a national grocery account. The onboarding pack asked for 204 in, 990 out, 214 status at five milestones and 210 invoicing. The carrier had no EDI at all and eight weeks.

The build was deliberately narrow. Only the four transaction sets in the pack were mapped. Status events were sourced from the electronic logging device and the driver app rather than typed by the dispatcher, and any event the system could not derive was queued for a person instead of guessed. Invoicing stayed manual for the first month so that the 210 could be reconciled against what the billing clerk would have sent anyway.

Two failures happened in week one. A 204 arrived with a stop the carrier could not serve, and a 214 went out with a delivery event the driver had triggered from the wrong yard. Neither became a crisis, for the same reason: the carrier had built an exception queue before it built the automation, so both landed in front of a named person the same morning. That sequence — exception handling first, automation second — is the part most small carriers skip.

What to automate, and what to leave with a person

Automate the mechanical layer: receiving and parsing files, sending acknowledgments, deriving status events from telemetry your system already holds, matching invoices to tenders, and flagging anything that does not reconcile. This is repetitive, high-volume, and the failure mode is visible.

Leave the commercial decisions with a person. Whether to accept a tender at the offered rate, whether a load can be served with the equipment you have, and whether a status event is honest are judgments with money and liability attached. A tool can draft the response, surface the conflict and prepare the record; a person decides and the record shows who decided. If you are weighing where automation actually pays in a freight operation, what AI does in trucking dispatch covers the same ground from the dispatch side.

Before you sign the EDI or TMS agreement

Two clauses decide how this ends. The first is data ownership: your tender history, status events and rate records are the operating record of your business, and the agreement should say plainly that they are yours and can be exported in a usable format — see data ownership clauses in Ontario SaaS and software agreements. The second is exit. The key terms in a SaaS agreement are worth reading before signature rather than during a dispute.

Common questions

Is EDI obsolete now that everyone has APIs?

No, and the two are not really competing. Large shippers have decades of EDI infrastructure and will not rebuild it for a small carrier. What has changed is that vendors now carry both — McLeod describes its framework as supporting multiple formats including XML and JSON alongside traditional ANSI X12. Expect to speak both languages.

Can we start with just one transaction set?

Usually yes, and usually you should. Most onboarding packs will accept a phased start — tender and response first, status next, invoicing last — because that is the order in which the shipper feels the benefit. Ask.

Who owns the mapping if we change systems?

Whoever the contract says. This is the practical reason to read the exit terms before you sign: a mapping you cannot take with you is a switching cost you agreed to without noticing. Exiting a software vendor contract in Ontario sets out the questions to ask first.

Does EDI satisfy our CBSA obligations?

Only if the transmissions are correct and on time. The CBSA is clear that the Administrative Monetary Penalty System can be used for incorrect, untrue or incomplete data, including invalid tractor or trailer licence plate numbers, unclear cargo descriptions, or not submitting data one hour before arrival. The channel is not the compliance; the data is.

Work out whether EDI is worth building — before a customer forces it.

A short call is enough to size the work against the trading partners you actually want.