Your First Retail PO on Shopify: From the Buyer’s Yes to Getting Paid

A buyer said yes, and their vendor packet says you need EDI. Four documents do most of the work: an 850 purchase order arrives, an 855 acknowledgment goes back, an 856 advance ship notice goes out when the freight moves, and an 810 invoice follows to get paid. Shopify has no native EDI, so all four arrive through a connected system — in Shopify’s own words, they “simply become single-line updates on the Shopify order record.” The two places first-time vendors lose money are inventory they promised twice and an ASN that does not match the pallet.

The sequence, in the order it happens to you

StepDocumentWhat it meansWho acts
1850The purchase order lands: SKUs, quantities, prices, ship window, destinationYou receive
2855Acknowledgment — you confirm what you will ship, and flag what you cannotYou send, usually within 24–48 hours
3856Advance ship notice: exactly what is on the truck, carton by cartonYou send at shipment
4810Invoice, priced off the POYou send, ideally same day as shipment

Two more show up early. A 997 functional acknowledgment is the plumbing confirming a file arrived and parsed. An 860 is the retailer changing the PO after you accepted it, which happens more than anyone warns you about.

Retailer requirements vary enough that the packet is the specification, not this article. We keep a per-retailer breakdown in EDI requirements by retailer — start with yours before you configure anything.

Step 1: Read the packet before you agree to the ship window

The trading partner agreement sets your compliance obligations, and every chargeback you will ever receive traces back to a line in it. Three things to extract before you confirm anything:

  1. The ship window. Usually a start-ship and a must-arrive-by date. Early is a violation too, not only late.
  2. Labeling and packing rules. Carton labels, pallet configuration, how many SKUs per carton, whether mixed cartons are allowed.
  3. The chargeback schedule. The actual dollar amounts. This is the number that tells you how much automation to buy.

If the packet demands a routing guide compliance you cannot meet in the first window, say so during onboarding. Buyers renegotiate windows. They do not refund expense offsets.

Step 2: Hold the inventory you just promised

This is the step that catches Shopify brands, because DTC will happily sell the units you committed to a retailer.

Shopify tracks inventory across several states — incoming, on hand, available, committed, reserved, damaged, safety stock, and quality control. Committed means units on orders that were placed but not yet fulfilled. A wholesale PO that never becomes a Shopify order commits nothing, so those units stay available to your storefront.

Two native mechanisms hold stock back. They are not equivalent, and the difference matters six weeks out:

Draft order with reserved items. Create a draft order for the PO and reserve the line items. Reserved units move into the Unavailable state and cannot be bought by anyone else, and you set the date and time the reservation expires. This is the closest native equivalent to a wholesale allocation: it is tied to a specific order, it is visible, and it releases itself.

Moving stock to an unavailable state. You can adjust units out of Available into Safety stock or Other, choosing an origin and destination. This works, and it is blunt: the held units are not linked to the PO, nothing expires, and six weeks later nobody remembers which retailer the safety stock was for.

Neither is a true multi-channel allocation model, and merchants have said so publicly — one Shopify community thread on the reservation behavior is titled, plainly, an unacceptable gap for wholesale and B2B workflows. If wholesale is one PO a quarter, the draft-order route is fine. If wholesale, retail EDI, and marketplaces all draw down the same pool on different clocks, you are managing a reservation ledger by hand, and the failure mode is silent: you find out at pick time.

One system should already know what is committed where. On Endless, a retail PO commits stock the moment you accept it, against the same inventory record your storefront reads. No parallel ledger. No unit promised twice.

Step 3: Acknowledge accurately, not optimistically

The 855 is a commitment, and the temptation on a first order is to confirm everything and hope. Confirm what you will actually ship. Short-shipping against your own acknowledgment is a chargeback category at most retailers; a short quantity you flagged up front usually is not.

If an 860 change arrives, treat it as a new agreement rather than a notification. Re-check the ship window and the quantities, because the compliance clock may have moved.

Step 4: Ship it, then send an ASN that matches the truck

The 856 has to describe the physical shipment: which SKUs, in which cartons, on which pallets, with the carton identifiers the receiving dock will scan. Get it wrong and the retailer’s dock finds the mismatch before you do.

The Shopify-specific gap: carton-level identifiers are not something Shopify produces. Shopify’s Retail Barcode Labels app generates Code-128 labels for retail and POS use, and GS1-128 — the format that carries GTINs, quantities, and the serialized container codes retail DCs scan — comes from third-party apps, your warehouse system, or your EDI provider. If a 3PL ships for you, the ASN and the labels become a shared-accountability problem. Settle it before the first order — who sends the ASN when your 3PL ships it covers the three ways brands split it.

Step 5: Invoice off the PO, not off your gut

The reliable pattern is mechanical: take the quantities from the 856 you just sent, multiply by the prices on the 850 you accepted, and send that as the 810 at shipment. Prices come from the PO, quantities come from what shipped. Deviate from either and you have invented a discrepancy for someone to resolve later.

Then get the same figures into your financial system. Invoicing the retailer and booking the receivable are two separate jobs, and doing them from one source is how the numbers still agree at month end.

Where the money actually goes

Brands prepare for the wrong failures. Two things cost real money on a first PO.

Overselling the committed units. You promised 800 units, DTC sold 200 of them, you ship short against your own 855, and you take a shortage chargeback plus an unhappy buyer in the same week.

An ASN that does not match the pallet. Carton counts off, labels unscannable, quantities restated after the fact. This is the most common first-order penalty, and it disappears the moment your shipment record comes from the warehouse instead of a spreadsheet.

Chargebacks compound quietly across programs, and we have written up the full anatomy in the EDI chargeback nightmare and the prevention side in avoiding retailer chargebacks.

What to decide before the second PO

The first order can be survived manually. Programs cannot, and the second PO usually arrives before you have automated the first.

  • One retailer, low volume, simple pack. A web portal from an EDI vendor is a reasonable starting point. Key the documents by hand and accept the ceiling.
  • Two or more retailers, or a 3PL in the middle. Portals stop paying: every document is manual, the ASN is only as accurate as the person typing it, and inventory truth lives nowhere. Integrate.
  • Wholesale plus retail plus marketplaces on the same stock. The integration problem is really an inventory problem. Pick the system of record first and connect EDI to it. Bolt EDI onto the side and you have signed up for a reconciliation job that never ends.

One distinction survives all of this. Shopify B2B gives wholesale buyers a place to log in and order — a storefront. Retail EDI is a compliance protocol where the retailer’s system talks to yours and the buyer never logs in anywhere. Brands conflate them constantly, and Shopify B2B vs retail EDI draws the line.

EndlessEDI ships native across all tiers: routing guides, ASNs, chargeback tracking, and compliance all run against the same inventory and order records as your DTC and wholesale channels. Native EDI matters most at exactly this moment, because a first retail PO is when the gap between “we sync” and “one source of truth” starts costing money.

Before you sign with anyone, the Shopify retail EDI readiness checklist is the ungated list of questions to put to a vendor and to yourself.

Sources

Shopify capability claims here come from Shopify’s own documentation and developer resources: the inventory states model and manual adjustment behavior from Shopify’s inventory documentation and Admin API reference, draft order reservation and expiry from Shopify’s draft order documentation, the Code-128 limitation from Shopify’s Retail Barcode Labels app documentation, and the description of EDI documents arriving as updates on the Shopify order record from Shopify’s enterprise writing on operationalising EDI. Transaction set definitions follow the ANSI ASC X12 standard.

Shopify’s native features change and plan level affects what you get. Check your own admin before committing a ship window on this page’s word alone, and treat the retailer’s trading partner packet as the specification wherever it disagrees with anything here.

Commerce is chaos.

Tame your tech stack with one system that brings it all together—and actually works.

Get a Demo

Share this post