Orders arrive twice over
Webhooks deliver each order the instant it is placed; a five-minute poll runs behind them and catches anything a webhook missed. Two independent paths means no silent gaps.
Three connections carry the whole operation. Each one is two-way, automatic, and built to keep working when something upstream misbehaves.
Your storefront stays the storefront. Orders, products, inventory and fulfilment move both ways, continuously.
Webhooks deliver each order the instant it is placed; a five-minute poll runs behind them and catches anything a webhook missed. Two independent paths means no silent gaps.
A bulk import pulls existing orders through Shopify’s bulk API — running in the background, surviving interruption, resuming from where it stopped. Built for six-figure order histories.
When a parcel ships, Shopify learns about it — fulfilment status and tracking number — so the customer’s account and notification emails stay correct without anyone retyping.
Stock levels sync up to Shopify as on-hand quantities, which lets Shopify keep its own committed count and avoids the overselling that direct availability writes cause.
Connect a store you own with client credentials, or install as an app on a merchant’s store through the standard authorisation flow. Tokens refresh themselves.
Every call backs off and retries when Shopify throttles. Large syncs slow down instead of failing, and nobody has to babysit them.
Optional, and off by default. Switch it on and fulfilment stops being a spreadsheet exercise and starts being accounting.
Once an order is packed and has a courier, its sales invoice is raised automatically — against the courier, because in a COD market the courier is who owes you the money.
A prepaid order whose advance nobody has confirmed will not post. It waits, visibly, until accounts verifies the payment — then releases immediately.
A received return posts a credit note against the original invoice, reversing the revenue and the courier receivable, and puts the stock back — in one document.
The courier statement becomes payment entries: courier cash in one, each prepaid method cleared from its own account, deductions for shipping and withholding tax booked where they belong.
ERPNext holds the truth about stock. Every movement — sale, purchase, transfer, adjustment — flows out to the catalogue and up to Shopify as it happens.
ERPNext runs on the same site, so the integration talks to it directly. There is no sync service to fail, no queue to back up, no third system to keep alive.
Carrier-neutral by design. The system works for you, not for whoever is carrying the parcel.
Generate or cancel a consignment number without leaving the order, for any connected carrier.
Scan events are pulled every fifteen minutes and normalised into one shared status vocabulary, so Leopard and MNP shipments read the same way on your screen.
Barcoded shipping labels and courier load sheets, printed straight from the system.
Each carrier’s serviceable destinations are held locally and refreshed on demand, so unserviceable addresses surface at your desk instead of at their counter.
Ship with someone else? The courier layer is built as swappable adapters, so adding a carrier means writing one adapter against their API — not reworking the system. Tell us who you use and we will scope it.
Tell us what you run — storefront, accounting, couriers — and we will tell you honestly what connects today and what would need building.