SimpleBankConvertSimpleBankConvert home

Import Stripe Transactions into Xero

By SimpleBankConvertPublished June 13, 2025Updated June 13, 2025

There are two ways to import Stripe transactions into Xero. The simple one records only the payouts that reach your bank statement. The fuller one sets up a Stripe clearing account in Xero, imports each charge, fee and refund there, and treats every payout as a transfer to the bank. Never record the same sales both ways.

What a Stripe payout looks like on the Xero bank statement

A Stripe payout is one deposit on your bank statement that bundles many customer payments, minus Stripe's fees and any refunds. Xero sees it as a single statement line in the bank account. The individual sales behind it are not on the bank statement at all; they live in Stripe's own records.

Why one deposit hides many sales

Stripe holds customer payments in a balance and sends money to your bank on a schedule. Stripe's payout reconciliation guide explains that automatic payouts follow your payout schedule and can include funds from many transactions. Each movement in or out of the Stripe balance is a balance transaction, with types such as charge, refund and stripe_fee.

What that means in Xero

Your bank statement line might read "STRIPE TRANSFER 317.79". That figure is real money, but it is not your sales for those days. Your sales were higher, and the gap is fees and refunds. If you code the 317.79 straight to sales, your income is understated and your fees never appear as an expense.

Manual payouts are harder

Stripe notes that if you create payouts yourself, it cannot tell which transactions each one contains, and reconciling them is up to you. Automatic payouts are much easier to tie back to their sales.

Payouts only, or a Stripe clearing account in Xero?

Record payouts only if you have a few Stripe sales a month and do not need fees as a separate expense. Use a Stripe clearing account if you have regular volume, refunds, or a need to report gross sales. The clearing account is more setup but gives true sales and fee figures.

Payouts only

Code each payout line on the bank statement as sales, and split out fees if you know them. It takes no setup. It works when payouts are rare and you can split each one by looking at it in Stripe. It breaks down when a payout bundles dozens of charges, a refund or a dispute.

A Stripe clearing account

Add a bank account in Xero called something like "Stripe clearing". Import Stripe's charges, fees and refunds into it. Its balance then mirrors your Stripe balance. Each payout leaves the clearing account and arrives in your real bank account as a transfer. Your income shows the gross sales, your fees show as an expense, and the bank deposit is explained.

A side-by-side view

Question Payouts only Stripe clearing account
Setup None One extra bank account in Xero
Sales shown in Xero Net of fees, unless you split each payout Gross, line by line
Fees Only if you split them by hand One line per fee, or one per payout
Refunds Hidden inside a smaller payout Their own lines
Monthly work Code each payout Import a Stripe file, reconcile, match payouts

Both methods give the same bank balance. They differ only in how much detail sits behind the deposits.

A Stripe feed instead of files

Xero's page about bank feeds says you can set up a Stripe feed that imports Stripe statement lines on your payout schedule, even without Stripe as a payment service in Xero. This guide covers the file route, which needs nothing beyond a Stripe export and a CSV.

Building a Stripe clearing account CSV for Xero

A Stripe clearing account CSV uses the same columns as any Xero statement import: date, one signed amount, payee, description and reference. Export your Stripe balance activity for the period, keep one row per charge, refund, fee and payout, and give money into the Stripe balance a plus sign and money out a minus.

Which rows go in

  • Charges. Positive, at the gross amount the customer paid.
  • Refunds. Negative.
  • Fees. Negative. Stripe may show a fee per charge; you can keep each one or total them per payout.
  • Payouts. Negative, because the money leaves the Stripe balance on its way to your bank.

The columns, with an example

Here is an example file for one payout. The customers and numbers are made up, and the fee amounts are illustrations, not Stripe's real rates.

Date,Amount,Payee,Description,Reference
09/08/2026,100.00,Juniper Hale,Stripe charge,ch_example01
09/08/2026,-3.20,Stripe,Stripe fee,ch_example01
09/09/2026,250.00,Marlow Studio,Stripe charge,ch_example02
09/09/2026,-7.55,Stripe,Stripe fee,ch_example02
09/10/2026,40.00,Ada Brennan,Stripe charge,ch_example03
09/10/2026,-1.46,Stripe,Stripe fee,ch_example03
09/10/2026,-60.00,Corin Vale,Stripe refund,re_example01
09/12/2026,-317.79,Stripe,Payout to bank,po_example01

Put the Stripe object ID in the reference column. When a customer asks about a charge, you can search Xero for it.

Checking the file before upload

Add up every row except the payout. Charges of 390.00, fees of 12.21 and a refund of 60.00 give 317.79. That equals the payout, so the clearing account returns to zero after it. If your own file does not net to zero across a payout, a row is missing. The general rules for laying out these columns are in the Xero bank statement import CSV guide.

Matching the Stripe payout deposit in the Xero bank account

Each payout now appears twice, once in each account: as a minus in the Stripe clearing account and as a deposit on your bank statement. Reconcile them as one transfer between the two accounts. Neither side is income, because the income was already recorded when the charges came into the clearing account.

Steps for one payout

  1. Import the Stripe CSV into the Stripe clearing account.
  2. Reconcile each charge to sales, each fee to a fees expense account and each refund against sales or the original invoice.
  3. In your bank account, find the deposit of 317.79.
  4. Record it as a transfer from the Stripe clearing account.
  5. In the clearing account, match the -317.79 payout line to that same transfer.

Why the two lists must agree

Every line you import is a statement line, and every coded or matched entry is an account transaction. If the distinction is new, statement lines versus account transactions in Xero explains how the two relate and why a balance can look right in one list and wrong in the other.

Timing gaps

A payout often reaches the bank a day or more after Stripe sends it. Use the date each statement shows. The transfer will match even if the dates differ by a few days.

Why does Stripe income show up twice in Xero?

Stripe income shows twice when the gross charges are coded as sales in the clearing account and the payout deposit is also coded as sales in the bank account. The cure is to make the bank deposit a transfer. Check your sales account for lines whose payee is Stripe; those are usually the doubled payouts.

How it happens

It is common when a business starts with the payouts-only method and later adds a clearing account without changing how payouts are coded. A bank rule that codes anything from "STRIPE" to sales keeps doing that even after the clearing account exists. Edit or delete that rule first.

How to find the extra income

Run an account transactions report for your sales account for the month, and filter or sort by contact. Bank deposits from Stripe that were coded to sales will stand out next to the individual customer charges. Their total equals the amount by which sales are overstated.

Fixing it

Change each wrongly coded payout into a transfer from the Stripe clearing account. If the line is reconciled, you may need to remove the reconciliation and redo it. Do this month by month, and check that the clearing account balance returns to near zero after each payout.

The QuickBooks version of the same problem

The same mix-up happens in other software. If you also keep books in QuickBooks Desktop for another business, importing bank transactions into QuickBooks Desktop covers that program's file route.

Stripe payouts in a second currency in Xero

If Stripe settles in a currency different from your Xero base currency, the clearing account must be in Stripe's settlement currency, and the payout will arrive at your bank as a different number. Xero needs a plan that supports multiple currencies to hold a foreign currency bank account.

What changes

Charges, fees and refunds in the clearing CSV stay in the settlement currency. The bank deposit appears in your bank's currency at whatever rate the conversion used. The difference between the two values is a gain or loss on exchange, not missing money.

Setting it up

Check your plan first. On Xero's US plan comparison, multiple currencies are listed under the Established plan only. Then create the clearing account in the settlement currency. Import the Stripe file in that currency, using the same column layout as before. When you record the payout as a transfer to your home-currency bank account, enter both amounts as they actually moved. Importing a foreign currency bank statement into Xero covers how Xero handles statements whose currency differs from your base currency.

A last check each month

Whatever the currency, compare three numbers at month end: the Stripe balance on Stripe's dashboard, the clearing account balance in Xero, and the total of payouts on the bank statement. When the first two agree and every payout has a matching deposit, the month is complete.

If your bank statements arrive only as PDFs, SimpleBankConvert is being built to turn them into a Xero-shaped CSV so the payout deposits can be imported; the get started page puts you on the list.

All posts in Xero imports