If your bookkeeper has ever asked “why doesn’t this Shopify payout match the total of these orders,” you’ve run into the core problem this post is about. Shopify and Xero don’t talk to each other out of the box, and the gap between “orders happened in Shopify” and “money is correctly recorded in Xero” is where most Australian merchants’ accounting gets messy, usually without anyone noticing until BAS time.
This post is a technical, practical guide to setting up a genuinely clean Shopify-to-Xero sync: what your options actually are, what “clean” means in concrete terms (not just “it syncs”), the mistakes we see Australian merchants make most often, and a setup checklist you can work through directly.
This is written for merchants and ops people who want to understand the mechanics well enough to either do it properly themselves or brief a bookkeeper or developer accurately, not just install an app and hope.
Why Shopify and Xero Don’t Sync Natively
Shopify is an ecommerce platform; Xero is an accounting platform. Neither is built to understand the other’s data model natively, so there’s no built-in “connect to Xero” toggle in Shopify admin. You have three broad ways to bridge the gap:
- A dedicated Shopify-Xero connector app (from the Shopify App Store), purpose-built apps that map Shopify orders, payments, refunds and fees into Xero invoices and bank reconciliation entries automatically, usually on a daily or near-real-time sync.
- Manual CSV export/import, exporting Shopify order and payout data and manually building journal entries or invoices in Xero. Workable for very low order volumes, but it doesn’t scale and is prone to human error.
- Middleware/custom integration, a custom-built integration (often via Shopify’s API and Xero’s API) for merchants with non-standard requirements: multiple sales channels, custom chart of accounts logic, or ERP systems sitting between the two.
Most Australian merchants land on option one, and for good reason, it’s the fastest path to something reliable. But “installed an app” and “clean sync” are not the same thing, which is the whole point of this post.
What “Clean” Sync Actually Means
A lot of merchants think they have a working Xero integration because invoices are appearing in Xero. That’s the minimum bar, not the goal. A genuinely clean sync means all of the following are true.
Orders reconcile against actual payouts, not just gross sales
Shopify Payments (and other gateways) don’t deposit your full order total into your bank account, they deposit a payout, which is gross sales minus processing fees, batched on whatever schedule Shopify uses for your account. A clean sync records the gross sale, the processing fee as a separate expense line, and reconciles the net amount against the actual bank deposit. If your Xero bank reconciliation is just matching “one payout” against “one invoice,” you’re almost certainly missing the fee breakdown.
Fees are accounted for correctly, not buried in revenue
Shopify Payments fees, third-party gateway fees, and app transaction fees should hit their own expense account, not silently reduce your recorded revenue. This matters for accurate margin reporting and for your accountant being able to actually see what payment processing is costing you.
GST is handled correctly for Australian sales
This is the single biggest source of errors we see. Shopify calculates and collects GST at the point of sale based on your tax settings, but that GST figure needs to map to the correct GST codes in Xero (GST on Income, GST Free, etc.) for your BAS to be accurate. If your Shopify tax settings and Xero tax rates aren’t aligned, particularly around any GST-free products, or sales to customers outside Australia, you can end up over- or under-reporting GST. If you haven’t already got this dialled in on the Shopify side, our Shopify GST setup guide is worth working through before you focus on the Xero side, since a clean Xero sync depends on clean tax data coming out of Shopify in the first place.
Multi-currency handled correctly (if relevant)
If you sell internationally, Shopify may be processing orders in multiple currencies via Shopify Payments’ multi-currency feature or Shopify Markets. Xero needs matching currency handling, correct FX rate application, and realised/unrealised gain or loss tracking if you’re not converting everything to AUD at the point of sale. This is one of the more technically fiddly parts of the integration and worth testing carefully with real orders before relying on it.
Refunds and partial refunds sync correctly
A full refund should reverse the original invoice cleanly. A partial refund, increasingly common with Shopify’s partial refund and store credit options, needs to correctly adjust both the invoice value and the GST component, not just the headline amount. This is a common failure point in cheaper or poorly configured connector setups.
No duplicate invoices
Duplicate invoicing usually happens when an app double-processes an order (often after a manual retry, a failed webhook, or an order edit in Shopify), or when both an automated app and manual entries are being used for the same order. It sounds obvious, but it’s one of the most common issues we get asked to untangle, usually discovered when Xero’s total revenue doesn’t match Shopify’s reports for the same period.
Common Mistakes Australian Merchants Make
In our experience helping merchants clean up broken or messy Shopify-Xero setups, the same handful of issues come up repeatedly.
- Mismatched GST codes, Shopify products tagged as taxable but mapped to a GST-free Xero account (or vice versa), usually from chart-of-accounts mapping being set once at install and never revisited as the product range changed
- Reconciling against gross payouts instead of net, or against individual orders instead of payout batches, leading to a bank reconciliation that “sort of” balances but hides fee or timing discrepancies
- Chart of accounts not properly mapped at setup, shipping revenue, discounts, and gift card sales all landing in one generic “sales” account instead of their own trackable accounts
- Inventory and COGS not flowing through at all, most Shopify-Xero connector apps handle sales and payments well but don’t touch cost of goods sold or stock valuation, which needs to be handled separately (often via inventory reporting rather than the accounting sync)
- Multi-currency orders posted at the wrong FX rate, using the transaction date rate instead of the payout date rate, or not distinguishing realised gains from the underlying sale
- No one reconciling after go-live, the integration is set up, checked once, and then left unmonitored, so a broken sync (an app disconnected after a Shopify API update, for example) can run silently for weeks before anyone notices the numbers are off
Setup Checklist for a Clean Shopify-Xero Sync
Work through this before you consider the integration “done,” not just at initial setup.
- Confirm your Shopify tax settings are correct first, GST registration status, correct tax rates applied per product/region, and GST-free items properly flagged
- Map your Xero chart of accounts deliberately, separate accounts for product sales, shipping revenue, discounts, gift cards, and processing fees, rather than accepting connector app defaults
- Match GST codes between Shopify and Xero line by line, don’t assume the default mapping is correct for your product mix
- Decide your payout reconciliation method upfront, reconcile against payout batches (recommended for most stores) versus individual orders, and configure the app accordingly
- Test refunds and partial refunds with real transactions before relying on the integration, confirm the GST component adjusts correctly, not just the total
- Set up multi-currency handling explicitly if you sell internationally, and confirm which FX rate and gain/loss treatment is being used
- Decide how COGS and inventory value will be handled, most integrations don’t do this automatically, so agree on a separate process (manual journal, inventory app, or ERP-level integration)
- Run a parallel reconciliation for the first full month, compare Shopify’s own sales reports against what’s landed in Xero before trusting the integration unsupervised
- Set a recurring monthly check, even a working integration can silently break after a Shopify or Xero API change, an app update, or a change to your tax settings
When to Bring in a Specialist
A basic connector app install is genuinely a DIY-friendly job for a low-volume store with simple, single-currency, GST-standard sales. Where it gets harder, and where we see the most costly mistakes, is multi-currency stores, stores with a mixed GST-free/taxable product range, high order volumes where reconciliation errors compound quickly, or stores that need inventory and COGS flowing through properly. If any of that sounds like your setup, or you’ve inherited a Shopify-Xero connection that’s never quite reconciled cleanly, it’s worth having someone check the mapping properly rather than letting a small error compound every BAS cycle. Our Shopify Xero integration work is specifically about getting this mapping right for Australian tax requirements, not just installing the connector and calling it done.
FAQ
Is there an official Shopify Xero integration?
There’s no single “official” integration built by either Shopify or Xero, but there are Xero App Store and Shopify App Store-listed connector apps purpose-built to sync the two. The quality and depth of GST handling, refund handling and reconciliation logic varies significantly between them, so it’s worth checking exactly what each app does with fees, GST and partial refunds before committing.
Why doesn’t my Xero bank reconciliation match my Shopify sales?
This almost always comes down to reconciling against gross sales instead of net payouts. Shopify Payments deducts processing fees before depositing funds, so your bank deposit will be lower than your total order value for that period. A clean setup records the fee as a separate line item so the net figure actually reconciles.
Do I need a Shopify Xero integration if I have low order volume?
If you’re processing a handful of orders a week, manual entry or CSV export can be workable, particularly early on. Once volume grows past roughly 20-30 orders a week, the time cost and error risk of manual entry usually outweighs the cost of a connector app.
How does GST get handled in a Shopify Xero sync?
Shopify calculates GST at checkout based on your configured tax settings, and a properly configured connector app maps that GST to the correct Xero tax codes per line item. The critical setup step is making sure your Shopify tax settings are accurate first, the integration only carries across what Shopify has correctly calculated, it doesn’t fix incorrect tax settings.
What happens to refunds in a Shopify Xero integration?
A full refund should automatically reverse the original invoice, including its GST component. Partial refunds are more error-prone and need testing, the invoice value and GST need to adjust proportionally, not just the headline refund amount, so it’s worth testing this specifically with a real partial refund before relying on it at scale.
Next Step
If your Shopify and Xero data has never quite lined up, or you’re setting this up for the first time and want it done right rather than patched later, a Shopify audit is a good starting point to see exactly where the gaps are. Alternatively, book a call and we can talk through your specific tax setup, order volume and reconciliation needs.