Think Build Implement Repeat
London, UK +44 7367 067226
WhatsApp FOLLOW f in X
  1. Home
  2. Blog
  3. Why Does a Stripe Payout Never Match Anything in Xero?
Problems We Solve

Why Does a Stripe Payout Never Match Anything in Xero?

A Stripe payout lands as one net figure that matches no invoice in Xero. How we automate Stripe payout reconciliation down to each charge, fee and refund.

Updated 3 min readBy SpiderHunts Technologies

Free estimateNo obligation

Get a free estimate

Tell us what you need. A senior engineer reads every enquiry.

Takes under a minute. We never share your details.

  • Free consultation
  • No commitment
  • NDA on request

Prefer to talk? Book a free 30-minute call →

Quick answer — TL;DR

A Stripe payout is a net total of many charges, minus fees, refunds and disputes, so it cannot match any single invoice. We build a process that reads each payout's balance transactions from the Stripe API, posts the gross sales, fees and refunds to Xero or QuickBooks through a clearing account, marks the right invoices paid, and leaves the bank line to match exactly.

A number that matches nothing

Every few days a deposit from Stripe arrives in the bank. It is an odd amount. It does not match an invoice, it does not match a day's sales, and it certainly does not match the total you see on the Stripe dashboard for that week. Someone in finance opens Stripe in one tab and Xero in another and tries to work backwards.

They find most of the charges, then realise a refund from last week has been netted off, then find a dispute fee, then a currency conversion. After an hour, the difference is a few pounds and they post it to a sundry account to make the line go away. Next payout, it starts again.

Why payouts are hard to reconcile

Stripe does not send you money per sale. It collects many charges into a balance, deducts its fees, takes back refunds and dispute amounts, and pays out the net figure on a schedule. That is sensible for Stripe and awkward for your books, because your ledger thinks in invoices and the bank thinks in payouts.

Inside one payoutWhat your books need
Many customer chargesEach one marked against the right invoice or sales account
Stripe processing feesPosted to a fees expense account, with VAT treatment right
RefundsLinked to the original sale or credit note
Disputes and dispute feesRecorded separately, with the disputed invoice reopened
Currency conversionExchange differences handled, not lost in the total

Integrations that post each Stripe charge as a separate bank line get you part of the way, but they often leave fees, refunds or disputes to be handled by hand, and the running difference grows until someone reconciles it in bulk.

What the gap costs you

The obvious cost is the time spent reverse engineering payouts. The more serious cost is that your revenue, fee expense and receivables are all slightly wrong, and nobody is quite sure by how much. Invoices that were paid through Stripe may still show as outstanding. Refunds may be recorded twice or not at all. A dispute can reverse a sale without anyone updating the ledger.

For subscription businesses using Stripe Billing, the picture is harder still: proration, credit balances and failed payments all feed into the same payouts.

How we reconcile each payout

  1. Listen for payouts through Stripe webhooks, and for each payout fetch its balance transactions from the Stripe API: every charge, refund, fee, dispute and adjustment that makes up the total.
  2. Link each charge to its invoice or order: Stripe invoice ID, metadata you already set, or the order number from Shopify, WooCommerce or your own system.
  3. Post to Xero or QuickBooks through a Stripe clearing account: gross receipts against the invoices, fees to an expense account, refunds against the original sale, dispute amounts to a holding account.
  4. Record the payout itself as a transfer from the clearing account to the bank, for exactly the payout amount, so the bank line matches without adjustment.
  5. Check the clearing account balance: after each payout it should return to what Stripe says is still pending. If it does not, the difference is reported with the transactions that caused it.
  6. Handle currency: charges in other currencies are recorded at the rates Stripe applied, and the difference is posted to exchange gains and losses rather than disappearing.

A daily summary shows payouts processed, anything that could not be linked, and open disputes, so a person looks at a short list instead of reconciling by hand.

What your books look like afterwards

Each payout reconciles with a clear trail from bank line to individual sales. Stripe fees show up in the right expense account, which is useful when you are deciding whether a payment method is worth its cost. Invoices paid through Stripe are marked paid when the money is actually received, and disputes are visible in the ledger instead of only in the Stripe dashboard.

Your accountant can see how revenue, fees and refunds fit together, which removes a common source of year-end questions.

Is this happening in your books?

  • Stripe payouts are matched by posting the difference to a sundry account.
  • Stripe fees are not recorded separately, or are recorded in bulk once a month.
  • Invoices paid by card still show as outstanding in Xero or QuickBooks.
  • Refunds and disputes are handled in Stripe but not reflected in the ledger.
  • You take payments in more than one currency.

FAQ

Frequently asked questions

The questions readers ask us after this guide.

Still have a question?

Ask us directly — a senior engineer will get back to you.

Ask about your project

Is this not what the Stripe to Xero integration does?

Some integrations handle it well for simple setups. Where you have refunds, disputes, several currencies, or orders from another platform, gaps usually appear. We check what you have first and tell you if it can be configured to do the job.

Does it work with QuickBooks too?

Yes. The approach, a clearing account with detailed postings, works in QuickBooks, Xero and most ledgers with an API.

What about PayPal, GoCardless or other processors?

The same pattern applies to any processor that pays out net and provides transaction-level data through an API or report.

Can it fix the backlog of unreconciled payouts?

Usually yes, by processing historic payouts from the Stripe API, though old manual entries sometimes need unpicking first. We would look at it before promising anything.

Keep reading

More on Problems We Solve

Start here

Tell us which finance process is holding you up

Describe what happens today, which tools are involved and where it breaks. We will come back with an honest view of what is worth automating, what it would take, and what we would leave with a person. If a smaller change would fix it, we will tell you.

  1. You tell us what you needTwo minutes on the form, or a message on WhatsApp.
  2. A senior engineer reviews itAnd comes back with questions, a realistic range and an honest view on fit.
  3. Free 30-minute scoping callWe talk through scope, options and a realistic estimate — with no obligation.
Free estimateNo obligation

Talk to someone who builds this

Send a short brief and we will come back with an honest view and a realistic range.

Takes under a minute. We never share your details.

  • Free consultation
  • No commitment
  • NDA on request

Prefer to talk? Book a free 30-minute call →