How to Reconcile Stripe Payments in Xero
How to Reconcile Stripe Payments in Xero
If you accept payments through Stripe and manage your books in Xero, reconciliation is not as straightforward as it should be. Stripe bundles dozens of individual customer payments into a single payout, deducts processing fees before the money leaves, and operates on a rolling settlement window that rarely lines up with your invoice dates. The result is a bank feed line that reads "$4,832.15 — Stripe" with no obvious connection to the 38 transactions behind it.
This guide explains exactly how to reconcile Stripe payments in Xero — from the initial clearing account setup through fees, refunds, bank rules, and automation options — so you can close your books accurately without spending hours on it each month.
Table of Contents
- Why Stripe Doesn't Reconcile Automatically in Xero
- Set Up a Stripe Clearing Account in Xero
- Reconcile Stripe Payouts in Xero: Step by Step
- How to Handle Stripe Fees in Xero
- How to Handle Stripe Refunds in Xero
- Use Bank Rules to Automate Categorisation
- Manual vs Automated Reconciliation: Comparison
- Automate Stripe-Xero Reconciliation
- Frequently Asked Questions
Why Stripe Doesn't Reconcile Automatically in Xero
Understanding why this process is difficult is the first step toward solving it correctly.
Stripe Pays Out in Bundled Lump Sums
Stripe does not send one bank transfer per customer payment. It aggregates every payment received over a rolling period — typically two business days — and sends a single net payout to your bank account. One bank deposit might represent 50 separate customer transactions. Xero sees a single line item in your bank feed; all the underlying detail lives in Stripe.
Fees Are Deducted Before the Payout Arrives
Stripe deducts its processing fees from gross revenue before sending you the net amount. The standard Stripe fee for card payments is 2.9% + $0.30 per transaction for most card types, with variation by country and card type. If a customer pays a $200 invoice, Stripe takes roughly $6.10, and $193.90 arrives in your bank. Your Xero invoice is for $200. The bank feed shows $193.90. These figures will never match directly without accounting for the fee as a separate expense entry.
Timing Mismatches Between Payments and Payouts
A customer can pay their invoice on Monday, but the Stripe payout containing that payment may not arrive in your bank until Wednesday or Thursday. Xero marks the invoice as paid on Monday. Your bank feed shows nothing until Wednesday. Without a clearing account bridging the gap, these timing differences create phantom discrepancies that are difficult to investigate retrospectively.
No Native Bundled-Payout Resolution
Xero offers a Stripe payment services integration that allows customers to pay invoices directly from Xero-issued invoices. However, it records transactions at end-of-day rather than in real time, does not consistently break out individual fees per transaction, and — critically — if you use it alongside a Stripe bank feed, you will end up with duplicate entries: one from the payment service and one from the bank feed. Most bookkeepers disable one or the other to avoid this.
Set Up a Stripe Clearing Account in Xero
The correct approach to Stripe reconciliation in Xero relies on a clearing account — a virtual bank account that acts as a staging area between Stripe's individual transactions and the net payout that lands in your real bank.
Step 1: Add a New Bank Account in Xero
- Go to Accounting > Bank Accounts
- Click Add Bank Account
- Search for "Stripe" in the bank search field
- Select Stripe from the results and click Continue
- Name the account clearly — "Stripe Clearing Account" works well
- Set the currency to match your primary Stripe payout currency
- Click Save
Using Stripe's bank account type (rather than a regular liability or current account) allows Xero to receive the Stripe direct bank feed, which sends individual transaction data automatically.
Step 2: Connect the Stripe Direct Bank Feed
- On the Bank Accounts screen, locate your new Stripe account and click Get bank feeds
- Xero will redirect you to Stripe to authorise the connection
- Log in to Stripe and grant Xero permission to access your transaction data
- Return to Xero — the feed will now pull individual payments, fees, and refunds into the Stripe Clearing Account
Step 3: Set Up Supporting Accounts in Your Chart of Accounts
Before reconciling, confirm you have the following accounts in Xero:
- Stripe Clearing Account — the virtual bank account you just created. Its balance should move toward zero after each payout cycle.
- Payment Processing Fees — an expense account under the Bank Charges category. Go to Accounting > Chart of Accounts > Add Account, set type to "Expense," and name it "Payment Processing Fees" or "Stripe Merchant Fees."
- Sales / Revenue accounts — your standard income accounts for coding customer payments.
Reconcile Stripe Payouts in Xero: Step by Step
Once the bank feed is active, Stripe transactions appear in the Stripe Clearing Account reconciliation screen. Here is how the full reconciliation flow works.
Step 1: Reconcile Individual Payments Against Invoices
- Go to Accounting > Bank Accounts, find your Stripe Clearing Account, and click Reconcile [X] items
- For each incoming payment, Xero will suggest a matching invoice in the "Find & Match" tab
- If the suggested match is correct, click OK to confirm and mark the invoice as paid
- If no match appears, click Find & Match, search by customer name or amount, and select the correct invoice manually
At this stage you are reconciling gross payment amounts from Stripe against the full invoice amounts in Xero. Do not adjust for fees here — fees are handled separately.
Step 2: Reconcile the Net Payout Against Your Real Bank Account
When Stripe sends its bundled payout, it arrives in your actual business bank account as a single line item. To match it:
- Go to Accounting > Bank Accounts, find your real business bank account, and click Reconcile
- Locate the Stripe payout line in your bank statement
- Click Find & Match, then select Transfer from the source dropdown
- Choose the Stripe Clearing Account as the source account
- The payout amount in your bank account cancels out the equivalent balance in the Stripe Clearing Account
- Click OK
After this step, the Stripe Clearing Account balance should sit at or near zero. If the balance is building positively or negatively, there are unreconciled transactions or missing fee entries somewhere in the account.
Step 3: Investigate Any Remaining Clearing Account Balance
If the clearing account does not net to zero, export a Stripe payout reconciliation report from the Stripe Dashboard (under Reports > Payout reconciliation) and compare it line by line against the transactions in your Xero Stripe Clearing Account. Every transaction in the Stripe report — payment, fee, refund — should have a corresponding Xero entry.
How to Handle Stripe Fees in Xero
Stripe fees are the most common source of errors in manual reconciliation. There are two scenarios depending on how your feed delivers fee data.
Scenario A: Stripe Feed Separates Fees as Individual Transactions (Default)
The Stripe direct bank feed typically breaks out each processing fee as a separate negative transaction in the Stripe Clearing Account. To reconcile:
- In the Stripe Clearing Account reconciliation screen, locate the fee transaction — it appears as a negative amount labelled "Stripe fee" or "Processing fee"
- Click Add Details
- Set Account to your Payment Processing Fees expense account
- Set Tax Rate to No Tax / Tax Exempt — processing fees are not a taxable supply
- Leave the contact field blank or set it to "Stripe"
- Click Reconcile
Repeat this for every fee transaction. Bank rules (covered below) can automate this step for all future transactions.
Scenario B: Feed Shows Gross Amount Only
If your bank feed shows the gross payment and you need to manually split out the fee:
- Select the transaction in the reconciliation screen
- Click Split
- Enter the full invoice amount and assign it to the relevant invoice
- Add a second line for the fee amount as a negative value, assigned to Payment Processing Fees
- Verify the two lines sum to the gross transaction total
- Click Reconcile
Which Account Should Stripe Fees Go To?
Create a dedicated Payment Processing Fees expense account in your chart of accounts under the Bank Charges category. Do not post fees to a sales or revenue account — this understates gross revenue and distorts profit margin reporting. Keeping fees on a separate expense line also makes it easy to review your total Stripe cost at tax time.
How to Handle Stripe Refunds in Xero
Standard Refunds
When you issue a refund in Stripe, it appears in the Stripe bank feed as a negative transaction in the Stripe Clearing Account.
- Locate the refund in the Stripe Clearing Account reconciliation screen
- If the original invoice has already been reconciled, you cannot simply unmatch it — you need a credit note
- Go to Accounts > Sales > New Credit Note, create a credit note against the customer and original invoice for the refund amount
- Return to the reconciliation screen, click Find & Match, and match the negative refund transaction to the credit note
- Click OK
If the refund is partial, the credit note should reflect only the partial amount. Do not apply it to the full invoice unless the entire invoice is being reversed.
Disputes and Chargebacks
Stripe chargebacks are more complex because they involve two distinct entries. When a customer disputes a charge, Stripe reverses the original payment and deducts a dispute fee (typically $15 for card disputes). You need to record:
- The reversal of the original payment — matched to a credit note against the original invoice
- The dispute fee — coded to Payment Processing Fees expense
- If Stripe later resolves the dispute in your favour, it will return the funds and the dispute fee — code this as income against Payment Processing Fees to net it back out
Keep a note on the original invoice in Xero describing the dispute status. This gives your accountant a clear trail if they need to investigate the period later.
Use Bank Rules to Automate Categorisation
Xero's bank rules reduce the manual decision-making on routine Stripe transactions. A bank rule tells Xero: "whenever you see a transaction matching these conditions, apply these settings automatically."
Bank Rule for Stripe Fees
- Go to Accounting > Bank Accounts, click on your Stripe Clearing Account, then select Manage Account > Create Bank Rule
- Set the condition: Transaction description contains "Stripe fee" (adjust to match your feed's exact label)
- Set the action: Create a transaction, coded to Payment Processing Fees, Tax Rate = No Tax
- Click Save, then click Run Rules to apply the rule to all existing unreconciled fee transactions
Bank Rule for Stripe Payouts Hitting Your Real Bank
- In your real business bank account, create a new bank rule
- Set the condition: Reference contains "STRIPE" or Payee contains "Stripe"
- Set the action: Transfer to Stripe Clearing Account
- Save and run
Bank rules handle categorisation but do not eliminate the confirmation step. Xero still requires you to click OK on each suggested match, which is by design — it gives you a final review before transactions are posted.
Manual vs Automated Reconciliation Comparison
| Factor | Manual (Xero Bank Feed + Rules) | Automated Tool |
|---|---|---|
| Setup time | 1-2 hours | 30-60 minutes |
| Monthly time cost | 2-8 hours depending on volume | Under 30 minutes review |
| Per-transaction detail | Yes, with manual matching | Yes, automatic |
| Fee handling | Manual or via bank rules | Automatic |
| Refund handling | Manual credit notes | Automatic |
| Bundled payout resolution | Manual transfer matching | Automatic |
| Error risk | Moderate (human review required) | Low |
| Cost | Free (included in Xero) | $20-$75/month depending on tool |
| Best for | Under 50 transactions/month | 50+ transactions/month |
For businesses under 50 Stripe transactions per month, the manual clearing account approach with bank rules is entirely manageable. Above that volume, the time cost of manual reconciliation typically outweighs the cost of an automation tool.
Automate Stripe-Xero Reconciliation
For higher-volume businesses, manual reconciliation — even with bank rules — becomes a significant ongoing overhead. Several tools automate the Stripe-to-Xero flow.
Synder pulls individual transaction data directly from the Stripe API, including full fee breakdowns, customer names, and product details, and syncs them into Xero as categorised transactions. It handles multi-currency, supports Shopify alongside Stripe, and offers a historical data import for onboarding. Best for businesses with 50+ Stripe transactions per month that want full per-transaction detail in Xero.
Amaka offers a Stripe-to-Xero connector focused on daily reconciliation summaries rather than line-by-line detail. It is simpler to configure than Synder and works well for businesses that primarily need a clean daily close. Best for businesses that prefer a summary-level approach.
PayTraQer offers granular control over account mapping and categorisation, and supports multiple Stripe accounts feeding into one Xero organisation. Best for businesses with complex account structures.
Reconkept is purpose-built for the bundled payout problem that causes the most reconciliation failures. It connects Stripe to Xero, resolves each payout against its constituent transactions automatically, and posts fees and refunds without manual intervention. No spreadsheets, no month-end catches — it runs continuously in the background.
Frequently Asked Questions
How do I set up Stripe in Xero?
Go to Accounting > Bank Accounts > Add Bank Account, search for "Stripe," select it from the results, and follow the prompts to name the account and activate the bank feed. This creates a virtual Stripe bank account inside Xero that receives individual transaction data directly from Stripe — separate from your real business bank account. Once connected, payments, fees, and refunds from Stripe will appear in this account's reconciliation screen automatically.
What account type should I use for the Stripe clearing account in Xero?
Use the Bank Account type in Xero, not a liability or current account. Selecting Stripe as the bank provider during setup enables the direct bank feed connection. The clearing account functions as a pass-through — money flows in as individual customer payments, out as fee entries and the net payout transfer, and the balance should return to zero after each payout cycle is reconciled.
What account should Stripe fees go to in Xero?
Stripe fees should be posted to a dedicated expense account, typically named "Payment Processing Fees" or "Stripe Merchant Fees," set up under the Bank Charges category in your chart of accounts. Go to Accounting > Chart of Accounts > Add Account, set the type to Expense, and save. Do not post fees to revenue or sales accounts — this understates your gross income and makes margin analysis unreliable. Set the tax rate on fee transactions to No Tax or Tax Exempt.
Why is my Stripe payout amount different from my Xero balance?
The most common causes are: (1) Stripe fees were not recorded in Xero, reducing the gross collected amount; (2) a refund was issued in Stripe but not reflected in Xero as a credit note; (3) a chargeback reversed a transaction; or (4) transactions are still in transit between Stripe's rolling settlement window and your bank. To diagnose, export a Stripe payout reconciliation report from the Stripe Dashboard and compare it line by line against the Stripe Clearing Account in Xero. Every entry in the Stripe report should have a corresponding Xero entry.
How do I reconcile bundled Stripe payouts in Xero?
Use the Stripe Clearing Account as a bridge. Individual customer payments from the Stripe bank feed are reconciled against invoices in the clearing account. Fees are recorded as expense transactions in the same account. When the bundled net payout arrives in your real bank account, you reconcile it as a transfer from the Stripe Clearing Account — not against individual invoices. This means your bank account reconciliation is a single transfer match rather than dozens of individual transaction matches. The clearing account balance nets to zero once everything is matched.
Does Xero automatically reconcile Stripe payments?
Xero will auto-suggest matches between Stripe bank feed transactions and outstanding invoices using its matching algorithm, but it does not automatically confirm those matches — you must review and click OK on each one. It also cannot automatically resolve bundled payouts, split gross payments from fees, or handle refunds and disputes without manual input. Bank rules automate the categorisation of routine fee transactions, but a human review step is always required. For true automation of the full reconciliation flow, a third-party tool is needed.
Can I import historical Stripe transactions into Xero?
Yes. When you first connect the Stripe bank feed in Xero, you can import historical transaction data — typically up to 90 days of history. For transactions older than 90 days, export a CSV from the Stripe Dashboard under Reports > Balance and import it manually into Xero using Accounting > Bank Accounts > [Stripe Account] > Import a Statement. Third-party tools like Synder also support extended historical imports during onboarding.
What happens if I use both the Xero payment services integration and the Stripe bank feed?
You will get duplicate transactions. The Xero payment services integration records a payment against the invoice when a customer pays via the Stripe payment link on an invoice. The bank feed then imports the same transaction again from Stripe. Both appear in Xero and need to be reconciled — except one of them is a duplicate with no real cash movement behind it. The fix is to choose one method and disable the other. If you use the bank feed (recommended for full fee visibility), go to Settings > Payment Services, find Stripe, and deactivate it.
How do I handle Stripe refunds in Xero?
When you issue a refund in Stripe, it appears as a negative transaction in the Stripe Clearing Account bank feed. If the original invoice has already been reconciled as paid, you cannot simply unmatch it. Instead, raise a credit note in Xero against the original invoice (Accounts > Sales > New Credit Note), then return to the reconciliation screen and match the negative refund transaction to the credit note. For partial refunds, the credit note amount should match only the refunded portion.
Automate Stripe Reconciliation in Xero
Reconkept connects Stripe to Xero and handles every payout automatically — bundled deposits, fees, and refunds reconciled without spreadsheets. Join the waitlist and get early access.
Get early access at Reconkept.com