Stripe CSV to OFX

In short: Stripe balance reports list every charge, refund, fee and payout in UTC with gross, fee and net amounts, and each payout to your bank bundles many of them into one net deposit. OFX (Open Financial Exchange) is the standard bank statement file. Xero, GnuCash, Moneydance and many other programs import it without asking you to map columns. Drop the file below. It is converted on your device and never uploaded.

Convert your file

Stripe to OFX

balance_history.csv, or the itemized "Balance change from activity" report

Your file stays on this device

It is read and converted by this page, inside your browser. Nothing from the file is uploaded, and the converter keeps working offline once the page has loaded.

One email when it ships. The address is used for nothing else. Details.

1. Export the file from Stripe

  1. In the Stripe Dashboard open Reports > Balance.
  2. Under "Balance change from activity" click Download.
  3. Choose Itemized and CSV, pick the date range, and download.
  4. 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

  1. In your accounting software open the bank account and choose Import statement (or File > Import > OFX).
  2. Choose this .ofx file.
  3. 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

Other exports to OFX