VouchRow

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
statement.pdf statement.qbo
<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
Balanced · every row checked before this QBO file was written

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

  1. 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.
  2. 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.
  3. 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.
  4. 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>.
  5. 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 work

Running balance check

RowAmountBalance
  • 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 elementIn a bank CSV?Where it comes from in a conversion
OFX header (VERSION:102, CHARSET:1252)NoWritten by the converter
<INTU.BID> bank IDNoSupplied by you, from a .qbo your bank issued
Account number and typeRarelyRead from the statement
Statement period (DTSTART, DTEND)NoRead from the statement
DTPOSTED in YYYYMMDDA date in the bank's own formatConverted once the date order is settled
TRNAMT, signedSometimes split into debit and credit columnsSigned from the statement's columns and markers
<FITID> per transactionNoGenerated from the transaction, the same every time
<LEDGERBAL> closing balanceNoRead 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?

CSVQBO
QuickBooks OnlineYes, three- or four-columnYes
QuickBooks Desktop Web ConnectNoYes
Duplicate detectionNoYes, by FITID
Bank ID requiredNoYes
Column mapping at importYesNo
Date order questionYesNo

Who uses it

When people look for CSV to QBO

01

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.

02

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.

03

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.

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.