Shopify Xero integration, reconciled to the penny
BeanHawk turns every Shopify payout into a clean, summarized Xero journal: sales, fees, refunds, and taxes mapped to the right accounts, reconciled against the deposit that actually hit your bank.
Why Shopify books break in Xero
- •Shopify payouts batch orders by payment date, so payouts straddle months. Recording revenue on order date with a clearing account keeps periods accurate.
- •Shopify Payments fees, app charges, and refunds each belong in distinct expense accounts.
- •Unlike a marketplace, sales tax on your own store is YOUR obligation in nexus states, so the books need a tax liability account that actually reconciles.
How the integration works
- 1
Connect Shopify
Secure, read-only authorization in about 60 seconds. Multiple accounts and marketplaces supported.
- 2
Connect Xero
OAuth connection with professional default account mappings you (or your accountant) can adjust.
- 3
Review the first journal
BeanHawk parses each payout line by line and builds one summarized journal that must balance to the penny, or it will not post.
- 4
Reconcile in one click
The net deposit lands in a clearing account that matches your bank feed exactly. Every Shopify payout, accounted for.
Where each Shopify payout line belongs in Xero
| On the payout | Account | Why it matters |
|---|---|---|
| Gross order value (product line items) | Revenue: product sales | Shopify shows you gross and Shopify Payments pays you net. Recording the payout as sales understates revenue by processing fees, refunds, and chargebacks, and nothing downstream of that number can be trusted. |
| Discounts, automatic discounts, and discount codes | Contra-revenue: discounts | A discount reduces revenue. Recorded as marketing expense it inflates both revenue and spend, which flatters gross margin and makes promotion performance impossible to read. |
| Tips collected at checkout | Liability if the tip is passed to staff, other income if it is not | Tips you owe to someone else are not your money. Booked as revenue they overstate sales and, where staff are paid out later, leave a liability off the balance sheet. |
| Gift card sales, and the later redemption against an order | Balance sheet: gift card liability, released into product revenue on redemption | Selling a gift card is taking a deposit, not making a sale. Recognising it as revenue at purchase pulls income into the wrong period and drops a real obligation off the balance sheet. Miss the redemption side instead and the liability grows forever while the redeemed order looks like it was given away free. |
| Shopify Payments processing fees | Cost of sales or operating expense: merchant fees | Deducted before payout, so they never look like a bill. Given their own account, they become a rate you can check and negotiate against your plan tier. |
| Third-party gateway fees plus the additional platform fee that applies when you use an external gateway | Cost of sales or operating expense: merchant fees | PayPal, buy-now-pay-later providers, and other gateways settle to their own accounts on their own schedules. Ignored, part of your sales appears to have no processing cost at all. |
| Shopify subscription and app charges | Operating expense: software subscriptions | These often bill separately from payouts rather than being deducted, so a seller who reconciles only payouts never books them. They are usually the fastest-growing fixed cost in a Shopify business. |
| Refunds and partial refunds | Contra-revenue: refunds and returns | Netted against sales, refund rate disappears. Processing fees on the original sale often are not returned either, so netting also hides a real cost you keep paying on cancelled revenue. |
| Chargebacks and chargeback fees | Operating expense: payment disputes | A chargeback is a loss plus a penalty, not a return. Kept apart from refunds, it tells you whether you have a fraud problem or a fulfilment problem, and those get fixed very differently. |
| Sales tax collected at checkout | Balance sheet: sales tax liability | On your own store you collected it and you owe it. In revenue it overstates income and leaves you filing returns from a number that does not exist anywhere in the ledger. |
How a month actually closes on Shopify
Shopify Payments batches transactions into a payout on a rolling schedule with a lag that depends on your plan, your country, and how long the account has been open. The consequence is constant: the payout you receive on the first of the month contains orders from the previous month. Revenue belongs on the order date, the payout belongs on the deposit date, and a clearing account sits between them absorbing the difference.
The number that catches people out is that Shopify Payments payouts are not your sales. Orders paid through PayPal, an installment provider, a third-party gateway, cash on delivery, or a manual payment method never appear in a Shopify Payments payout at all. Reconciling payouts to sales will always leave a gap the size of your alternative payment mix, and chasing that gap in the payouts report is wasted effort.
Close from the finance summary rather than from the bank. Pull gross sales, discounts, returns, shipping, and tax for the month, post those to revenue and contra-revenue accounts, then post processing fees and refunds against the clearing account. Each gateway gets its own clearing account. Match each real deposit to the right one, and the leftover balance is orders paid but not yet swept.
Gift cards create a float that grows quietly. Sales increase the liability, redemptions reduce it, and breakage rules vary by jurisdiction so do not write the balance off on instinct. Check the liability account against Shopify's outstanding gift card balance at month end. A liability that only ever grows means redemptions are not being posted.
Chargebacks arrive late and can reverse. A dispute opened in one month may resolve two months later, either in your favour or not. Book the loss when the funds are actually withdrawn rather than when the dispute opens, keep the fee separate from the reversed sale, and note the original order reference so a later win can be traced back rather than looking like unexplained income.
The final test is three-way: Shopify's finance summary for the period, the sum of gateway payouts for the period, and the bank. They will not equal each other, and they are not supposed to. What has to be true is that the difference between them is fully explained by the clearing account balances, timing lag, and refunds in flight. If part of the difference is unexplained, it is usually app charges or a second gateway nobody mapped.
What Xero does well, and where it needs help
Xero calls the posting mechanism a Manual Journal, and it behaves differently from a QuickBooks journal entry in ways that matter. Manual journals can be saved as drafts for review before posting, they can be set to auto-reverse on a chosen date, and they carry a 'show journal on cash basis reports' option that changes whether the entry appears in cash-basis reporting. BeanHawk posts a summarized manual journal per settlement period with the settlement reference in the narration.
Tracking categories are Xero's answer to segmenting by channel, and the constraint is specific: an organisation gets two tracking categories, each with a capped number of options (Xero has adjusted the option limit over time, so check the current figure). Spend one on Channel and think hard before committing the second, because there is no third. Sellers who use both on channel and marketplace region find they have nothing left for department or brand later.
Bank reconciliation in Xero pushes you toward Find and Match, and that is exactly what a marketplace deposit needs: match it against the clearing account transaction the manual journal created. The danger is bank rules. A rule that auto-codes anything from Amazon or Shopify straight to a sales account will happily book net deposits as revenue forever, understating sales and erasing every fee. If you already have such a rule, delete it before connecting anything.
Xero has no native landed cost function, and its inventory uses average cost rather than FIFO. Tracked inventory items in Xero also come with limits that multi-channel sellers hit quickly. The practical answer is the same one that works in QuickBooks: keep perpetual SKU-level valuation in a subledger, push freight and duty into unit cost there, and post a periodic summarized inventory and cost of goods sold journal into Xero.
Xero's plans cap how many invoices, bills, and in some cases bank transactions you can process per month, and plan names and limits have changed by region and over time. Manual journals are not usually the binding constraint, but if you also invoice wholesale customers out of Xero, the cap can be. Multi-currency is another plan-dependent feature and it matters directly if you sell across marketplaces in more than one currency, so confirm your plan before designing the chart of accounts around it.
For a cross-border seller, set up one clearing account per currency and let Xero handle the revaluation rather than converting everything by hand. Xero will post unrealised gains and losses on foreign currency balances at period end, which means your clearing account balance moves for reasons that have nothing to do with the marketplace. Knowing that in advance saves an afternoon of hunting for a difference that is working exactly as designed.
Frequently asked questions
- Does Xero connect to Shopify properly?
- There are apps in Xero's marketplace that connect the two, and most of them sync at order level and struggle with a multi-gateway store. The bigger issue is conceptual: Shopify Payments payouts are not your sales, because PayPal, installment providers, and any other gateway settle separately. A Xero setup that only reconciles Shopify Payments will be short by the whole alternative payment mix.
- Where do Shopify subscription and app charges go in Xero?
- In their own software subscriptions expense account, entered from the Shopify bill rather than picked up from a payout. Most app charges are billed on the Shopify invoice against a card instead of being deducted from your payout, so a Xero file reconciled purely from payouts never records them at all. For a store with a long app list, that is a material fixed cost missing from the profit and loss.
- Why doesn't my Shopify payout equal my Shopify sales?
- Three reasons stack up. Processing fees and refunds are deducted before the money moves. Payouts batch by transaction date with a lag, so month boundaries never line up. And any order paid through PayPal or another gateway is settled by that provider, not by Shopify Payments, so it is never in the payout at all. The payout is a cash event; sales are an accounting event.
- Who owes the sales tax on a Shopify store?
- You do, in every state or region where you have nexus, because your own store is not a marketplace facilitator. That is the opposite of Amazon or eBay. Tax collected at checkout is a liability you hold until you file, so it needs its own balance sheet account that you can tie to your filings. Leaving it in revenue overstates income and gives you no defensible filing number.
- Can Xero connect to a marketplace and code the fees on its own?
- Not on its own. Xero's bank feed brings in the deposit as a single line, and connector apps vary widely in how much of a settlement they break out. Xero has no way to know that a deposit contains commission, advertising, refunds, and a reserve movement. Something has to parse the settlement file and hand Xero a balanced manual journal, then you match the deposit against the clearing account.
- Do I actually need tracking categories in Xero for one sales channel?
- If you sell on one channel and nothing else, separate accounts are simpler and you can skip tracking entirely. Tracking earns its place the moment you add a second channel or a second region, because it lets you run a profit and loss per channel without duplicating the chart of accounts. Just remember you only get two categories, so spend the first one on the dimension you will report on most.
Connect Shopify to Xero free
Start with the free reimbursement audit, then flat all-channel pricing from $19/mo. No per-channel fees.
Also see: Amazon + QuickBooks Online · Amazon + Xero · eBay + QuickBooks Online · eBay + Xero · all guides