Integrations

Sits between your storefront, your couriers and your books.

Three connections carry the whole operation. Each one is two-way, automatic, and built to keep working when something upstream misbehaves.

Shopify

Your storefront stays the storefront. Orders, products, inventory and fulfilment move both ways, continuously.

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.

Your whole history, imported

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.

Fulfilment pushed back

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.

Inventory kept honest

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.

Modern OAuth, either way

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.

Rate limits handled

Every call backs off and retries when Shopify throttles. Large syncs slow down instead of failing, and nobody has to babysit them.

ERPNext

Optional, and off by default. Switch it on and fulfilment stops being a spreadsheet exercise and starts being accounting.

Invoices raised on pack

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.

Held until payment is verified

A prepaid order whose advance nobody has confirmed will not post. It waits, visibly, until accounts verifies the payment — then releases immediately.

Returns credited and restocked

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.

Settlements post themselves

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.

Inventory from a single source

ERPNext holds the truth about stock. Every movement — sale, purchase, transfer, adjustment — flows out to the catalogue and up to Shopify as it happens.

Same server, no middleware

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.

Couriers

Carrier-neutral by design. The system works for you, not for whoever is carrying the parcel.

Consignments from the order

Generate or cancel a consignment number without leaving the order, for any connected carrier.

Tracking that updates itself

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.

Labels that scan first time

Barcoded shipping labels and courier load sheets, printed straight from the system.

City lists cached

Each carrier’s serviceable destinations are held locally and refreshed on demand, so unserviceable addresses surface at your desk instead of at their counter.

Live today
  • Tranzo
  • MNP
  • Leopard

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.

Not sure it fits your stack?

Tell us what you run — storefront, accounting, couriers — and we will tell you honestly what connects today and what would need building.