They Do Not Fail on Build Day
Most ERP integrations look reliable when they first go live.
An order is placed. It reaches the ERP. Inventory updates. The response comes back. Everything appears to work as expected.
And during testing, it probably does.
The problem is that testing usually proves that an integration can process a transaction. It does not always prove what happens when hundreds or thousands of transactions are moving between systems, APIs slow down, responses arrive late, or one system temporarily becomes unavailable.
That difference matters.
An integration processing 20 orders a day is dealing with a very different operating environment from one handling thousands of orders across an eCommerce store, marketplaces, POS systems, warehouses and other sales channels.
As volume grows, small weaknesses in the architecture become operational problems.
And they rarely announce themselves with a complete system failure.
The Failure Is Usually Silent
This is what makes integration failures particularly dangerous.
Imagine a customer places an order.
The eCommerce platform sends it to the ERP.
The ERP successfully creates the order — but the confirmation response takes too long to return.
From the ERP’s perspective:
Order created successfully.
From the eCommerce platform’s perspective:
Request failed.
Both systems have behaved logically.
But they now disagree about what happened.
The customer may still see the order as processing. Operations may see it inside the ERP. Inventory may already have changed. A retry may create another transaction.
Nothing necessarily crashes.
There may be no dramatic error screen.
Instead, the problem appears later as a duplicate order, incorrect stock level, missing shipment, payment discrepancy, or something the operations team has to investigate manually.
That is why silent integration failures are often more expensive than visible ones.
A visible failure gets attention.
A silent failure becomes an operational problem.
A silent failure becomes an operational problem.What Happens When Both Sides Retry
Retries sound like a sensible safety mechanism. If something fails, try again.
The problem is that a timeout does not always mean the original transaction failed. Sometimes it simply means the sender never received confirmation that it succeeded.
So the eCommerce platform retries. The middleware may retry. The ERP connector may have its own retry mechanism.
Now one original transaction can become several attempts to perform the same action.
For an eCommerce business, this can mean:
- Duplicate orders
- Duplicate invoices
- Stock being reduced twice
- Repeated fulfilment requests
- Inconsistent payment records
- Unnecessary API traffic
And under heavy load, retries can make the original problem worse.
More requests create more pressure. More pressure increases response times. Longer response times create more timeouts. More timeouts trigger more retries.
What started as a temporary slowdown can turn into a much larger operational issue.
Half-Written Records
Duplicate transactions are only one type of failure.
Many business processes involve several connected steps. For example, processing an order may require the system to:
- Create the customer
- Create the order
- Reserve inventory
- Create an invoice
- Send the transaction to fulfilment
But what happens if the first three steps succeed, and the fourth fails?
The system now has a partially completed business transaction. The order exists. Inventory may already be reserved. But the invoice does not. Or perhaps the ERP contains the order, while the warehouse never receives it.
From a software perspective, several individual operations succeeded. From the business perspective, the process failed.
This is usually where teams end up creating spreadsheets, manual checks, and reconciliation processes—workarounds around the very systems that were supposed to remove manual work in the first place.
As transaction volume increases, those exceptions become harder to identify and more expensive to resolve.
Nothing Checks the Two Agree
Sending data successfully is only half of an integration.
The other half is knowing whether both systems still agree afterwards.
Suppose your eCommerce platform says:
1,248 orders processed today.
But the ERP contains:
1,244 orders.
Which four are missing?
More importantly:
How quickly would your team know?
In many businesses, the answer is uncomfortable.
They discover the mismatch when a customer asks where an order is, finance finds a discrepancy, the warehouse cannot locate a shipment, or someone manually compares reports.
At low volume, people compensate for weak reconciliation.
At scale, they cannot.
Reliable integrations therefore need more than data movement. They need a way to detect when the systems that should agree no longer agree.
That might mean checking order counts, transaction states, inventory movements, payment references or other critical business records.
Because successful API calls do not necessarily mean successful business operations.
Nobody Owns the Contract
ERP integrations often connect systems built by different vendors, maintained by different teams, and changed on different schedules.
The eCommerce team changes a field.
The ERP changes a status.
A marketplace introduces a new order type.
A payment provider changes how a response is returned.
Individually, each change may appear harmless.
But integrations depend on an unwritten agreement between systems:
- What data will be sent?
- What does each field mean?
- Which system owns it?
- What happens when it changes?
- What happens when something goes wrong?
When nobody owns that agreement, integrations gradually become fragile.
This is particularly common in businesses that have grown organically.
A new sales channel gets connected.
Then another marketplace.
Then a POS.
Then a warehouse.
Then finance software.
Eventually, the business has an ecosystem of integrations — but no single view of how information is supposed to move through it.
At that point, adding another integration does not just add another connection.
What Actually Prevents This
The answer is not simply “better APIs”.
Reliable ERP integration requires designing for the assumption that things will occasionally fail.
- APIs will time out.
- Networks will be slow.
- Third-party systems will become unavailable.
- Transactions will arrive twice.
- Responses will arrive late.
The architecture should expect those conditions rather than treating them as unusual events.
In practice, that means designing integrations around principles such as:
-
Safe retries
The same transaction can be attempted again without accidentally creating another order, invoice, or payment. -
Controlled processing
Transactions do not all compete for processing at the same moment simply because volume suddenly increases. -
Clear transaction states
The business can see whether something is waiting, processing, completed, or needs attention. -
Reconciliation
Connected systems are periodically checked to make sure important records still agree. -
Monitoring and alerts
Teams are notified about meaningful failures before customers or finance teams discover them. -
Clear ownership
Every important piece of information has a defined source of truth.
None of these are particularly visible when everything is working.
That is precisely the point.
Good integration architecture becomes most valuable on the days when everything doesn’t work perfectly.
Final Summary
An ERP integration should not be judged only by whether it can move data from one system to another.
The harder questions are:
- What happens when volume increases?
- What happens when a request times out halfway through?
- Can the same transaction safely arrive twice?
- How do we know when two systems disagree?
- Who gets alerted when something goes wrong?
- Can the business recover without someone manually repairing the data?
These questions become increasingly important as a business adds more orders, channels, warehouses, marketplaces, and connected systems.
Integration problems rarely begin with a single catastrophic failure.
They start with small inconsistencies:
- A missing order here.
- A duplicate invoice there.
- Stock that does not quite match.
- A spreadsheet someone created to reconcile two systems every Friday.
Each one seems manageable on its own.
But together, they are often a sign that the business has started to outgrow the architecture underneath it.
The goal isn’t to build integrations that never encounter failure.
It’s to build systems that know what to do when failure happens.