Synchronizing an online store with inventory and accounting systems is one of the most underestimated parts of e-commerce projects. A poorly designed integration leads to duplicate orders, mismatched stock levels, manual data re-entry, and in extreme cases to accounting discrepancies that an auditor has to untangle.

We look at the typical patterns, classic pitfalls, and proven approaches we have applied across dozens of integrations between Shoptet, Shopify, custom e-shops, and ERP systems such as Pohoda, Helios, Money S5, and Microsoft Business Central.

A good integration is not about how fast the data flows. It's about what happens when something fails — and it usually fails on the weekend before Black Friday.

The key decision at the start: synchronous vs. asynchronous communication. Synchronous (the e-shop calls the ERP in real time) is simple at first, but as soon as the ERP goes down or slows down, the frontend goes down with it. Asynchronous communication via a message queue (RabbitMQ, Redis Streams, Kafka) is more resilient — events are persisted, retries are automatic, and ordering is preserved.

Idempotency: your best friend

The second golden principle is idempotency. Every message must be processable repeatedly without side effects. "Payment of CZK 1,200 received for invoice no. 2024/0123" must be able to arrive ten times without the balance changing. Without idempotency, the first network glitch puts you out of sync — and you'll spend the weekend doing forensics in MySQL.

  • Map IDs in both directions (e-shop ID ↔ ERP ID) in a persistent mapping table
  • Generate a stable correlation ID for every event — without it, errors cannot be traced
  • Implement the "outbox pattern" — events are written to the DB in the same transaction as the business data
  • Monitor queue lag with alerting (Slack/PagerDuty) when it exceeds a threshold
  • Process webhooks from payment gateways (Stripe, GoPay) using an idempotency key
  • Run reconciliation jobs once a day and report every discrepancy

An ERP integration is not a 2-week project, but infrastructure built to last 5–10 years. It pays to invest in robust design, observability, and a test environment with realistic data volumes. Then the integration will quietly work in the background while you focus on the business, not on data drift.