How to Reconcile Shopify Payouts in Xero
Shopify pays you one net figure, but your books need gross sales, refunds, and fees posted separately. Here's how to do it correctly in Xero.
One number lands in your bank account. Behind it sits a month’s worth of orders, a handful of refunds, and transaction fees Shopify has already deducted before the transfer left their system. Xero sees the single deposit. Your accountant needs to see three or four distinct accounting events — and if you just click “OK” on the bank feed and move on, none of those events get recorded correctly.
This is the Shopify payout reconciliation problem. It’s not exotic — every UK Shopify merchant using Xero runs into it — but it’s stubborn, and it quietly corrupts your books every single week until someone cleans it up.
What a Shopify Payments Payout Actually Contains
What the net deposit includes
When Shopify Payments settles to your bank account, the single deposit figure is the result of several deductions already made by Shopify:
- Gross sales captured during the payout period
- Minus refunds — the full refunded transaction amounts for any order you refunded
- Minus transaction fees — for UK merchants on the Basic plan, 2% + 25p per transaction; Grow, 1.7% + 25p; Advanced, 1.5% + 25p
- Minus any chargeback deductions if a customer disputed a charge
What hits your Barclays or Starling account is the net: gross sales minus all of the above. Shopify’s payout report (available at Finances > Payouts in your Shopify admin, exportable to CSV) shows you the breakdown — but Xero’s bank feed sees only the final number.
VAT timing and payout period
UK payout timing is typically five to seven business days after the sale, which means a single payout may span orders from different days, different product categories, and different VAT treatments. HMRC expects you to account for VAT on gross sales, not the net payout — so you cannot simply match the deposit to a revenue figure and call it done.
The Problem Xero’s Bank Feed Creates
The unreconciled deposit in your bank feed
Your bank feed shows something like this on a Wednesday morning:
Date Description Spent Received Status
11 Jun 2026 SHOPIFY PAYMENTS £4,218.43 Unreconciled
Xero’s automatic reconciliation — JAX, the Anthropic-powered matching layer — is good at clean lines: a standing order that matches a supplier bill, a BACS payment that ties to a single invoice. The £4,218.43 Shopify deposit is not a clean line. There is no single invoice in Xero for £4,218.43. The amount is a net figure that Xero has no way to decompose on its own because the decomposition lives on Shopify’s servers, not in your bank data.
Why JAX can’t match the line
So JAX passes on it. The line sits unreconciled. You have three unsatisfying choices: click through anyway (which leaves fees unposted and produces wrong revenue figures), ignore it until month-end (where you’ll have several of these queued up), or sit down with the Shopify payout report and post it manually.
Why The Conventional Approaches Break Down
Xero bank rules
Xero’s own bank rules can be configured to auto-code a Shopify deposit to a revenue account when the description matches “SHOPIFY PAYMENTS.” But a bank rule posts the whole £4,218.43 to revenue. The fees are never expensed. The refunds are never recognised as reductions. Your gross revenue is understated and your expenses are overstated — two errors that compound over a trading year and take an accountant time to unwind at year-end. (See also: what your accountant fixes at year-end — Shopify mis-postings are on that list more often than you’d think.)
The manual approach
The manual approach is accurate but slow. You download the Shopify payout CSV, open Xero, create a receive money transaction against the bank line, and build the split: gross sales to your revenue account (4000 or equivalent), transaction fees to your payment processing fees account (typically 7900), and refunds back out through either a credit note or a contra line. On a payout covering 80 orders with 12 refunds, that takes 20 to 40 minutes. Weekly payouts mean the task recurs every seven days.
App-based integrations
App-based integrations (Link My Books, Reconcile.ly, and similar tools on the Xero App Store) automate the decomposition and push summary journals into Xero automatically. They’re a legitimate option for high-volume merchants. They do still require initial configuration, ongoing mapping management, and a monthly subscription — and they work best when your Shopify setup is stable. A new product category, a gift card redemption, or a merchant cash advance deduction can break the mapping silently until your accountant spots it.
A human bookkeeper
A human bookkeeper handles all of this well. They read the payout report, understand the structure, and post the split correctly every time. At £30–60 per hour for qualified UK bookkeeping, it’s a real cost when the task repeats weekly. What a bookkeeper costs in the UK in 2026 covers the full picture — but for a Shopify merchant doing moderate volume, this is often the line item that tips the decision toward automation.
How Shopify Payout Reconciliation Should Actually Work
The correct posting for a Shopify payout in Xero has three or four components, depending on whether refunds occurred in the period.
Gross sales
Gross sales post to your trading revenue account — typically 4000 in a standard Xero chart of accounts. If you sell products with different VAT treatments (standard-rated vs. zero-rated), the gross sales need to be split by VAT code at this stage. Getting this wrong is the most common VAT error on Shopify accounts.
Transaction fees
Transaction fees post as an expense — typically to 7900 (Payment processing fees) or a similarly named account. These are a real business cost and reduce taxable profit. They should not be netted against revenue.
Refunds
Refunds reduce your revenue. The cleanest approach in Xero is a credit note against the original invoice if you raised sales invoices, or a negative line in the receive money transaction if you’re using the summary journal approach. Either way, refunds need to be explicitly recognised — posting only the net-of-refunds figure to revenue understates both gross sales and the cost of returns.
Chargebacks
Chargebacks, if any occurred in the period, need separate treatment. A chargeback is a reversal of a completed sale — the revenue needs to be reversed and the chargeback fee (a separate line on the Shopify payout report) posted as an expense.
The bank reconciliation match in Xero ties all of these together against the single deposit line, so the bank account reconciles to zero on that line and every underlying accounting event is correctly recorded.
Worked Example
All figures representative; company name anonymised.
The scenario. Amber Starling Ltd is a UK homeware brand selling via Shopify, VAT-registered, on the Shopify Grow plan. Their Wednesday payout from Shopify Payments settles into their Monzo Business account for £4,218.43. The underlying Shopify payout report shows:
- Gross sales: £5,102.00 (38 orders, all standard-rated for VAT purposes)
- Refunds: -£318.00 (4 returned orders, full refund in each case)
- Transaction fees: -£556.07 (1.7% + 25p × 38 orders, applied to gross before refunds)
- Chargeback deduction: -£9.50 (one disputed order, including the Shopify chargeback fee)
Net payout: £4,218.43
The Xero state before.
The Monzo bank feed shows one unreconciled line for £4,218.43. In Xero’s chart of accounts: account 4000 (Sales), 7900 (Payment processing fees), 8100 (Bad debts / chargebacks). No outstanding invoices — Amber Starling uses summary journals rather than raising per-order invoices in Xero, which is standard practice for high-volume e-commerce.
Date Description Spent Received Status
11 Jun 2026 SHOPIFY PAYMENTS 6A4X29 £4,218.43 Unreconciled
What TheBookkeeper.ai does.
- Detects the unreconciled bank line via the Xero bank feed API.
- Fetches the matching Shopify payout report via the Shopify API using the payout reference. Returns the structured breakdown: gross charges, refund lines, fee lines, chargeback lines.
- Confirms VAT treatment — all 38 orders are standard-rated (20%), consistent with account history. No mixed-rate split required.
- Composes a receive money transaction in Xero, split across four lines:
- £5,102.00 credit to 4000 (Sales) — gross order revenue, VAT code 20% (standard rated)
- -£318.00 debit against 4000 (Sales) — refunds reducing gross revenue, VAT code 20%
- £556.07 debit to 7900 (Payment processing fees) — transaction fees as an expense, VAT exempt (Shopify fees are a financial service)
- £9.50 debit to 8100 (Chargebacks and disputes) — the disputed order and its fee
- The four lines net to £4,218.43 — matching the bank deposit exactly.
- Posts the receive money transaction to Xero and marks the bank line reconciled.
- Sends a morning notification: “Shopify payout £4,218.43 reconciled. 38 orders posted, 4 refunds recognised, fees to 7900. One chargeback (£9.50) posted to 8100 — check dispute status on order #1041.”
The Xero state after.
The Monzo line is reconciled. Account 4000 shows £4,784.00 net sales (£5,102 minus £318 refunds). Account 7900 shows £556.07 expensed. Account 8100 shows £9.50 for the chargeback. The VAT return picks up the correct gross figures. Your accountant sees a clean, annotated ledger.
What it flagged.
One item for review: the chargeback on order #1041. TheBookkeeper.ai posted the £9.50 correctly but noted that if the dispute is resolved in Amber Starling’s favour, the deduction will be reversed in a future payout. The notification includes the order reference so the decision takes one check, not a trawl through Shopify.
Takeaway
- A Shopify Payments payout is a net figure — gross sales minus refunds, fees, and any chargebacks. Posting the deposit as a single revenue line overstates net revenue and leaves fees completely unrecorded.
- Xero’s bank feed and JAX cannot decompose the payout on their own — the breakdown lives in Shopify’s payout report, not in the bank transaction data.
- The correct Xero posting has at minimum three lines: gross sales to revenue, transaction fees to an expense account, and refunds back out against revenue. Chargebacks add a fourth line.
- VAT must be calculated on your gross sales figures, not the net payout. HMRC’s position is clear on this — your VAT return should reflect what customers actually paid.
- Bank rules can approximate this but silently mis-post fees and refunds every week — an error that accumulates until year-end.
- Rule-based reconciliation works for simple, clean lines. Shopify payouts are not simple or clean.
Get on the list
We’re running a private beta for UK Xero users handling Shopify and similar platform payouts. If your Wednesday morning currently involves a payout report and a Xero journal, get on the waitlist and we’ll do it for you instead.
Sources:
- Shopify Help Center — Getting paid with Shopify Payments
- Shopify Help Center — Viewing and exporting your Shopify Payments payout details
- Shopify Help Center — Payouts and settlement times in the United Kingdom
- Shopify Payments Fees Explained — Airwallex UK
- How to Track Shopify Settlements — Social Commerce Accountants UK
- Shopify Payouts Explained: Timelines, Fees & Reconciliation — Webgility
Frequently asked questions
Why does my Shopify payout not match any invoice in Xero?
Shopify Payments settles a net figure — gross sales minus transaction fees, refunds, and any chargebacks — so no single invoice in Xero will match the deposit. You need to create a split receive money transaction that breaks the payout back into its components before Xero can reconcile the bank line.
Are Shopify transaction fees VAT-exempt in the UK?
Yes. Shopify's transaction and processing fees are classed as a financial service under UK VAT rules, so they are VAT-exempt. Post them to an expense account (such as payment processing fees) without a VAT code. Do not net them against sales revenue — they are a genuine business cost and should appear separately in your profit and loss.
Does a Xero bank rule work for Shopify payouts?
A bank rule can auto-code the deposit to a revenue account, but it posts the entire net amount as income. Transaction fees go unrecorded as an expense, and refunds are never recognised as revenue reductions. Both errors accumulate weekly and typically surface as adjustments at year-end, costing accountant time to unwind.
When should I account for VAT on Shopify sales — at payout date or order date?
HMRC expects VAT to be accounted for on the tax point of the original sale, not the payout date. Because a payout can span orders from different days, your VAT return should reflect the gross sales figures from those order dates. Posting only the net payout figure to your VAT return will understate the output tax you owe.
How do I handle a Shopify chargeback in Xero?
A chargeback reverses a completed sale: post the original revenue amount as a reduction against your sales account, and post any chargeback fee Shopify deducts to a separate expense account such as chargebacks and disputes. If the dispute is later resolved in your favour, Shopify will return the amount in a future payout, which you then post as income at that point.
Can TheBookkeeper.ai handle Shopify payout reconciliation automatically?
Yes. TheBookkeeper.ai connects to both the Xero bank feed and the Shopify Payments API, fetches the payout breakdown, posts the correct split transaction — gross sales, refunds, fees, and chargebacks — and marks the bank line reconciled, typically before you sit down in the morning. It is built specifically for UK Xero users processing Shopify and similar platform payouts.
Want this running on your Xero?
We're running a private beta for UK Xero users. Get on the list and we'll show you what reconciled-by-morning looks like on your books.