Stripe CSV to QBO for QuickBooks

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. A .qbo file is Intuit's Web Connect format: an OFX bank statement that also carries an Intuit bank identifier (INTU.BID). QuickBooks Online and QuickBooks Desktop read it without a column-mapping step. Drop the file below. It is converted on your device and never uploaded.

Convert your file

Stripe to QuickBooks (.qbo Web Connect)

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 QuickBooks Online and QuickBooks Desktop

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.

QuickBooks cannot read a payment app CSV as a .qbo file, and renaming the file does not help. A .qbo file needs the OFX statement structure, an account type that matches the QuickBooks account you upload into, and an Intuit bank identifier.

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 QuickBooks Online and QuickBooks Desktop requires

  • OFX 1.0.2 SGML file carrying an Intuit bank id (INTU.BID 3000, a bank Intuit's published list shows as active for Web Connect).
  • QuickBooks US needs US dollars; QuickBooks Canada takes CAD or USD with bank id 2.
  • QuickBooks Online: up to 1,000 transactions and 350 KB per upload (we split bigger files between days where possible).
  • Each transaction id is built from its date, amount, description and platform id, so the same row in two overlapping exports gets the same id.
  • Credit card accounts must be exported with account type "credit card".
  • QuickBooks Desktop only imports Web Connect in its supported (recent) releases.

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 QuickBooks Online and QuickBooks Desktop 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 QuickBooks Online and QuickBooks Desktop

  1. QuickBooks Online: go to Transactions > Bank transactions, click Link account (or Update) > Upload from file.
  2. Choose this .qbo file, pick the QuickBooks account to put it in, and click Continue.
  3. QuickBooks Desktop: File > Utilities > Import > Web Connect Files, choose the file, then pick or create the account.
  4. Review the transactions under For review and add or match them.

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.
What does "QuickBooks is unable to verify the financial institution" mean?
It is commonly reported when the bank identifier (INTU.BID) inside a .qbo file is missing or not one QuickBooks recognizes. Files from this converter use 3000, an id listed as active for Web Connect in Intuit's published bank list. Intuit does not document exactly how QuickBooks Online checks the id.
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.
Should I use .qbo or the QuickBooks Online CSV?
For QuickBooks Desktop, use .qbo: Web Connect is how Desktop brings in bank transactions. For QuickBooks Online either works. The .qbo file skips the column-mapping step, and each transaction carries an id built from its date, amount, description and platform id, so the same row converted from two overlapping exports gets the same id.

Other ways to convert Stripe

Other exports to QuickBooks (.qbo Web Connect)

Common import problems