1. Export the file from Stripe
- In the Stripe Dashboard open Reports > Balance.
- Under "Balance change from activity" click Download.
- Choose Itemized and CSV, pick the date range, and download.
- The older Transactions > All activity > Export (balance_history.csv) also works; choose "All columns".
Why a raw Stripe export fails in Xero
Xero would treat every charge as a line in a bank account that never received it. Import the Stripe activity into a Stripe clearing account in Xero, where payouts then show as transfers to your bank.
Xero imports the CSV line by line, so title rows above the table, balance rows, currency symbols in the amount, or separate gross, fee and net columns end up rejected or imported as the wrong amount.
What is unusual about the Stripe file
- Amounts are decimals in the major unit (10.00 = $10). Fees are positive and net = gross - fee.
- The legacy export lists the raw balance transaction Type (charge, payment, refund, payout, stripe_fee...), the report lists reporting_category.
- Payouts are not in the "Balance change from activity" report; they are a separate section.
- Dates are UTC unless you chose your account time zone when exporting; UTC times are converted to your time zone if you choose one.
- Accounts in Europe can get decimal commas ("104,13").
- Columns can be reordered or customized, so we read them by name.
What Xero requires
- Header matches Xero's template: *Date, *Amount, Payee, Description, Reference, Check Number.
- One signed amount column: money out negative, decimal point, no symbols.
- Up to 100,000 rows per file.
2. Before and after
Before: the Stripe balance report CSV as downloaded
"balance_transaction_id","created_utc","available_on_utc","currency","gross","fee","net","reporting_category","description" "txn_8Y1TestAAAA00001","2025-01-23 08:26:29","2025-01-27 00:00:00","usd","12.00","0.65","11.35","charge", "txn_8Y1TestAAAA00002","2025-01-23 08:26:31","2025-01-27 00:00:00","usd","-0.77","0.00","-0.77","refund","REFUND FOR PAYMENT" "txn_8Y1TestAAAA00003","2025-01-24 10:00:00","2025-01-28 00:00:00","usd","2500.00","72.80","2427.20","charge","Invoice INV-0007, annual plan" "txn_8Y1TestAAAA00004","2025-01-25 00:00:00","2025-01-25 00:00:00","usd","-0.50","0.00","-0.50","fee","Card payments (2025-01-24): Transaction netw... "txn_8Y1TestAAAA00005","2025-01-26 09:00:00","2025-01-26 09:00:00","usd","15.00","0.00","15.00","dispute_reversal","Dispute won"
After: what Xero receives
| *Date | *Amount | Payee | Description | Reference | Check Number |
|---|---|---|---|---|---|
| 01/23/2025 | 12.00 | Charge | txn_8Y1TestAAAA00001 | ||
| 01/23/2025 | -0.65 | Fee | Fee: Charge | txn_8Y1TestAAAA00001 fee | |
| 01/23/2025 | -0.77 | Refund - REFUND FOR PAYMENT | txn_8Y1TestAAAA00002 | ||
| 01/24/2025 | 2500.00 | Charge - Invoice INV-0007, annual plan | txn_8Y1TestAAAA00003 | ||
| 01/24/2025 | -72.80 | Fee | Fee: Charge - Invoice INV-0007, annual plan | txn_8Y1TestAAAA00003 fee | |
| 01/25/2025 | -0.50 | Stripe fee - Card payments (2025-01-24): Transaction network costs | txn_8Y1TestAAAA00004 |
Synthetic sample data that follows the real export layout, not a real account. The "after" output was produced from it by the same converter this page runs.
3. Import the converted file into Xero
- In Xero open Accounting > Bank accounts and choose the account.
- Click Manage account > Import a statement.
- Choose this CSV and click Import.
- Check the column mapping (Date, Amount, Payee, Description, Reference) and confirm the date format if asked.
Questions
- Which Stripe report should I export?
- For a Stripe balance account in your books, use the itemized "Balance change from activity" report, or the older balance history export. For one journal entry per payout, use the itemized payout reconciliation report instead; it has its own page here.
- Which date format does Xero need?
- Xero lists both month-first and day-first dates as accepted and asks you to confirm the format when it is unclear. Choose United States for MM/DD/YYYY or Elsewhere for DD/MM/YYYY, and confirm the same format in Xero if it asks.
- Why are some charges on a different day than in my dashboard?
- Stripe reports use UTC unless you choose your account time zone when exporting. A charge late in the evening in the United States can carry the next day's date in UTC.
- Can I import more than one month at once?
- Yes. Xero imports the whole statement file you give it. Keep each file to one bank account in Xero, and avoid overlapping a period you already imported so you do not have to delete duplicate statement lines.
Other ways to convert Stripe
- Convert a Stripe balance report CSV to QuickBooks Online
- Stripe CSV to QBO for QuickBooks
- Stripe CSV to OFX
Other exports to Xero (CSV)
- Import a Venmo statement CSV into Xero
- Import a Cash App CSV into Xero
- Import a PayPal activity CSV into Xero
- Import a Etsy monthly statement CSV into Xero
- Import a Airbnb earnings CSV into Xero
- Import a Gumroad payout CSV into Xero
- Import a Square transactions CSV into Xero
- Import a Shopify Payments transactions CSV into Xero
- Amazon settlement report to Xero
- eBay transaction report to Xero
- Import a Wise statement CSV into Xero
- Import an MT940 statement into Xero
- Import a camt.053 statement into Xero