Understanding how EDI works starts with an ordinary moment: someone clicks buy.
Between that click and a parcel arriving, a supplier somewhere has to be told what to ship and where to send it. Done by hand, that is an email and a wait. Done automatically, it is a message in a format both computers already understand, delivered in minutes, with no one involved.
That is the whole idea. Everything else is detail about how the message gets written, how it travels, and what happens when it goes wrong. This guide walks the full lifecycle of one order, in order, with plain language first and the technical vocabulary attached as you go.
Strip away the jargon and every EDI exchange comes down to three steps:
Those three steps are the entire architecture. A reader who stops here already understands how EDI works well enough to follow any conversation about it. If you want the definitional grounding underneath this, our guide to what EDI is covers the standards, the history, and what compliance means.
Before the codes, the analogy. An EDI file is structured like an envelope inside a mail sack. The outermost layer says who sent it and who it is for. A middle layer groups together documents of the same type, the way you might bundle all the invoices together. Inside sits the actual document.
Now the names, which are just labels for those three layers.
Inside the transaction set, data is organized into segments, each holding related elements, separated by delimiter characters. Two conventions trip up newcomers and are worth naming now.
First, empty positions are not omitted, they are held open with consecutive delimiters, which is why real files contain runs of asterisks that look like errors and are not. Second, each layer must be closed in reverse order, and the counts declared in the closing segments must match what the file actually contains.
A mismatch there is one of the most common reasons a file gets rejected on arrival.
Here is a stock update in the format Carro's specification describes. Annotated, it stops being intimidating.
Read line by line, in plain English:
That is the whole file. Eleven lines carrying a complete inventory statement. One detail carries real business logic. That BIA segment declares whether the file is a full snapshot or a change only update.
A snapshot means every product must be listed, and anything omitted gets set to zero. It is unambiguous and self-correcting, because the file always represents the complete truth. The risk is that a partial transmission wipes out whatever it missed.
A change-only file lists just what moved and leaves everything else untouched. It is lighter and safer for partial sends, but discrepancies can accumulate quietly if an update goes missing.
Carro supports both, and confusing them is the classic way a catalog goes unexpectedly out of stock overnight. There is a third protection worth knowing: a file dated earlier than the last one processed is ignored, so inventory cannot roll backward when files arrive out of order.
Three delivery methods dominate, and the plain description matters more than the acronym.
1. SFTP: A secure folder. You drop a file in, your partner picks it up. Straightforward to reason about and widely used.
2. AS2: A direct encrypted connection between two companies, common where an enterprise partner mandates it.
3. A VAN: A Value-Added Network, working like a shared post office everyone connects to once. It solves connectivity and traditionally charges per document.
Carro uses SFTP, hosted either by Carro or on the supplier's own server with a single static IP whitelisted. Suppliers place outgoing files in one folder and collect incoming files from another.
Three design decisions here determine how fresh your data is.
Carro checks the supplier folder every 15 minutes. Not overnight, not on a nightly window.
Only one document is allowed per file. Traditional EDI batches many transactions together because it grew up around scheduled network delivery. Carro refuses batching in both directions, and a file containing multiple documents raises an exception instead of processing. Batching made sense when data moved overnight anyway. On a live storefront, it is latency you chose.
Stock updates are recommended every five to fifteen minutes. That cadence tells you what the system is built for. A storefront makes selling decisions continuously, so the inventory behind it has to be current in minutes rather than hours.
Now the whole thing end to end. Each document is named in plain English first.
The supplier sends a stock update (846) reporting what is available. A file dated older than the last one processed is ignored, which stops inventory rolling backward if files arrive out of order.
Checkout completes. Each supplier receives a purchase order (850) carrying the items, quantities, prices, and the customer's full shipping address, because in dropship the parcel goes to a home rather than a warehouse. Carro's specification passes two separate address blocks, one for shipping and one for billing.
They return an acknowledgement (855). This works at two levels: a status for the whole document, and a per-line flag marking each item accepted or rejected. Line-level detail is what allows a partial rejection to cancel cleanly instead of sinking the entire order.
The supplier sends a ship notice (856) carrying the courier, identified by its standard carrier code, and the tracking number. The structure nests four levels: shipment, order, pack, and item. The retailer's system creates a fulfillment record and the customer gets their tracking automatically.
On Carro, an invoice generates automatically once the ship notice is accepted, and payout runs through Stripe. Suppliers who prefer to invoice manually can send an invoice document (810) instead, configurable per partnership.
Carro returns a functional acknowledgement (997) confirming each file arrived and was readable. It carries no business meaning. It exists so nobody has to wonder whether a document vanished.
Single-supplier orders are the simple case. Multi-supplier baskets are where automated routing earns its keep, and they are the norm in any marketplace or extended assortment catalog.
A customer adds three products to a basket. They come from three different brands. To the customer this is one order with one checkout and one payment.
Behind the scenes it becomes three separate supplier orders.
The system identifies which supplier holds each line and generates a distinct purchase order for each, carrying only their portion plus the customer's shipping address. Carro does this automatically, identifying the appropriate orders to create in each supplier's system without anyone deciding anything.
Each supplier then runs their own independent thread. Brand A acknowledges and ships within the hour. Brand B rejects one line because a variant just sold out. Brand C acknowledges but ships the following day.
Three consequences follow, and they are why line-level detail matters so much:
Handled manually, a three-brand basket is a coordinator's afternoon. Handled automatically, it is invisible.
This is the part most guides skip, and the part operators care about most.
Files fail occasionally. A segment is malformed. A product reference matches nothing. A partner changes a requirement without mentioning it. A stock file arrives dated yesterday. Individually trivial, collectively meaningful once you pass twenty suppliers.
Good failure handling has four properties:
1. Failures queue somewhere visible. Carro creates a TradeOps Issue for any processing error rather than letting it disappear silently.
2. Every file is archived. You see exactly what arrived, not what you assumed arrived.
3. Status is visible per document. Each order page shows every document sent and received, with its interchange control number and current state. Outgoing files show as sent, accepted, or rejected. Incoming files show as processed or errored.
4. Retry does not require re-transmission. Fix the cause and press retry, rather than emailing a supplier to ask them to send it again.
Those four properties are worth testing before you commit to any system, because they determine whether exceptions cost you an hour a week or a person.
The design decision that shapes everything is that Carro treats the two sides of the trade differently:
Carro sits in the middle translating. The supplier writes a file their ERP already produces. The retailer sees an order appear in the storefront they already use.
For a supplier, one specification unlocks the entire network rather than one partner. For a retailer, none of the machinery in this article is something you have to operate.
Because Carro is purpose-built for multi-supplier dropship rather than adapted from a generic tool, the commercial layer sits alongside the technical one. Price lists are margin-based and assigned per partner. Only active, priced products become visible. And the network supplies the partners themselves: more than 1,500,000 products from vetted brands, hand-matched by account managers on category, audience, and price point.
As The FairGround described the operational effect: "Automating inventory and product tagging makes it easier to scale. It allows us to manage a curated selection of products effectively, keeping control over what goes live while growing the business."
Three things separate Carro from a conventional EDI setup:
Carro is built for retailers and marketplaces expanding assortment across many suppliers, and for brands chasing retail distribution without months of wholesale negotiation.
Pricing starts at $149 per month with unlimited partnerships, onboarding is self-serve, and you can round-trip a complete test order, rejection scenarios included, before a single real partner is involved.
EDI works in three steps: data is formatted into a standardized structure both companies have agreed on, delivered from one company's systems to the other, and translated into whatever each side's internal system uses. A typical retail exchange uses five documents covering stock updates, purchase orders, acknowledgements, shipping notices, and invoices. Files are usually delivered over a secure folder connection, a direct encrypted link, or a shared network. The receiving system processes each document automatically, with no manual data entry involved.
An EDI file is plain text organized into layers, like an envelope inside a mail sack. An outer interchange layer names sender and receiver, a functional group layer bundles documents of the same type, and the transaction set holds the document itself. Inside, data sits in segments made of elements separated by delimiter characters such as asterisks and tildes. A complete stock update carrying several products can be as short as eleven lines.
Delivery speed depends on the system's design rather than the EDI standard itself. Legacy setups built around scheduled network windows can take hours, since files move on a batch timetable. Modern connections check for new files continuously or on short cycles, with Carro collecting supplier folders every 15 minutes and recommending stock updates every five to fifteen minutes. For a live storefront, anything slower than that risks selling products that are no longer available.
An 850 is a purchase order sent from the buyer to the supplier, while an 855 is the acknowledgement the supplier sends back. The 850 says what to ship, in what quantity, at what price, and to which address. The 855 confirms what the supplier can actually fill, working at two levels: an overall document status and a per-line flag marking each item accepted or rejected. Line-level detail matters because it lets a partial rejection cancel cleanly rather than failing the whole order.
An EDI 997 is a functional acknowledgement confirming that a file arrived and could be read. It carries no business meaning and says nothing about whether an order was accepted, which is the job of the 855. Its value is removing uncertainty, since without it nobody knows whether a document was delivered or lost. Carro sends a 997 for every file a supplier submits.
An order spanning several suppliers is split automatically into separate supplier orders, each carrying only that supplier's lines plus the customer's shipping address. Carro identifies which supplier holds each line and creates the corresponding order in their system without manual intervention. Each supplier then acknowledges, ships, and settles independently, so the customer may receive several parcels with separate tracking numbers. Line-level acknowledgement is what allows one supplier's rejection to cancel cleanly without affecting the rest.
Well-designed EDI systems queue failures visibly, archive every file received, show status per document, and allow a retry without asking the partner to resend. Carro creates a TradeOps Issue for any processing error and shows each document's state on the related order page, with download and retry actions. Common causes are malformed files, mismatched product identifiers, and multiple documents in a single file. Testing those four properties before committing to a system is worth the time.
You do not need to understand EDI to benefit from it, provided your system handles translation on your behalf. On Carro, retailers connect through Shopify, WooCommerce, BigCommerce, or Magento and never open a document. Suppliers do need to produce files from their own system, though onboarding is self-serve and includes a sandbox for testing. Understanding the lifecycle helps when troubleshooting, but day-to-day operation does not require it.