Architecture patterns
Connect your systems without the tangle, and know when not to.ERP integration patterns
Patterns for connecting an ERP, a store, a bank and the rest. Each says when to use it, when not to, and how it breaks.
6 patterns. Each names its sources, with the date we read them.
Count the wires
Add systems and watch the links grow.
- 1ERP
- 2Store
- 3Gateway
- 4Bank
- 5WhatsApp
- 6Courier
Counted, not measured. Not every pair needs a link: the explorer lets you count yours.
Start from what is going wrong.
Integration · reviewed 14 Oct 2026
Every new tool means another link to build
Point-to-point vs a hub
Integration · reviewed 14 Oct 2026
We check an API every minute and mostly find nothing
Webhooks vs polling
Integration · reviewed 14 Oct 2026
The same payment was booked twice
Idempotent webhooks
Integration · reviewed 14 Oct 2026
The order saved, but nobody was told
Transactional outbox
Integration · reviewed 14 Oct 2026
A sale on one channel sold the last unit on another
Eventual consistency in stock
Integration · reviewed 14 Oct 2026
The books and the bank disagree at month‑end
Reconciliation as a job
Next: cutover strategies. Need one sooner?
Every pattern is built the same way.
The seven parts
The problem
What goes wrong, in plain words, before any solution.
Use it when
The conditions where it pays.
Skip it when
The size or case where it does not. Every pattern has one.
Try it
A model you can move, with sample data.
What you give up
The trade-offs, and how it fails, each with its source.
In ERPNext, Frappe and Medusa
The exact doctype, field, setting or file, at a named version. Medusa where a pattern uses it.
Related
The glossary term, the post and the guide chapter behind it.
How they are checked
- Sources
- The maker's own docs or code, named by version or date.
- Failure modes
- Documented behaviour. None is a MithTech client result.
- Versions
- Frappe and ERPNext at a named release or branch. Medusa at v2.21.2, with one history row at v1.20.11.
- Reviewed
- Each page shows the date it was last read against its sources.