Short answer
Ecommerce EDI has two jobs. With a 3PL warehouse, you send X12 940 warehouse shipping orders and receive 945 shipping advices and 846 inventory updates. With retailers (dropship or wholesale), you receive 850 purchase orders and send 855 acknowledgments, 856 ship notices, and 810 invoices. Documents travel over AS2, SFTP, or a VAN, every inbound document should get a 997 functional acknowledgment, and the ERP — not the storefront — should be the hub that translates EDI into orders, shipments, and stock. Most failures come from mapping and partner-specific rules, not from the transport.
- Shopify Orders
- ERP Order hub
- EDI translator 940 out · 945/846 in
- 3PL WMS Pick
EDI (electronic data interchange) sounds like legacy technology, but for a growing ecommerce brand it shows up quickly: the moment you outsource fulfillment to a 3PL, or the moment a retailer wants to carry your products, someone sends you an EDI implementation guide. This guide explains what those documents are, how they flow, and how to fit them into an ERP-centered integration instead of bolting them onto the storefront. As on every page, documented marks statements from standards bodies or vendor documentation, and recommendation marks our guidance.
The two EDI relationships in ecommerce
| Relationship | You are… | Typical documents | Who sets the rules |
|---|---|---|---|
| 3PL warehouse | The client of the warehouse | 940 out; 945, 846, 944 in; 943 out for inbound stock | The 3PL’s implementation guide |
| Retail partner (wholesale or dropship) | The supplier | 850 in; 855, 856, 810 out | The retailer’s implementation guide (often strict, with chargebacks) |
Documented: X12 defines these transaction sets, among others: 850 Purchase Order, 855 Purchase Order Acknowledgment, 856 Ship Notice/Manifest, 810 Invoice, 846 Inventory Inquiry/Advice, 940 Warehouse Shipping Order, 945 Warehouse Shipping Advice, 943 Warehouse Stock Transfer Shipment Advice, 944 Warehouse Stock Transfer Receipt Advice, and 997 Functional Acknowledgment.
Recommendation: treat each partner’s implementation guide as the real specification. The X12 standard defines what a document can contain; the partner’s guide defines what it must contain, which qualifiers it uses, and how it’s validated. Two 3PLs can both “support the 940” and still need different mappings.
Flow 1: Shopify orders shipped by a 3PL
- Order capture: a paid Shopify order reaches the ERP (see syncing Shopify orders with an ERP).
- 940 out: the ERP releases the order to the warehouse as a 940 Warehouse Shipping Order — ship-to address, lines by SKU, ship method, and your order reference.
- 997 in: the 3PL’s translator acknowledges receipt.
- 945 in: after shipping, the 3PL sends a 945 Warehouse Shipping Advice with what actually shipped — quantities, carrier, and tracking numbers, sometimes per carton.
- ERP → Shopify: the ERP records the shipment and the integration creates the Shopify fulfillment with tracking, which notifies the customer (shipment tracking).
- 846 in: on a schedule (often daily, sometimes more often), the 3PL sends an 846 with on-hand or available quantities, which the ERP reconciles against its own numbers before publishing stock to Shopify.
Documented (Shopify): if your 3PL integrates with Shopify as a fulfillment service, Shopify sends it fulfillment requests that it accepts or rejects, and the service creates fulfillments with tracking. Many 3PLs offer both a Shopify app and EDI.
Recommendation: pick one path per order. If the 3PL’s Shopify app pulls orders directly while the ERP also sends 940s, you’ll ship twice or not at all. In an ERP-centered architecture, route orders through the ERP and use EDI (or the 3PL’s API) from there.
Flow 2: inbound stock to the 3PL
- 943 out: when you ship stock from a supplier or another warehouse to the 3PL, a 943 Warehouse Stock Transfer Shipment Advice tells it what’s coming.
- 944 in: when the 3PL receives it, a 944 Warehouse Stock Transfer Receipt Advice confirms what was actually counted — which may differ from what was sent.
Recommendation: post receipts in the ERP from the 944, not from the 943. Differences between expected and received quantities are where shrink, damages, and supplier disputes surface; route them to a person, don’t auto-adjust them away.
Flow 3: selling through retailers
- 850 in: the retailer sends a purchase order.
- 997 out: you acknowledge receipt (usually generated by the translator).
- 855 out: you confirm what you’ll ship — accepted, changed, or backordered lines.
- 856 out: before the goods arrive, you send the ASN describing shipment, orders, cartons, and items.
- 810 out: you invoice.
Documented (GS1): the SSCC (Serial Shipping Container Code) is an 18-digit number that identifies a logistic unit such as a carton or pallet. It is the only mandatory element on a GS1 logistic label, encoded in a GS1-128 barcode, and it links the physical unit to the advance ship notice so the receiver can pull up the expected contents when scanning. The SSCC is assigned by the company that creates the logistic unit, using its own GS1 Company Prefix.
Recommendation: if a retailer requires carton-level ASNs, your warehouse process must capture which items went into which carton and print SSCC labels that match the 856 exactly. That is a warehouse and labeling project, not just an EDI mapping — plan it with your 3PL early. Retailer compliance programs commonly charge back for late or inaccurate ASNs.
Transport: AS2, SFTP, and VANs
Documented: AS2 (Applicability Statement 2, RFC 4130) is a standard for exchanging business documents securely over HTTP, with signing, encryption, and signed receipts (MDNs).
Recommendation:
- AS2 suits high-volume partners and is common with large retailers.
- SFTP is simpler and widely accepted by 3PLs.
- A VAN gives you one mailbox for many partners, with usage-based fees.
- Whatever the transport, store every raw file you send and receive, with timestamps, for at least as long as disputes and audits can last.
Where EDI fits in your architecture
Recommendation:
- The ERP is the hub. EDI documents become ERP transactions (sales orders, shipments, receipts, invoices); Shopify and other channels connect to the same ERP. See Shopify ERP integration architecture.
- Use a translator. Whether it’s a managed EDI provider, an iPaaS, or an EDI module in your ERP, keep parsing, envelope handling (ISA/GS control numbers), and 997 generation out of your application code.
- Map once, version per partner. Keep a canonical internal order/shipment model and one mapping per partner on top of it. See data mapping.
- Idempotency matters here too. Partners resend files. Track interchange and document control numbers plus your own business keys (PO number, order reference) so a resent 850 or 945 doesn’t create a second order or a second shipment.
Monitoring EDI
Recommendation: EDI fails quietly — a file that never arrives produces no error. Monitor for:
- Missing 997s for outbound documents after a set time.
- Orders without a 945 after the expected ship window.
- 846 quantities that differ from the ERP beyond a tolerance (inventory reconciliation).
- Rejected or unmapped documents in a review queue with the raw file attached.
- Control number gaps, which can indicate lost interchanges.
Build these into the same dashboard as your other integrations (integration monitoring).
Testing a new partner
- Get the partner’s implementation guide and sample files, and confirm the X12 version they use.
- Map test documents and validate them against the guide, not just the standard.
- Exchange test files in a test mailbox or AS2 test profile until both sides pass.
- Run a small controlled set of real orders before switching all volume.
- Agree on who to contact, and how, when a document is rejected.
Common pitfalls
- Two paths to the 3PL (Shopify app and ERP 940s) shipping orders twice.
- ASNs that don’t match the cartons, triggering retailer chargebacks.
- Treating a 997 as confirmation that an order was accepted or shipped.
- Resent files creating duplicates because only the file name was tracked.
- Partner-specific rules hard-coded into one big mapping that nobody can safely change.
Frequently asked questions
What EDI documents does a 3PL usually need?
Most US 3PLs that support X12 exchange a 940 Warehouse Shipping Order (your order to ship), a 945 Warehouse Shipping Advice (what actually shipped, with tracking), and an 846 Inventory Inquiry/Advice (stock levels). For inbound stock, the 943 Warehouse Stock Transfer Shipment Advice tells the warehouse what's coming and the 944 Warehouse Stock Transfer Receipt Advice confirms what was received. Every 3PL publishes its own implementation guide with the segments and codes it expects.
What is the difference between an 856 and a 945?
Both describe a shipment, but in different relationships. The 945 is the warehouse telling its client (you) what it shipped on your behalf. The 856 Ship Notice/Manifest — the ASN — is the supplier telling its customer (for example a retailer) what is on its way, usually down to carton level with SSCC labels.
Do I need a VAN to do EDI?
No. Many partners accept direct AS2 or SFTP connections. A VAN (value-added network) acts as a mailbox service between trading partners and can simplify connecting to many partners, at a per-document or per-character cost. Large retailers often specify which connection methods they accept.
Should EDI connect to Shopify directly?
Usually not. Shopify is the storefront; the ERP (or an order management system) should own orders, inventory, and shipments, and the EDI translator should talk to it. That keeps one source of truth for stock and lets retail and 3PL documents flow without passing through the storefront.
What is a 997 and why does it matter?
The 997 Functional Acknowledgment confirms that an EDI document was received and passed syntax checks. It doesn't mean the order was accepted or shipped. Track 997s for every outbound document and alert when one doesn't arrive, because a missing acknowledgment is often the first sign a partner never got your file.
Sources and further reading
Platform-specific statements on this page were checked against these sources on . Vendor APIs change; confirm details in the current documentation before you build.
- [1] X12 transaction sets — X12
- [2] RFC 4130: Applicability Statement 2 (AS2) — IETF
- [3] GS1 Logistic Label Guideline — GS1
- [4] An Introduction to the Serial Shipping Container Code (SSCC) — GS1 US
- [5] About fulfillment services — Shopify
Related reading
- Guides How to Synchronize Shipment Tracking Between Shopify and an ERP Send shipments and tracking numbers from an ERP or WMS to Shopify using fulfillment orders — partial shipments, multiple packages, carriers, and customer notifications.
- Guides How to Synchronize Inventory Between Shopify and an ERP Keep Shopify stock levels aligned with your ERP — choosing which quantity to publish, mapping locations, using compare-and-swap updates, and reconciling drift.
- Concepts What Is Data Mapping in Integrations? What data mapping means in ecommerce-ERP integrations — field, value, and structural mapping — with examples, common pitfalls, and how to document and test mappings.
- Concepts What Is Inventory Reconciliation? What inventory reconciliation is, why stock drifts between an online store and an ERP, how to compare and correct quantities safely, and how often to reconcile.
- Guides How to Design an Integration Monitoring System What to measure in an ecommerce-ERP integration, how to set alert thresholds, which dashboards help, and how business-level checks catch silent failures.
- Comparisons Direct ERP Integration vs. Integration Middleware Compare point-to-point ERP integrations with middleware and iPaaS — cost, control, scalability, skills, and failure handling — and see which fits your requirements.