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:

  • Stripe pays out a net amount: gross card sales minus fees and refunds are paid as one lump sum.
  • Refunds are processed separately: a refund reduces the original sale but the payout timing might differ (sometimes across multiple payouts).
  • Fees include more than transaction fees: currency conversion, dispute fees, and Stripe Connect or payout fees can appear.
  • Timing differences: sales are recorded when invoiced or paid in Xero, but Stripe’s payout schedule (daily/weekly) groups many transactions together.
  • 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:

  • Clear audit trail: every sale, fee and refund is visible and traceable back to Stripe reports.
  • Cleaner bank reconciliation: the net payout is reconciled to one bank transaction.
  • Accurate fee and refund reporting: fees and refunds are correctly posted to expense or income accounts.
  • 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.

  • Create the following accounts in Xero:
  • Current asset: Stripe Clearing Account
  • Income: Sales (Card Payments)
  • Expense: Stripe Fees
  • Other income/expense: Refunds (if you prefer a separate account)
  • 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:

  • Record the gross sale: debit Stripe Clearing account, credit Sales.
  • Record the Stripe fee: debit Stripe Fees (expense), credit Stripe Clearing account.
  • If a refund occurred: debit Stripe Clearing account, credit Refunds (or Sales if you offset sales directly).
  • 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)
    JournalDebitCredit
    Record gross salesStripe Clearing £1,200Sales £1,200
    Record Stripe feesStripe Fees £36Stripe Clearing £36
    Record refundsRefunds (or Sales Returns) £150Stripe Clearing £150
    Bank payoutBank £1,014Stripe 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:

  • If a refund is processed after the payout, post the refund entry to the Stripe Clearing account when you see it in the Stripe report, and leave the clearing account with that negative/positive balance until the next payout covers it.
  • If Stripe withholds funds or has a reserve, don’t force-match the bank deposit. Instead, create a reconciliation note and keep the unreleased balance in the Stripe Clearing account until it’s reflected in a bank payout.
  • Use the Stripe “Payout Reconciliation” report to tie individual charges/fees/refunds to a payout. This report tells you exactly which items are included in each deposit.
  • Practical tips and common pitfalls

  • Don’t record sales twice: if your e-commerce platform (Shopify, WooCommerce) already posts sales into Xero, avoid duplicating by routing integrations carefully. I usually post only to the clearing account from Stripe or configure the e-commerce app to exclude payments.
  • Automate where sensible: apps like Synder or A2X can map Stripe’s multi-line payouts to Xero automatically. They save time but check mapping settings — especially for refunds and fee accounts.
  • Track chargebacks separately: disputes/chargebacks should be recorded against a separate expense or bad debt account and monitored closely since Stripe may reverse them later.
  • Multi-currency: Stripe may convert foreign payments. Post the gross sale in the sale currency, but ensure your Stripe Clearing account handles the converted GBP amount and any conversion fees are posted to an appropriate expense.
  • Reconcile frequently: I recommend reconciling Stripe weekly. Waiting months makes it harder to trace refunds or identify withheld funds.
  • 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.