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, Wave, GnuCash, Moneydance, MS Money and others
Stripe does not produce bank statement files. To keep a Stripe balance account in your books, each charge, fee, refund and payout has to become a statement line in its own account.
Programs that read OFX do not ask you to map columns, which avoids the date and sign mistakes a hand-mapped CSV invites. Payment apps rarely offer OFX themselves, so the file has to be built from their CSV.
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, Wave, GnuCash, Moneydance, MS Money and others requires
- Plain OFX 1.0.2 SGML with no Intuit extensions.
- One account and one currency per file.
- Stable transaction ids: the same row in two overlapping exports gets the same id.
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, Wave, GnuCash, Moneydance, MS Money and others receives
... <STMTTRN> <TRNTYPE>CREDIT</TRNTYPE> <DTPOSTED>20250123120000</DTPOSTED> <TRNAMT>12.00</TRNAMT> <FITID>2B50125E193D4B54G</FITID> <NAME>Charge</NAME> </STMTTRN> <STMTTRN> <TRNTYPE>DEBIT</TRNTYPE> <DTPOSTED>20250123120000</DTPOSTED> <TRNAMT>-0.65</TRNAMT> <FITID>2B50125E193D4B54F</FITID> <NAME>Fee</NAME> <MEMO>Fee: Charge</MEMO> </STMTTRN> ...
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, Wave, GnuCash, Moneydance, MS Money and others
- In your accounting software open the bank account and choose Import statement (or File > Import > OFX).
- Choose this .ofx file.
- Review and confirm the transactions.
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 programs accept OFX files?
- Xero, Wave, GnuCash, Moneydance and many desktop finance programs offer an OFX import. QuickBooks prefers .qbo and Quicken prefers .qfx; use those variants for Intuit products.
- 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.
- What happens with overlapping exports or repeated rows?
- Each transaction gets an id built from its date, amount, description and platform id, so the same row in two overlapping exports gets the same id. Whether your software uses that id to skip a repeat is up to the software, so avoiding overlapping date ranges is still the safest habit. Within one file, exact repeats of the same platform transaction are dropped and the notes say how many.
Other ways to convert Stripe
- Convert a Stripe balance report CSV to QuickBooks Online
- Import a Stripe balance report CSV into Xero
- Stripe CSV to QBO for QuickBooks