B2B / ASPDNSF

Two-way ERP sync: what actually breaks.

An isometric storefront and ERP system linked by two-way data streams

Everyone can demo the happy path: a product goes from the ERP to the store, an order comes back. The engineering that keeps a distributor on the same platform for seventeen years is the unhappy path - who wins when both sides edit the same record, what happens when the ERP is down, and how you stop someone quietly rekeying orders at 6pm. This is a field note on what actually breaks, written by the team that got burned so you don't have to.

One-way is easy. Two-way is where it breaks.

A one-way feed is a solved problem. Export the catalog from the ERP, transform it, load it into the store on a schedule. If it fails, you re-run it and nobody notices. That is the integration most vendors show you in the sales call, because it always looks clean.

Your business does not run on one-way. It runs on two systems that both change the same facts all day long - stock moves in the warehouse, an order lands on the website, a price gets renegotiated in the ERP, a customer updates their own shipping address in their account. The moment both ends can write, you have left the demo and entered the part that keeps engineers up at night. Across the B2B stores we run - more than 370,000 orders, some live for up to eighteen years - nearly every hard-won lesson lives in that gap between "the catalog syncs" and "the two systems never disagree."

"Anyone can push a catalog one way. The question that matters is what happens the minute both sides try to be right at once."

- The Silex Softwares team

Who's the source of truth - per field, not per system.

The single most common design mistake is deciding source of truth per system - "the ERP is authoritative" or "the store is authoritative." Neither is true, and treating it as true is how you get drift. Source of truth is a decision you make field by field.

Inventory is authoritative in the ERP; the store is a read-only mirror of stock, never allowed to invent its own count. Pricing - including account-level price lists and contract pricing - flows out from the ERP. But orders originate on the store and flow into the ERP, and customer records get edited on both sides: a buyer updates their own contact details online while accounts receivable updates their credit terms in the back office. Get specific about which system owns which field, or the ambiguity becomes overwrites you can't explain. When we integrate a store with Epicor P21, Sage, Acumatica or ECS Pro, this mapping is the first artifact we produce and the last one we let anyone change casually.

The failure modes nobody warns you about.

Here is the war story that shapes how we build. A store and an ERP disagreed on stock for about ninety seconds during a sync window - the exact gap two-way sync exists to close. In that window the store sold an item the warehouse had already committed elsewhere. One oversell, one apology, one root cause: a design that assumed the two systems were never out of step. They always are, for a moment. The job is to make that moment safe.

The failure modes are boringly predictable once you've met them:

  • Conflicting writes. Both sides edit the same record between syncs. Without an explicit rule for who wins - usually the authoritative field's owner, plus last-write-wins only where it's safe - the later push silently clobbers the earlier truth.
  • The ERP is down. Back-office systems get patched, rebooted and backed up. If an order can only be accepted when the ERP answers instantly, every maintenance window becomes lost revenue. Orders must queue durably, retry, and never drop on the floor.
  • Partial syncs and silent drift. A batch half-completes, an item is skipped, a count diverges by three units - and nothing alarms. The dangerous failures aren't the loud ones; they're the counts that quietly stop matching until a customer finds the gap for you.
  • Rekeying. The manual step that creeps back in. Someone starts pasting web orders into the ERP "just for now" because an edge case wasn't handled, and six months later that's the process. Every rekey is a transcription error waiting to happen and a sign the integration has a hole.

Pricing and tax make it harder.

Consumer catalogs have one price. B2B does not. A logged-in buyer sees their account-level price list and their negotiated contract pricing, and the sync has to respect who is buying, not just what. That means the price the agent - human or software - sees at checkout has to reconcile with what the ERP will actually invoice, every time, or finance spends its month chasing mismatches.

Tax is its own discipline. Rather than hand-roll jurisdiction logic, we integrate a dedicated tax engine - Avalara - so rates and rules stay correct as they change, and the store and ERP agree on what was charged. And when large buyers procure through their own systems, the order doesn't start on your site at all: it arrives via PunchOut. We wire that with TradeCentric so a customer's procurement platform can browse your catalog, at their pricing, and drop a requisition straight back - one more path that has to land cleanly in the same authoritative order flow.

What "good" looks like.

Reliable two-way sync isn't clever; it's disciplined. Three properties, every time:

  • Idempotent. The same message processed twice does not create two orders or double-count stock. Retries are safe by design, so "when in doubt, retry" is actually a strategy.
  • Observable. You can see what synced, what didn't, and what's stuck in a queue - before a customer does. Drift sets off an alarm, not a support ticket.
  • Reconcilable. You can prove, on demand, that the two systems tell the same story - and when they briefly don't, exactly which record and why.

The outcome a business feels is simple: nobody rekeys anything. That's how the US MRO / property-supply distributor we deliver via a US delivery partner runs its store on Epicor P21 - 108,000+ orders, live since 2019 - without a back-office team retyping the web. It's how a long-established Australian B2B/B2C distributor has run two-way against Sage for seventeen years with no major outage, on a platform it owns outright. And it's the discipline inside ActiveHub, our reusable app that fuses a BigCommerce storefront two-way to Acumatica - orders, invoices, payments, shipments and projects moving both ways since 2022, 40,000+ orders on the financial-equipment build. (With BigCommerce you don't own the platform outright the way you do a self-hosted store - but there's no lock-in: the code, integration and customizations are yours.)

The moat is the boring part.

None of this is glamorous. Idempotent handlers, durable queues, a reconciliation report nobody reads until they need it - it's the unsexiest engineering we do. It's also exactly why distributors stay on a platform for fifteen years and more. When the two systems never disagree, the store stops being a thing that needs babysitting and becomes infrastructure the business forgets to worry about. That quiet is the product. The flashy features get the demo; the boring reliability gets the seventeen-year relationship.

Where to start.

If you've been bitten by a flaky integration, you already know the smell of hand-waving. The honest first step isn't a rebuild pitch - it's a look at your actual ERP integration to find the drift before it finds you: where source of truth is ambiguous, where orders can be lost when the ERP blinks, where someone is quietly rekeying. Our free assessment reads your real store-to-ERP setup and tells you plainly what's solid and what's a ninety-second window away from an oversell. If you want the wider context first, our B2B e-commerce work lays out how we build and run these platforms for the long haul.

Key takeaways

Three things we'd underline.

Decide truth per field

Inventory is the ERP's; orders and customers flow both ways. Ambiguity per system becomes drift.

Design for the ERP being down

Orders must queue, retry and never drop - a maintenance window can't cost you revenue.

The moat is the boring part

Idempotent, observable, reconcilable. Nobody rekeys anything - that's what keeps clients 15+ years.

Free assessment

Worried your ERP sync is a ninety-second window from an oversell?

We'll read your actual store-to-ERP integration - source of truth, failure handling, where orders get rekeyed - and tell you plainly what's solid and what isn't. Honest findings, no obligation.