Why B2B orders break at the ERP export (and fix)
Jump to section›
Short version: in B2B ecommerce the catalog is the easy part. The step that quietly eats the budget is the export: moving each web order into the ERP and the accounting system without a human re-typing it. On a recent build (~15,000 SKUs, 5 customer price tiers, ~500 orders a month), that one step took about 35 real tickets. What made it hold up was a health check that validates every order before it's pushed. Bad orders stop at preview. Not at month-end reconciliation.
#The catalog is not where B2B projects fail
A per-customer price list and a logged-in storefront are well-trodden ground. What breaks is the handoff to the back office.
A trade order isn't done when the buyer clicks "order". It's done when it's correctly in the ERP, and again in accounting for the VAT invoice. Do that by hand at a few dozen orders a day and you've built a month-end surprise generator.
#The five things that actually break
From one real build, the export layer had to handle, per order:
- Unmapped SKUs. A product the storefront knows but the ERP doesn't: aliases, temporary SKUs, duplicates.
- Missing customer code. A new buyer with no ERP account yet, so the order has nowhere to land.
- Unit-of-measure mismatch. Boxes on the web, individual units in the ERP.
- Shipping and Incoterms. Shipping that has to be its own line, and two-step delivery terms.
- VAT by company. The right tax treatment depends on which legal entity is buying.
None of these show up in a demo. All of them show up at reconciliation.
#The fix: a health check in front of the export
Don't push orders straight through and clean up later. Validate every order before it leaves the storefront, with each rule above as its own check.
An order that fails stops at a preview screen. Someone fixes it in a minute, while they still remember the call with the buyer, instead of an accountant finding it three weeks later with no idea why the numbers don't tie.
On the build this is drawn from, the check layer alone was ~35 tickets, because each order type had its own trap. Once it existed, ~500 orders a month went into the ERP and into accounting with nobody re-typing them. The errors that used to surface at month-end now surface at the moment of ordering.
#Why design it as one system
Pricing, ordering and ERP sync aren't three plugins. They're one system. Each rule (price tier, unit conversion, VAT) lives in exactly one place, so changing it doesn't quietly break the next order.
That's also what keeps the data clean enough for AI assistants to read later. Different post, though. If you're weighing platforms for this kind of build, the Shopify Plus vs Magento 2 for B2B comparison covers where each one puts the ERP seam.
See the full case, with the numbers: B2B distributor: 15,000 SKUs, ERP orders without re-typing
Re-keying trade orders today? A free async read maps where your order-to-ERP flow leaks, before you touch the build: luma-e.com/ai-readiness. No call required.