From bank transactions to Web Connect
CSV to QBO: bank transactions as a QuickBooks Web Connect file
A bank CSV can't just be renamed to .qbo. Here's what a CSV to QBO conversion has to add, when QuickBooks will accept the CSV as it is, and how to get a QBO file whose every row ties to the bank statement.
- A FITID on every transaction
- Your bank's own Intuit bank ID
- Checked against the statement
- QuickBooks Online and Desktop
<INTU.BID>10898<STMTTRN> <TRNTYPE>CREDIT <DTPOSTED>20260302 <TRNAMT>4210.00 <FITID>a3f9c2e81b07 <NAME>ACH DEPOSIT STRIPE PAYOUT</STMTTRN><STMTTRN> <TRNTYPE>CHECK <DTPOSTED>20260305 <TRNAMT>-1250.00 <FITID>5d10e7b4c9a2 <CHECKNUM>1042</STMTTRN><LEDGERBAL><BALAMT>15354.12
The short answer
How to convert a CSV to QBO
To convert a CSV to QBO, each row has to be rewritten as an OFX transaction with a posting date, a signed amount and a unique transaction ID (FITID), wrapped in a QuickBooks Web Connect document that carries your account details and your bank's Intuit bank ID (INTU.BID). VouchRow builds that QBO file from your bank's PDF statement for the same period, not from the CSV: upload the statement, enter your bank's ID and download a .qbo in which every row has been checked against the statement's balances.
Why the PDF? A bank's CSV is a list of rows. It usually has no opening or closing balance, often no running balance, and its layout varies by bank. The PDF statement carries the figures that prove the list is complete, so a QBO built from it can be checked before it reaches QuickBooks. Every bank that offers a CSV also issues statements, and the transactions are the same.
First, check whether you need a QBO at all. QuickBooks Online imports bank CSVs directly. The QBO route is worth it when you need duplicate detection, or when you're on QuickBooks Desktop, whose Web Connect import takes .qbo files.
Step by step
Getting a QBO file for the period your CSV covers
- 1Decide whether you need QBOQuickBooks Online: a three- or four-column CSV uploads directly, without duplicate detection. QuickBooks Desktop Web Connect, or any time re-imports are a risk: you want QBO.
- 2Download the PDF statement for the same periodFrom your online banking, download the monthly statement PDFs covering the dates in your CSV. Older statements are often available as PDFs long after CSV downloads stop.
- 3Upload and reviewSign in and upload the PDFs. Every row is checked against the running balance and the statement totals, and each row links to its highlighted line on the page.
- 4Export QBO with your bank IDChoose QBO and enter your bank's Intuit bank ID, found inside any .qbo your bank has issued after <INTU.BID>.
- 5Import into QuickBooksOnline: Transactions → Bank transactions → Link account → Upload from file. Desktop: File → Utilities → Import → Web Connect Files.
Why it works
What QBO adds that a CSV can't carry
Transaction IDs
A FITID per row is QuickBooks' duplicate key. CSV has no field for one, which is why re-importing a CSV doubles transactions.
Institution and account
QBO names the bank (INTU.BID) and the account, so QuickBooks links each file to the same account every time.
Unambiguous dates
Dates are YYYYMMDD. There's no day-first or month-first question to answer at import.
A balance that ties
The QBO carries the statement's closing balance, and every row has been checked against the statement before export.
Checked before export
A misread digit is caught on its own row
Every conversion is tested against the statement: the running balance on every row, page subtotals, opening plus movement against closing, the printed credit and debit totals, and the transaction count. When a number does not add up, VouchRow names the row and highlights the line it came from on the PDF.
Arithmetic only: it verifies amounts, balances and totals, not descriptions or dates, and two errors that cancel out would pass. The source-line link covers the rest.
How the checks workRunning balance check
- POS AMAZON MKTPLACE−86.4316,604.12
- CHECK #1042−1,250.0015,354.12
- ZELLE FROM J MORALES+640.0015,994.12
Every row agrees with the balance printed beside it.
The difference
CSV vs QBO: what a CSV to QBO conversion has to add
A CSV and a QBO can hold the same transactions, but the QBO says much more about them. This is what has to be supplied that a typical bank CSV doesn't contain:
| QBO element | In a bank CSV? | Where it comes from in a conversion |
|---|---|---|
| OFX header (VERSION:102, CHARSET:1252) | No | Written by the converter |
| <INTU.BID> bank ID | No | Supplied by you, from a .qbo your bank issued |
| Account number and type | Rarely | Read from the statement |
| Statement period (DTSTART, DTEND) | No | Read from the statement |
| DTPOSTED in YYYYMMDD | A date in the bank's own format | Converted once the date order is settled |
| TRNAMT, signed | Sometimes split into debit and credit columns | Signed from the statement's columns and markers |
| <FITID> per transaction | No | Generated from the transaction, the same every time |
| <LEDGERBAL> closing balance | No | Read from the statement |
Doing it yourself
Building a QBO from a CSV by hand
It can be done with a spreadsheet and a text editor, and many people try. The file has to be OFX 1.0.2 SGML, not XML, so leaf elements aren't closed. The header block must come first, followed by a blank line. Each transaction needs a FITID that is unique within the account and stays the same if you ever rebuild the file. Using row numbers or timestamps means a rebuilt file's IDs won't match the first one, and everything duplicates. And INTU.BID must be your own bank's ID.
Most hand-built QBO files that fail do so on one of those points: closed tags, a missing blank line after the header, unstable IDs, or a borrowed bank ID. The ones that import often go wrong later, when the same period is rebuilt and imported again.
QuickBooks Online
When the CSV is enough
QuickBooks Online accepts CSV bank files through the same Upload from file screen as QBO: three columns (Date, Description, Amount) or four (Date, Description, Credit, Debit). If you're importing a period once, into an account with no bank feed overlap, the CSV works and no conversion is needed.
What you give up is duplicate detection. QuickBooks can't tell that a CSV row is one it has already seen, so importing an overlapping period, or the same file twice, creates duplicates you then exclude by hand. If that risk is real, for example in catch-up work across many months, QBO is worth the extra step.
QuickBooks Desktop is different. Its Web Connect import takes .qbo files, so Desktop users who want transactions to come in through the Bank Feeds Center need QBO. The alternative on Desktop is IIF, which needs no bank ID but writes straight to the register.
Why the PDF
Why we build the QBO from the PDF statement
VouchRow reads PDF statements, digital or scanned. Starting from the statement rather than the CSV has three practical advantages.
- Completeness can be proven. The statement prints opening and closing balances, often a running balance, and totals. Every row is checked against them, so a missing or misread transaction is caught before import. A CSV gives you nothing to check against.
- Every row is traceable. Each transaction links to its highlighted line on the statement page, which a CSV row can't do.
- Older periods are covered. Banks often limit how far back CSV downloads reach, while statement PDFs go back much further.
Avoiding duplicates between your CSV and QBO imports
If part of a period has already gone into QuickBooks from a CSV, those rows have no FITIDs, so QuickBooks can't recognise the same transactions when they arrive in a QBO file. It may suggest matches in For review, but don't rely on it. Import the QBO only for dates the CSV didn't cover, or exclude the CSV-imported transactions first.
Side by side
CSV or QBO for QuickBooks?
| CSV | QBO | |
|---|---|---|
| QuickBooks Online | Yes, three- or four-column | Yes |
| QuickBooks Desktop Web Connect | No | Yes |
| Duplicate detection | No | Yes, by FITID |
| Bank ID required | No | Yes |
| Column mapping at import | Yes | No |
| Date order question | Yes | No |
Who uses it
When people look for CSV to QBO
QuickBooks Desktop users with a CSV-only bank download
The bank offers CSV but not Web Connect files. Converting the PDF statements to QBO gives Desktop the file it imports, provided the bank has an Intuit bank ID; otherwise IIF.
Catch-up across many months
Importing a year of history where re-imports and overlaps are likely. QBO's stable IDs make a second import of the same statement harmless.
Bookkeepers who want a checked file
A QBO built from the statement ties to the closing balance before it reaches the client's books.
FAQ
CSV to QBO: bank transactions as a QuickBooks Web Connect file: questions
Can I convert a CSV to QBO?
Yes, but it takes more than renaming the file: each row needs OFX structure, a stable FITID, and your bank's INTU.BID. VouchRow builds the QBO from the bank's PDF statement for the same period, which also lets every row be checked against the statement's balances.
Do you accept CSV files as input?
No. The converter reads PDF bank and credit card statements, digital or scanned. If you have a CSV from your bank, download the PDF statements for the same dates and convert those.
Why doesn't QuickBooks just take the CSV?
QuickBooks Online does accept CSV, but it can't deduplicate it, because CSV has no transaction ID field. A QBO file carries a FITID per row, so re-importing the same period is safe. QuickBooks Desktop's Web Connect import only takes .qbo.
Can I rename a .csv file to .qbo?
No. A QBO is an OFX document with a header, account details, a bank ID and tagged transactions. A renamed CSV is still a CSV, and QuickBooks will refuse it.
How do I create a QBO file from Excel?
The same way as from CSV: the rows need OFX structure, stable transaction IDs and a bank ID. The reliable route is to convert the PDF statement the spreadsheet came from to QBO.
Where do I get my bank's INTU.BID?
From any .qbo file your bank has issued: open it in a text editor and copy the number after <INTU.BID>. If your bank isn't enrolled in Web Connect, it has no valid ID, and CSV (Online) or IIF (Desktop) is the route.
Will a QBO import duplicate transactions I already imported by CSV?
It can. CSV-imported rows have no FITIDs, so QuickBooks can't recognise them as the same transactions. Import the QBO only for dates the CSV didn't cover.
Keep going
Related guides and converters
Get a QBO file you can trust
Create an account, upload the PDF statements for the period and export QBO with your bank's ID. Every row is checked first. QBO is included from Starter at $15 a month for 300 pages.