I often see small business owners get stuck reconciling Stripe payouts in Xero because the numbers on the bank statement don’t line up with the sales recorded in their accounting system. Stripe bundles sales, fees, refunds and transfers into a single payout — and when refunds or fees don’t match the gross sales in Xero, the reconciliation can quickly look like a mystery. I’ll walk you through a practical approach I use with clients so the reconciliation is accurate, auditable and repeatable.
Why Stripe payouts and Xero sales don’t match
Before we jump into the how, it helps to understand the why. Common reasons for mismatches include:
Recognising these causes helps you decide whether to adjust sales, record fees and refunds separately, or use a dedicated clearing account to match Stripe’s net payouts.
Principle I follow: use a Stripe clearing account
I always recommend using a dedicated “Stripe Clearing” or “Payment Gateway Clearing” current asset account in Xero. The clearing account acts as a staging area where each Stripe transaction is posted individually, then the single Stripe payout from the bank is reconciled against the aggregate movements in that account.
Benefits of this approach:
Step-by-step: set up accounts and import your Stripe data
Here’s the workflow I use with clients. You can do this manually or use an integration (e.g. Stripe + Xero apps like Synder, A2X or Stripe’s own accounting exports) — integration tools can automate posting but I explain the manual logic so you can spot errors.
Now import or export your Stripe transactions for the reconciliation period (daily/weekly/monthly). Stripe provides a "Balance" and "Payout" report that lists each charge, fee, refund and the payout it contributes to — this is the key reference.
How to post the transactions in Xero
For each charge processed through Stripe:
When Stripe pays you (the bank deposit): debit Bank account, credit Stripe Clearing account for the net payout amount. The Stripe Clearing account should then net to zero for that payout period (or reflect any unapplied items).
Example journal entries
Imagine these Stripe activities in one day:
- Gross sales via card: £1,200
- Stripe fees total: £36
- Customer refunds processed: £150 (the refunds have already been deducted in the Stripe payout)
- Bank payout received: £1,014 (1,200 - 36 - 150)
| Journal | Debit | Credit |
| Record gross sales | Stripe Clearing £1,200 | Sales £1,200 |
| Record Stripe fees | Stripe Fees £36 | Stripe Clearing £36 |
| Record refunds | Refunds (or Sales Returns) £150 | Stripe Clearing £150 |
| Bank payout | Bank £1,014 | Stripe Clearing £1,014 |
After posting all of the above, the Stripe Clearing account balance will be zero for that payout — perfect for reconciliation.
Handling mismatched fees or refund timing
Sometimes refunds are processed after the original payout, or Stripe holds funds in a reserve. Here’s what I do:
Practical tips and common pitfalls
How to reconcile in Xero once entries are posted
Open your bank reconciliation screen in Xero and find the Stripe bank deposit. The bank deposit should match the single "Bank payout" journal you posted. If it does, simply reconcile the bank line to that journal (or to the Stripe Clearing account transaction). If it doesn’t match, use your Stripe report to identify missing postings (fees or refunds not recorded) and correct them in the Stripe Clearing account.
When to call in help
If the clearing account is showing large unreconciled balances, or you suspect duplicate sales, it’s worth getting a second pair of eyes. I regularly help clients untangle months of mismatched Stripe postings — fix early before taxes or VAT returns are impacted.
If you want, send me a screenshot (redact sensitive numbers) of your Stripe payout report and the corresponding Xero entries and I can point out exactly where the gaps are and suggest the quickest corrective journal entries.