Shopify sells it. ERPNext runs it. Xero counts it.
One operating core for African businesses that sell online and to corporate customers — stock in one place, quotes that don't fall through the cracks, purchasing that credits the job it was bought for. Shopify stays your storefront; Xero stays your accountant's truth; ERPNext owns everything in between.
01 · Who this is for
Gifting, retail, food, décor, small manufacturers with a direct channel: 2–20 staff, R5m–R80m turnover, already on Shopify or about to be, running stock in a spreadsheet, a WooCommerce plugin or the accounting package, and quoting corporate orders by email.
| What you have today | What it costs you | What replaces it |
|---|---|---|
| Stock in three places — the store, the accounting package, a spreadsheet | Overselling, stock-outs, an afternoon a week reconciling | ERPNext is the one owner of stock; Shopify only ever displays the sellable quantity |
| Corporate quotes by email, re-typed into invoices | Slow quotes, duplicates, things that fall through the cracks | Quote → job → reserve or order per line → receive → fulfil, with an owner per step |
| QuickBooks or Sage used as a stock system | An accounting tool doing a job it was never built for | Xero as the ledger, fed one way from ERPNext |
| Cin7 Core, Unleashed, Katana | R6k–R11k a month in USD, forever, and you rent it | Open source you own, hosted in South Africa |
02 · The three rules we never negotiate away
Every failed Shopify–ERP–accounting integration we have been called in to fix broke one of these.
03 · What runs where
| Layer | Component | Notes |
|---|---|---|
| Storefront | Shopify — yours | Payfast or Paystack; Shopify Payments is not available in South Africa |
| Operations core | ERPNext v15/v16 + the official Shopify connector (ecommerce_integrations) + erpnext_south_africa + a small custom app | The custom app carries the connector patches and guards we have already paid for once |
| Ledger | Xero preferred; Sage supported; QuickBooks only as a migration source | Xero's own Shopify app for consumer sales; our Cloudflare Worker pushes corporate invoices |
| Edge and glue | Cloudflare Workers and Pages | Enquiry-form intake, the Xero push, small portals, BI dashboards |
| Hosting | Frappe Cloud (Johannesburg or Cape Town) or your own cloud account — your choice | Data in South Africa either way |
| AI | ERPNext MCP connector + role agents | Finance, warehouse and exec agents on top of the same data — a product line, not a promise |
Two warehouses, not two hundred. Website (what Shopify may sell) and Corporate (held for jobs). "A warehouse per job" is a reservation against a sales order, not a warehouse. Moving-average valuation, stock reservation on, auto-reserve on purchase receipt on.
04 · What ERPNext does for you that Shopify apps and accounting packages cannot
- Quotes with images, bundles and custom lines — existing or new client, edited and re-sent, an owner and a status on a board.
- Per-line sourcing on an accepted job — from website stock, in part, or order it all; to-order lines land on a supplier ordering board; the purchase order per supplier; goods arriving are credited to the job that bought them.
- Execution checklists — packaging, ribbon, tags, delivery date, notes; a step owner; at-a-glance status.
- Stock accuracy the store can trust — sellable stock and stock held for jobs are never confused, and the store only ever sees the former.
- Trade without premium-tier e-commerce fees — price lists, credit limits and B2B logins are native.
- Draft orders and a second Shopify location are a fine four-week stopgap — we recommend them on day one. They cannot do per-line sourcing, supplier boards, receipt-to-job crediting or checklists.
05 · How we deliver — sandbox first, always
Sandbox (a Shopify dev store + our ERPNext sandbox + a Xero demo) → sign-off → live store read-only (orders in) → physical count → opening stock → lock negative stock → inventory push → price push only on request.
| Stage | What | Duration |
|---|---|---|
| Proof of concept, Lite | Your real data in a sandbox, one integration proven end to end, findings and a go / no-go | 1 week |
| Proof of concept, Standard | + data load and a reconciliation sample, walkthroughs | 2–3 weeks |
| Production build (Standard) | Stock and quote core, connector live, migration, count, training | 4–6 weeks elapsed |
| Managed service | Monitoring, backups, upgrades, connector re-patching, support desk — you still operate the business | Monthly |
| AI role agents | Finance, warehouse and exec agents on the MCP connector | Setup + monthly |
06 · What it costs
ZAR, ex-VAT. Fixed fee per phase. A proof of concept is never free — and it is credited in full against the build. Founding customers of a new pattern are anchored lower and told so in writing.
One week, your data, one integration proven, go / no-go. Credited 100% against the build.
Stock and quote core, connector live, migration, count, training. 4–6 weeks.
Execution checklists and finance edges; B2B customer portal; gift-builder and storefront features; BI layer.
Care (8 h) · Operate (20 h) · Partner (40 h). Hosting passed through at cost on top. Overflow at the consultant rate.
Full commercial model, including the manufacturing patterns: The commercial model.
07 · Where it runs — your account, your keys
Everything runs in accounts you own: your Frappe Cloud team or your cloud project, your Shopify store, your Xero, your GitHub organisation with all the code. Backups restore anywhere. If we part ways, you keep the lot. The choice between Frappe Cloud, your own cloud, a local data centre and self-hosting is a real one with real trade-offs — the hosting decision tree walks it.
08 · The usual objections, answered straight
| Objection | Answer |
|---|---|
| "Why not just Shopify apps?" | Draft orders and a second location are a fine four-week stopgap and we recommend them on day one. They cannot do per-line stock sourcing, supplier ordering boards, receipt-to-job crediting or job checklists. |
| "Why not Cin7 / Unleashed?" | Strong stock, R6k–R11k a month in USD forever, no quotes with images, no checklists, no enquiry intake — and you rent it. |
| "Why not Odoo?" | A peer with prettier quotes; paid connectors and a per-user licence. Our patterns and patches are ERPNext. Fallback if quote presentation decides the deal. |
| "Do we lose the accountant?" | No. Xero stays the ledger; receipts are allocated there from the bank feed and ERPNext reads paid status back. Never bidirectional. |
| "What if we part ways?" | Everything runs in accounts you own. Backups restore anywhere. The playbooks that built it are published on this site. |
Sources
The two 2026 builds behind this page (make-to-order furniture on our own cloud box; gifting retailer on Frappe Cloud Johannesburg) · Shopify → ERPNext setup · Operating with Shopify · Xero ↔ ERPNext · Frappe's ecommerce_integrations (1.17 on v16, 1.20 on v15) · Shopify Dev Dashboard app policy (legacy custom apps closed to merchant stores from 1 Jan 2026).