Skip to main content
Stokka

Integrations

How to sync Shopify and Xero inventory properly

Shopify and Xero are both authoritative about something they disagree on: your stock count. Here is how the integration actually works, why it drifts, and the setup that keeps the two sides honest.

20 April 20267 min read

Shopify is an authoritative source of orders. Xero is an authoritative source of money. Both also hold a stock count, and those two counts almost never agree for long. If you are on this page, you already know. The question is how to stop fighting it.

Why the two counts drift

Shopify's stock count decreases when a shopper completes a purchase. Xero's inventory count (if you are using Xero Inventory) decreases when you raise an invoice. Those are different events at different times. A pre-order, a partial ship, a refund, a manual invoice to a wholesale buyer, any of those introduces a gap.

On top of that, neither system knows about production. If you make the product, Shopify never sees the input stock change. Xero sees it only if you manually adjust.

The three integration shapes

  1. Shopify → Xero only.Orders flow from Shopify to Xero. Invoices are raised. Stock in both systems drifts in its own way and you reconcile monthly. Works for retail-only operators who don't make the product.
  2. Xero Inventory as source of truth. You push stock counts from Xero to Shopify. Works if you have simple SKUs, no BOMs, no production, no multi-warehouse setup.
  3. A manufacturing / inventory system in the middle. A third system owns stock. Shopify takes orders, Xero takes invoices, and the middle system is the one that actually knows how much of anything you have. This is the only shape that survives any real complexity.

Two-way sync, specifically

“Two-way sync” means the two systems actively update each other. The specific behaviours that matter:

  • Orders flow from Shopify in real time so stock is reserved the moment a customer pays.
  • Invoices and payments flow to Xero with the right tax codes and account mappings.
  • Stock changes originating in production or purchasing flow back to Shopify so your listing quantity stays accurate.
  • Refunds and returns round-trip cleanly through both systems without duplicate accounting.

Common setup mistakes

  • Two systems both writing stock to Shopify. Xero writes 50, your inventory tool writes 47, race condition, both overwrite each other through the day.
  • SKU mismatches. Shopify has LIP-RNO-01, Xero has LIP_RNO, your inventory tool has LIPRNO. None of them sync correctly. Standardise before you integrate.
  • Pre-orders marked as available stock.Shopify sells a pre-order SKU, your system reserves nothing because it doesn't exist yet, shipping is a surprise.
  • Manual Xero invoices outside the integration. A wholesale invoice raised directly in Xero decrements nothing. Either raise it in the upstream system or run a weekly recon.

A practical setup that works

  1. Pick one system of record for stock. For anyone with a production BOM, that is not Shopify and not Xero. It is a dedicated inventory / manufacturing system.
  2. Shopify owns: orders, payments, customer-facing stock display. It reads stock from the system of record.
  3. Xero owns: invoices, tax, bank reconciliation. It receives invoices from the system of record, not directly from Shopify.
  4. The system of record owns: BOMs, production, purchasing, multi-warehouse stock, batch traceability. Everything upstream.
  5. One reconciliation cadence. Weekly, not monthly. A drift of a week is recoverable. A drift of a month is not.

If you make the product

A pure Shopify ↔ Xero integration cannot cope with manufacturing. You need visibility of:

  • Raw material stock by supplier batch.
  • Production runs consuming batches and producing finished batches.
  • Finished goods stock by warehouse.
  • Shipment-to-batch linkage for traceability.

None of that is in scope for Shopify or Xero. It lives in the system of record, and the integrations are how Shopify and Xerolearn about the consequences.

How Stokka fits

Stokka is designed to be the system of record for small manufacturers. Xero, QuickBooks and Shopify sync is coming at launch, meaning Shopify orders will flow in and reserve stock automatically, Xero will receive invoices with the right tax codes and account mappings, and stock counts on Shopify PDPs will stay accurate from the production floor, not from a spreadsheet.

Pre-orders, wholesale invoices, partial shipments, refunds, all the cases that make a Shopify-to-Xero direct sync drift, are handled in one place.

Further reading

If you are still running the stock count in a spreadsheet, read the MRP switchover. If the root problem is actually that your BOMs never net against stock, start with what MRP is. For the traceability layer that sits on top, see the batch tracking playbook.

Keep reading

Related posts