# CSV to QBO converter for QuickBooks bank imports

> Turn a bank or credit card CSV export into a QuickBooks Web Connect (.qbo) file or an OFX 2 file. It runs in your browser, maps the columns, and shows the totals before you download.

By StatementBench. Updated 6 October 2026. Canonical URL: https://statementbench.com/csv-to-qbo/

No paid links on this page: vendor links go straight to the vendor.

> **Interactive tool.** The CSV to QBO converter runs in the browser on the HTML version of this page: https://statementbench.com/csv-to-qbo/. Files are processed on your device and never uploaded. Output: QuickBooks Web Connect (.qbo, OFX 1.02 SGML with INTU.BID) or OFX 2.2 XML (.ofx).

## What the converter does

You give it the CSV your bank exports. It writes either of two files:

- **.qbo** (QuickBooks Web Connect): OFX 1.02 in SGML form, plus Intuit's `INTU.BID` bank identifier. QuickBooks Desktop imports bank transactions from this format, and QuickBooks Online accepts it too.
- **.ofx** (OFX 2.2 XML): the same statement as well-formed XML. Use it for Xero, Quicken and other software that reads OFX.

Both files have a stable transaction ID for every row, a statement date range, and the account details you enter. Nothing leaves your browser. Once the page has loaded, the conversion works with the network off.

## Do you need a QBO file at all?

Check these first.

1. **Your bank's direct feed.** If your bank connects to QuickBooks, that feed is the cleanest source and it is included in your subscription. A converted file is for banks that don't connect, for accounts that were closed, and for history older than the feed reaches.
2. **QuickBooks Online's own CSV upload.** QuickBooks Online imports CSV directly, but it is strict about the layout: a three-column file (date, description, amount) or a four-column one (date, description, credit, debit), with a date format it recognizes. Many bank exports have extra columns, header blocks or signs it rejects. Converting to .qbo avoids that, and the transaction IDs let QuickBooks skip rows it has already seen.
3. **QuickBooks Desktop.** Desktop imports bank transactions as Web Connect files, so the .qbo route is the usual one.

## How it handles messy exports

Bank CSVs vary more than they should. The converter is tested against these cases on every build:

- **Header blocks.** Some exports open with account name, number and sort code rows before the real header. The converter skips to the first row that has both a date and an amount, and treats the row above it as the header.
- **Delimiters and encodings.** Commas, semicolons, tabs and pipes are detected. Files saved by Excel in Windows-1252 (where a `£` or `é` breaks UTF-8) are decoded correctly.
- **Dates.** `01/31/2026`, `31/01/2026`, `2026-01-31`, `20260131`, `Jan 31, 2026` and `31-Jan-2026` are all recognized, with two- or four-digit years. If every day in the file is 12 or lower, the file could be month-first or day-first, so the converter warns you and lets you choose.
- **Amounts.** Leading or trailing minus signs, parentheses for negatives, `CR`/`DR` suffixes, currency symbols and codes, thousands separators, and decimal commas (`1.234,56`).
- **Separate debit and credit columns.** Some banks print withdrawals as positive numbers in a Debit column and some as negative numbers. Either way they are written as money out.
- **Indicator columns.** Some exports pair an unsigned amount with a `DR`/`CR` or Debit/Credit column. Map that column and the converter applies the signs.
- **Rows that are not transactions.** Rows with no valid date, such as a closing "Total" row, are skipped and listed. So are zero-amount rows, which are usually authorization holds.
- **Newest-first files.** Order doesn't matter. If you map a balance column, the ending balance is taken from the latest row by date, not the last row in the file.

## Transaction IDs and duplicates

Each transaction in an OFX file has an ID (`FITID`). QuickBooks remembers these IDs and skips any it has already imported. That is what makes importing overlapping date ranges safe. The ID has to meet two conditions:

- **Stable.** The same transaction must get the same ID every time you convert it. Here the ID is a hash of the date, amount, description and check number, so it doesn't depend on row position, the day you convert, or your computer.
- **Unique.** Two identical transactions in one file, such as two $5.75 coffees on the same day, must not collide. A counter for repeated transactions makes them #1 and #2.

Two cases still produce duplicates. A bank may change a description between exports, for example from "PENDING" to the posted text, so convert posted transactions only. And if your CSV has a bank transaction ID column, map it: when those IDs are present and unique, they are used as is.

## What INTU.BID is

`INTU.BID` is Intuit's identifier for the bank that issued the file. QuickBooks Desktop checks it against its list of banks that support Web Connect, and can refuse a file whose ID it doesn't recognize. The default here is `3000`, a value Desktop accepts and widely used for converted files. If you know your own bank's Intuit ID, enter that instead. QuickBooks Online is much less strict.

## Limits

- **Not tested against every QuickBooks build.** The output follows the OFX 1.02 and 2.2 specifications and the usual Web Connect conventions, but this site has not run it through every QuickBooks Desktop year or region. If a version rejects a file, the error message usually names the field it objects to.
- **Names are cut to 32 characters.** OFX 1.02 limits a transaction name to 32 characters. When a description is longer, the full text goes into the memo field so nothing is lost.
- **QBO files are ASCII only.** The 1.02 format is ASCII, so "Café" becomes "Cafe". The OFX 2 file keeps full Unicode.
- **The ledger balance is 0.00 unless you set one.** The file carries a balance figure, which QuickBooks shows as the bank balance. Enter your statement's ending balance, or map a balance column and it is filled in for you.
- **One account per file.** If your export mixes accounts, split it first.
- **Card exports.** Many card CSVs show purchases as positive numbers. Tick "Flip signs" so purchases become money out.

## When a paid tool is worth it

This converter starts from a CSV. If you start from PDF statements, use the [statement PDF to CSV tool](/bank-statement-pdf-to-csv/) first. It checks every row against the statement's running balance.

Pay for a tool when the free route stops being cheap:

- **Scanned or photographed statements.** These need OCR, which neither free tool does. [DocuClipper](https://www.docuclipper.com/) is built for bank statements: it runs OCR and exports straight to QBO and CSV. Run the free tools on a few statements first. Paid converters also make mistakes, and the [benchmark method](/methodology/) explains how StatementBench plans to measure them.
- **Many statements a month.** At dozens of statements, the minutes spent mapping columns add up, and a batch tool pays for itself.
- **A bank that supports a direct feed.** Connecting it in [QuickBooks Online](https://quickbooks.intuit.com/) beats any file workflow for ongoing activity. Use files for the gaps.
