Skip to content

CSV to QBO converter

Upload the CSV your bank exported and download a .qbo file that QuickBooks Online imports through Bank transactions › Upload from file. The date, description and amount columns are found by their headers — or by what they contain when there is no header row — so there is nothing to map, and each CSV counts as one page: the first 3 files of your first upload are free.

Upload a file

Read your statement

pages ready to read.

Drag your CSV hereA bank CSV — as many at once as you likeChoose files

What the QBO file contains

  • One transaction per line, in the order the CSV lists them
  • A signed amount per transaction: money out negative, money in positive — two Debit/Credit columns become one
  • Dates written as YYYYMMDD, so QuickBooks cannot swap day and month
  • A <FITID> per transaction, so uploading the same file twice is caught as a duplicate — and two identical lines on one day are both kept
  • The currency the CSV names, in <CURDEF>; USD when the file does not say

How CSV columns map to QBO fields

A QBO file is OFX with Intuit’s bank ID (<INTU.BID>) added: every transaction is a <STMTTRN> block with a fixed set of tags. This is where each column of your bank’s CSV ends up.

Your CSV columnQBO fieldWhat happens to it
Date, Transaction Date, Posting Date, Booking Date, Value Date<DTPOSTED>Written as YYYYMMDD. Whether 03/04 is March or April is decided once for the whole file, from the dates that can only be read one way.
Amount, Transaction Amount, Value<TRNAMT>Kept signed. A decimal comma (3,50) and a currency symbol are read correctly.
Debit / Withdrawal / Money out and Credit / Deposit / Money in<TRNAMT>The two columns become one signed amount: money in minus money out.
Description, Payee, Merchant, Details, Memo, Reference, Name<NAME>, <MEMO>Several description columns are joined into one: <NAME> holds the first 32 characters, the payee QuickBooks shows, and <MEMO> all of it. Accents are taken off (Café → Cafe), because a QBO file is plain ASCII.
—<TRNTYPE>DEBIT for money out, CREDIT for money in, from the sign of the amount.
—<FITID>Built from the date, amount and description, so QuickBooks recognises a line it has already imported. Two identical lines on one day get different IDs, so both are kept.
Balance, Running Balance<LEDGERBAL>A QBO transaction has no balance of its own; the last balance becomes the statement’s closing balance. Convert to CSV or Excel to keep every running balance.
Posting Date,Description,Debit,Credit,Balance
2026-03-02,Direct Debit 4471 Acme Insurance,120.00,,1880.00
2026-03-04,Card Payment Corner Grocer,38.40,,1841.60
2026-03-06,Transfer Received J Smith,,500.00,2341.60
A typical bank CSV with separate Debit and Credit columns. Uploaded here, it becomes the .qbo file shown below.

Headers in other languages are recognised too — Kwota, Betrag, Montant, Importe, Bedrag, Belopp for the amount — and so are semicolon, tab and pipe separators, account details printed above the header row, and the UTF-16 files Excel writes.

What the QBO file looks like

The CSV above as a .qbo file. Each <STMTTRN> block is one transaction; <FITID> is the ID QuickBooks uses to skip a line it has already imported, so loading the same file twice does not double it.

OFXHEADER:100
DATA:OFXSGML
VERSION:102
SECURITY:NONE
ENCODING:USASCII
CHARSET:1252
COMPRESSION:NONE
OLDFILEUID:NONE
NEWFILEUID:NONE

<OFX>
<SIGNONMSGSRSV1>
<SONRS>
<STATUS>
<CODE>0</CODE>
<SEVERITY>INFO</SEVERITY>
</STATUS>
<DTSERVER>20260310120000</DTSERVER>
<LANGUAGE>ENG</LANGUAGE>
<INTU.BID>3000</INTU.BID>
</SONRS>
</SIGNONMSGSRSV1>
<BANKMSGSRSV1>
<STMTTRNRS>
<TRNUID>1</TRNUID>
<STATUS>
<CODE>0</CODE>
<SEVERITY>INFO</SEVERITY>
</STATUS>
<STMTRS>
<CURDEF>USD</CURDEF>
<BANKACCTFROM>
<BANKID>000000000</BANKID>
<ACCTID>0000000000</ACCTID>
<ACCTTYPE>CHECKING</ACCTTYPE>
</BANKACCTFROM>
<BANKTRANLIST>
<DTSTART>20260302</DTSTART>
<DTEND>20260306</DTEND>
<STMTTRN>
<TRNTYPE>DEBIT</TRNTYPE>
<DTPOSTED>20260302</DTPOSTED>
<TRNAMT>-120.00</TRNAMT>
<FITID>20260302-12000-DirectDebit</FITID>
<NAME>Direct Debit 4471 Acme Insurance</NAME>
<MEMO>Direct Debit 4471 Acme Insurance</MEMO>
</STMTTRN>
<STMTTRN>
<TRNTYPE>DEBIT</TRNTYPE>
<DTPOSTED>20260304</DTPOSTED>
<TRNAMT>-38.40</TRNAMT>
<FITID>20260304-3840-CardPayment</FITID>
<NAME>Card Payment Corner Grocer</NAME>
<MEMO>Card Payment Corner Grocer</MEMO>
</STMTTRN>
<STMTTRN>
<TRNTYPE>CREDIT</TRNTYPE>
<DTPOSTED>20260306</DTPOSTED>
<TRNAMT>500.00</TRNAMT>
<FITID>20260306-50000-TransferRec</FITID>
<NAME>Transfer Received J Smith</NAME>
<MEMO>Transfer Received J Smith</MEMO>
</STMTTRN>
</BANKTRANLIST>
<LEDGERBAL>
<BALAMT>2341.60</BALAMT>
<DTASOF>20260306</DTASOF>
</LEDGERBAL>
</STMTRS>
</STMTTRNRS>
</BANKMSGSRSV1>
</OFX>
Three transactions from a sample statement, exactly as the downloaded .qbo file writes them.

QuickBooks Online import errors and how to fix them

Most failed uploads come from the CSV, not from QuickBooks. These are the ones Intuit documents and the ones bank exports cause, with the fix for each. The upload itself is covered step by step in the QuickBooks import guide.

The file is too large
Intuit caps a manual upload at 350 KB and 1,000 lines. Split the CSV by date range before converting; each part is one file.
The CSV is refused, or the columns will not map
The CSV upload wants exactly three columns (Date, Description, Amount) or four (Date, Description, Credit, Debit), in English, with one date format throughout. Bank exports rarely match. A .qbo has no columns to map, which is why converting is quicker than editing the CSV by hand.
Day and month are swapped
The CSV mixes date formats, or QuickBooks read 03/04 the other way. A .qbo stores dates as year-month-day, which cannot be misread.
Spending shows up as income
Credit and Debit were mapped the wrong way round in a CSV upload. In the .qbo, money out is already negative. If your card’s CSV prints purchases as positive numbers, check the first rows after the upload: the file keeps the signs the bank wrote.
Transactions appear twice
Two exports overlap, or the same file went in twice. Start each upload a day before the earliest transaction already in QuickBooks, and exclude duplicates in For review rather than adding them.
QuickBooks Desktop cannot verify the financial institution
Desktop reads a .qbo as a Web Connect download and refuses one whose Intuit bank ID it does not list, or one opened in a QuickBooks release older than three years. This file is written for QuickBooks Online; for Desktop see QuickBooks Online vs Desktop.

How to convert

  1. Export the CSV from your bank

    Most banks offer CSV next to the PDF statement, under statements, activity or export.

  2. Upload it here

    Drop the .csv in above — QBO is already the selected output. Several CSVs can go in at once.

  3. Import into QuickBooks Online

    Bank transactions › Upload from file, pick the .qbo and the account, then review the lines in For review.

Statements it handles

Layouts differ from bank to bank, so nothing is matched against a fixed template. An unusual statement still produces a table you can check before exporting — which is what makes it usable for bookkeepers and accountants who receive statements from every client.

PDF statements and CSV exports

A statement downloaded from your bank, or the CSV your bank lets you export. Both arrive as the same clean table.

Multi-page statements, read as one table

A statement that runs over several pages — or several statements uploaded together — is read as one continuous table, not one file per page.

Amounts and dates kept as your bank prints them

Debit and credit signs, decimal places and date formats are left as printed, so the numbers still reconcile against the statement.

Scanned, image-only PDFs, read with OCR

A statement with no text layer is read with OCR and may need a quick review — the one case where a row can come out wrong.

  • PDF
  • CSV
  • Scan
DateDescriptionAmount
02/03Direct Debit 4471120.00
04/03Card Payment-38.40
06/03Transfer Received500.00
08/03Standing Order-250.00
11/03Salary Payment2,400.00

Frequently asked questions

How do I convert a CSV to QBO?

Upload the CSV above, keep QBO as the output and download the .qbo file. Columns are detected for you, so there is nothing to map, and no account is needed.

Is there a free CSV to QBO converter?

Yes, up to a point: each CSV file counts as one page, and the first 3 pages of your first upload are free — three CSV files convert at no cost. After that it is $0.20 a file with a $3.90 minimum per batch, and no subscription.

How do I import a CSV into QuickBooks Online?

Either upload the CSV itself and map its columns — it must have three or four columns in the layout Intuit specifies — or convert it to .qbo here and upload that, which needs no mapping. Both go through Bank transactions › Upload from file. The full steps are in the QuickBooks import guide.

Will my bank’s CSV work?

Column order and header names differ from bank to bank. The columns are found from their headers in several languages, or from their contents when there is no header, so an unusual export still converts. A file with more than 100,000 rows has to be split first.

What is a QBO file?

QBO is the file QuickBooks reads when it brings transactions in from a bank — an OFX file with an Intuit header. It carries the date, description and amount of each line, plus an ID that stops duplicates.

Does this create a QuickBooks company file?

No. A .qbo here is a bank-feed import file, not a QuickBooks company backup.

Is my file kept after conversion?

No. The file is deleted when the conversion finishes; only the converted copy stays at your private link.