ERP e-commerce integration connects your online channels, such as a Shopify store, a WooCommerce site or an Amazon seller account, to your ERP so that orders flow into the back office automatically, and stock, prices and product data flow back out. Done well, nobody re-keys an order, overselling becomes rare, and finance sees every sale, fee and refund in the ledger.
The technology is the easier half. The harder half is deciding which system is the master for each kind of data, what happens when the two disagree, and how returns, partial shipments and marketplace fees are handled. This guide works through those decisions, then covers what the main platforms offer for integration and how to test it.
If you need the connection built or rebuilt, our ERP integration services team works with packaged and custom ERPs; for broader connections between several platforms, see systems and API integration.
Which system should be the master for each record?
Each record should have one owner, and everyone should know which. A typical split is: the ERP owns items, costs, stock and accounting; the channel owns the customer's checkout and the order as placed; marketing content may live in the channel or a product information tool.
| Data | Usual master | Flows to | Notes |
|---|---|---|---|
| Item codes (SKUs) and variants | ERP | Channels | Never let a channel create SKUs the ERP does not know |
| Product descriptions and images | Channel or PIM | Rarely the ERP | Keep marketing copy out of the ERP unless you need it on documents |
| Prices and promotions | ERP for list prices; channel for campaign discounts | Both | Decide where a discount is recorded so margin reports stay right |
| Stock available to sell | ERP | Channels | Send available quantity, not on-hand |
| Orders | Channel (at creation) | ERP | ERP takes over once imported: picking, shipping, invoicing |
| Shipment and tracking | ERP or warehouse system | Channel | Triggers the customer notification |
| Returns and refunds | Split; agree it explicitly | Both | The most common source of mismatches |
| Payouts and fees | Payment provider or marketplace | ERP | Reconciled against the bank, not just order totals |
Why "available" is not "on hand"
Sending raw on-hand stock to a channel oversells, because some units are already committed to open orders, damaged or held. Shopify's own inventory model on shopify.dev reflects this: inventory levels per location carry separate states, including incoming, on hand, available, committed, reserved, damaged, safety stock and quality control. Your ERP should calculate the sellable figure and send that, optionally holding back a buffer for fast-moving lines.
How do orders, stock and prices actually sync?
Most integrations combine three patterns: events (webhooks) for speed, scheduled polling for safety, and periodic full reconciliation to catch anything missed.
- Webhooks. The channel notifies your integration when something happens, such as an order created or refunded. Fast, but not guaranteed. Shopify's developer documentation states that it does not guarantee ordering of webhooks and that delivery is not always guaranteed, and it recommends verifying HMAC signatures, ignoring duplicates by webhook ID and running reconciliation jobs that periodically fetch data.
- Polling. The integration asks the channel every few minutes for orders changed since the last check. Slower, simpler and a good safety net.
- Reconciliation. A nightly job compares order counts, totals and stock levels on both sides and raises exceptions for a person to resolve.
Whatever the pattern, make each step idempotent: importing the same order twice must not create two sales orders. Use the channel's order ID as a unique external reference in the ERP. Our guide to system integration approaches explains the trade-offs between direct API calls, middleware and event queues.
What do Shopify, WooCommerce and Amazon offer for integration?
All three have documented APIs, but they differ in style, authentication and rules. Checked against each platform's developer documentation in October 2026:
| Platform | Main API | Notes for ERP integration |
|---|---|---|
| Shopify | GraphQL Admin API | Shopify's docs describe the REST Admin API as legacy since October 2024, and new public apps must use the GraphQL Admin API from April 2025. Inventory is held per location with the quantity states above. Webhooks need signature checks and a reconciliation job. |
| WooCommerce | WooCommerce REST API (wc/v3 namespace) | Covers orders, products, refunds and webhooks. Authenticates with consumer key and secret over HTTPS. Because WooCommerce runs on your own WordPress hosting, plugins and server performance affect integration reliability. |
| Amazon | Selling Partner API (SP-API) | REST-based and JSON, replacing the older MWS. Includes separate APIs such as Orders, Listings Items, Feeds, Reports, FBA Inventory, Finances and Notifications. Fulfilled-by-Amazon stock sits in Amazon's network, so the ERP must treat it as a separate location. |
Two practical consequences. First, if you have an older Shopify connector built on REST, ask whether it is maintained against current API versions. Second, Amazon settlements combine sales, fees, refunds and adjustments, so posting them to the ledger needs a settlement-level reconciliation, not just order totals.
Should you use a connector, middleware or a custom integration service?
There are three ways to build the link, and the right one depends on how many channels you run and how standard your ERP is.
| Approach | What it is | Fits | Trade-off |
|---|---|---|---|
| Off-the-shelf connector | A ready-made app between one channel and one ERP | One or two channels, a mainstream ERP, standard processes | Limited control over rules; you depend on the connector vendor keeping up with API changes |
| Integration platform (middleware) | A hosted tool where flows are configured from building blocks | Several systems, an in-house team that can maintain flows | Another subscription and another skill set; complex rules can become hard to read |
| Custom integration service | Code you own that sits between the ERP and every channel | Shared stock across channels, custom or older ERP, finance-specific posting rules | Higher build effort; needs monitoring and maintenance like any application |
Whichever you choose, insist on three things: a log of every message with its status, a way to replay failed messages, and an alert when something sits in error. Without these, problems surface as customer complaints rather than as exceptions someone can fix.
Multi-location and marketplace-held stock
If you hold stock in several warehouses or stores, decide which locations feed which channel. A store might sell only from the main warehouse, while marketplace orders ship from a third-party logistics site. Model marketplace-held stock, such as stock sent to Amazon for fulfilment, as its own location in the ERP, update it from the marketplace's inventory reports, and post transfers to it when you ship stock in. That keeps total stock value right in the ledger, even though you cannot pick from that location yourself.
How should returns and refunds be handled?
Agree one returns flow and map every step to one system. Returns cause more reconciliation trouble than any other area because the refund, the stock movement and the credit note can each happen in a different system at a different time.
An illustrative flow for a retailer selling on Shopify with stock in its own warehouse:
- Customer requests a return in the store; the channel records the return request.
- Warehouse receives the parcel and inspects it in the ERP or warehouse system: resaleable, damaged or write-off.
- ERP posts the stock movement to the right status and creates the credit note.
- Refund is issued (in the channel or payment provider) only after inspection, or immediately if your policy says so.
- Integration links the refund back to the ERP credit note by order reference, so finance can match it to the payout.
Edge cases to decide up front: refunds without a return, exchanges, partial refunds on discounted bundles, and marketplace-initiated refunds you did not trigger.
What should you test before going live?
Test real scenarios end to end, using copies of real products and real tax settings. Use this checklist:
- An order with several lines, a discount code and shipping charges imports once, with correct tax
- The same webhook delivered twice creates one ERP order
- A partial shipment updates the channel and the customer sees tracking
- Stock sold in-store or on another channel reduces available quantity everywhere within the agreed time
- A price change in the ERP appears in each channel, and campaign discounts do not overwrite list prices
- A return, a refund without return and a partial refund each reconcile to the payout
- Marketplace fees post to the right expense accounts
- An integration outage queues messages and replays them in order when it recovers
- Someone is alerted, by name, when an exception sits unresolved
When is a custom integration not the right choice?
If you run one Shopify store on a mainstream ERP with standard processes, a maintained off-the-shelf connector is often cheaper and quicker. Build custom when:
- You sell on several channels with shared stock and need one allocation rule.
- Your ERP is custom, old or not supported by connectors.
- Bundles, kits, made-to-order items or B2B price lists do not map cleanly.
- Finance needs fee-level settlement posting the connector does not provide.
If you plan to change ERP in the next year, connect the new system rather than investing in the old one. Related reading: ERP and CRM integration and the ERP inventory management module.
How to start your ERP e-commerce integration
Prepare a one-page integration brief:
- Channels in scope and order volumes by month, including peaks.
- The master-data table above, filled in for your business.
- Your returns flow, written as steps.
- Current pain points with examples: oversold orders, missing refunds, manual re-keying.
- Who resolves exceptions day to day.
Our software requirements brief template gives you a structure for the rest. Then discuss the project with us. Timeline Digital builds 2 to 3 key modules as a free pilot before the full project starts, which for an integration usually means one channel's order and stock flows working end to end.