SHOPIFY · XERO · INTEGRATION

Connecting Shopify to Xero: what actually breaks

Everybody starts by assuming one order should become one invoice. That assumption is the reason most of these connections end up being unpicked six months later.

The problem, stated properly

Orders arrive in Shopify. The accounts live in Xero. Somewhere in between, a person spends the first part of every morning making one match the other.

It looks like a job for a connector, and for a lot of shops it is. But the reason so many of these integrations get built twice is that the obvious model is wrong, and it is wrong in a way that does not show up until the first VAT return.

A Shopify payout is not a list of orders. Shopify Payments batches up several days of takings, subtracts its transaction fees, subtracts refunds that may relate to orders from weeks earlier, and pays the remainder into your bank a day or two later.

The figure that lands is a net number covering a period. No single order will ever equal it. Reconciling those two things is the work.

If your integration creates one gross invoice per order, your Xero will show a sales figure that is right and a bank account that will not reconcile, ever. Most people discover this when their accountant asks why there is an unexplained difference of a few hundred pounds a month, which turns out to be card fees nobody accounted for.

What usually goes wrong

In rough order of how often we see it.

Fees disappear

Transaction fees, app subscriptions, shipping labels bought through Shopify. Each needs to land in the right expense account, and each is deducted before the money reaches you.

Refunds land in the wrong period

A refund in April against a March order reduces an April payout. Without credit notes handled properly, one month is overstated and the next understated.

VAT is treated as one rate

Standard, reduced, zero-rated exports, and OSS on EU consumer sales. Marketplace rules can make the platform the deemed supplier. Getting this wrong is the expensive one.

Gift cards booked as revenue

A gift card sale is a liability, not a sale. It becomes revenue when it is redeemed. Naive integrations count it twice.

Multi-currency at the wrong rate

What the customer was shown, what Shopify settled at, and what Xero uses on the day are three different numbers.

Retries create duplicates

A timeout half way through a sync, then a retry, and the same order is invoiced twice. Anything worth building has an idempotency key and a way to replay a failed day safely.

Your options, honestly

Including the ones that do not involve us. Most people reading this should take the first one.

A2X or Link My Books tens of pounds a month

Purpose-built for exactly this. They take each Shopify payout, break it into a summary journal covering sales, fees, refunds and tax, and post it so it reconciles against the bank line to the penny.

If you sell through Shopify, take payment through Shopify Payments, and want your accounts to be right, this is the correct answer. Buy it. It will do this better than a first bespoke build, and cheaper.

Zapier or Make low, then painful

Creates one Xero invoice per Shopify order. Looks right on day one. The invoices are gross, the bank receives net, and nothing accounts for fees or refunds. There is no sensible retry behaviour, so a hiccup makes duplicates.

Fine at very low volume. A poor foundation for anything you expect to grow.

Doing it by hand a few hours a week

Genuinely not the worst option under a certain size. If you are doing thirty orders a month, a monthly journal takes twenty minutes and costs nothing.

Stop when you notice you are dreading it, or when you start being late.

Something built for you priced per job

Worth it when the off-the-shelf tools stop fitting rather than before. The honest triggers are below.

Not the default, and anyone who tells you it is has something to sell.

When bespoke is actually the right answer

There are four situations where a connector genuinely will not do it, and they all look the same from the inside: you find yourself doing a manual step every week to work around the tool.

You have more than one sales channel. Shopify plus Amazon plus trade orders plus an EPOS till. Each has its own connector, none of them agree, and consolidating them is somebody's Monday.

You need customer-level invoices, not summary journals. A2X posts summaries, which is right for consumer retail and wrong the moment you have trade accounts on credit terms and somebody chasing them.

The same data has to go somewhere else too. A warehouse system, a CRM, a reporting database. Once the data has three destinations, a chain of separate connectors becomes the problem rather than the solution.

Your products are not simple. Configurable, made to order, priced by dimension. The mapping between what was sold and what should be posted needs a rule nobody else's tool knows.

If none of those describe you, buy A2X and spend the money you saved on something else.

One we built

Because it is fair to ask whether we have actually done this.

Progress JJ

Shopify into Xero, and into a reporting warehouse

Sales come out of Shopify through its API, customers and invoices go into Xero through its API, and the same data lands in a BigQuery database at the same time so it can be reported on properly rather than through Shopify's own analytics.

That third destination is the reason this one was built rather than bought. A connector would have handled the accounts. It would not have put the data anywhere the business could ask real questions of it.

Read the case studies

What it costs

We price the job, not the day, and you see the price before anything starts. As a rough shape, using our current rate of £15 a token:

Those are illustrative, not a quote. The point of publishing them is that you should be able to tell roughly what bracket you are in before you speak to anybody, which is not how this industry usually works.

Questions

Why does my payout not match my orders?

Because a payout is not a list of orders. It is several days of takings, minus fees, minus refunds that may relate to much older orders, paid a day or two later. The number that lands is net and covers a period, so no single order will ever equal it.

Should I use A2X or build something?

Use A2X, unless one of the four situations above applies to you. It is built for this, it is cheap, and it will do it better than a first bespoke build.

Can I just use Zapier?

At very low volume, yes. It creates one invoice per order, which is gross while your bank receives net, so it will not reconcile and it does not handle fees or refunds. It also duplicates on retry.

What about VAT on EU sales?

Decide the treatment before the integration is built, not afterwards. Zero-rated exports, OSS for EU consumer sales and deemed-supplier rules all change what should be posted. This is the part that costs real money to unpick.

How long does it take?

A properly built one-way sync is usually a few days of work. Multi-channel consolidation is longer. You get a fixed price before anything starts, and nothing begins until you approve it.

What if the integration we already have is broken?

That is a common way people arrive here. We will look at what exists and tell you honestly whether it is worth repairing or replacing. There is a free healthcheck if you would rather find out without speaking to anybody.

Tell us what needs connecting

Describe the job on our simple wizard. You get a real answer with a real price, usually the same working day, and nothing happens until you say so.

Get a price Just ask a question