Why this tool exists
QuickBooks Online imports three file formats for bank transactions: .csv, .qbo (Web Connect / OFX 1.0.2), and .qfx. Of the three, .qbo is by far the most reliable. CSV imports are quietly fragile — QuickBooks insists on a specific column order, specific date formats, and signs that match its expectations. Get any of those wrong and you get an import that looks like it worked but quietly puts your debits and credits in the wrong sign for hundreds of rows.
A .qbo file removes that ambiguity. The format is rigid: an XML-style header, a list of STMTTRN blocks with explicit TRNTYPE (DEBIT/CREDIT), DTPOSTED, TRNAMT, and NAME fields, and a final ledger balance. QuickBooks reads that and gets the right answer every time. Generating one by hand is tedious. That's what this tool does for you.
Once you've got a .qbo, import it via Transactions → Bank → Link account → Upload from file in QBO. If you'd rather skip the CSV step altogether — start from a PDF and get a clean reconciled QBO directly — drop your statement into our bank statement converter. Free for 7 pages a day.
What columns does your CSV need?
The tool auto-detects columns from the header row. The minimum it needs:
- A date column — header containing words like
Date,Posted, orTransaction Date. AcceptsDD/MM/YYYY,DD-MM-YYYY,DD.MM.YYYY, or ISOYYYY-MM-DD. - Either an Amount column or separate Debit + Credit columns. Amount should be signed (negative = outflow). For Debit/Credit columns, the tool treats debits as outflows automatically — you don't need to flip signs.
- A description column (optional but recommended) — header containing words like
Description,Narration,Details,Memo, orParticulars. Goes into theNAMEfield of the QBO so it appears in QuickBooks' transaction list.
If the auto-detection misses, the tool falls back to positional: column 1 = date, column 2 = description, last numeric column = amount. That covers most exports from online banking portals.
What's actually inside a .qbo file?
Open the downloaded .qbo in a text editor and you'll see something like:
OFXHEADER:100 DATA:OFXSGML VERSION:102 … <STMTTRN> <TRNTYPE>DEBIT <DTPOSTED>20260415000000 <TRNAMT>-84.50 <FITID>SE2026041500000003 <NAME>SUPERVALU GROCERIES </STMTTRN> …
Each transaction gets a unique FITID (financial institution transaction ID). QuickBooks uses this to deduplicate. The tool generates IDs from a timestamp + sequence number, so re-importing the same CSV would create a fresh batch of IDs — fine for one-off imports, problematic if you're re-importing the same data twice. If you need stable IDs across re-imports, generate them upstream and put them in the CSV.
Common gotchas
- Header row missing. If your CSV opens with transactions and no header, add a row like
Date,Description,Amounton top. - Semicolon-separated CSV (common in Europe). The tool handles
,,;, andtabas delimiters automatically. - Numbers with currency symbols. €, £, $, ₹, ¥ are stripped silently. Mixed thousands separators (some rows comma, some period) are tolerated within reason.
- Multi-line transaction descriptions. If your CSV has actual newlines inside a quoted description field, that's supported. If it has fake line-breaks from a PDF export, the tool will misalign rows — clean those up first.
- Sign convention. Debits should be negative. If your CSV has them positive (e.g. an Amount column where every row is positive and a separate Type column says DEBIT/CREDIT), use the Debit/Credit column approach instead — rename your column header to
DebitorCreditand the tool flips signs correctly.
When to skip CSV altogether
If you're starting from a PDF — the way most accountants actually receive bank statements — going PDF → CSV → QBO is two steps of risk where you only need one. Our paid converter does PDF → QBO directly, including the reconciliation pass that catches extraction errors before they end up in your accounts. For occasional use, the free tier handles 7 pages a day. For a steady book of clients, paid plans start at €19/month with all formats included.
Want help deciding what plan fits your volume? Try our plan estimator.