SYS / VelvetCSV v0.4 · field notes
A Gobvantage Technologies tool OPS / Runs in your browser support@gobvantage.com
GUIDE · QUICKBOOKS · 8 MIN READ

How to import a bank CSV into QuickBooks Online: the complete 2026 guide.

Published May 22, 2026 By the VelvetCSV team QuickBooks Online

The QuickBooks Online CSV importer is one of those features that looks simple — drop a file in, watch it ingest transactions — but it has eight unwritten rules that decide whether your import takes 30 seconds or 30 minutes. Here's the full spec, plus the per-bank quirks for Chase, Bank of America, Wells Fargo, Citi, and Capital One.

What QuickBooks Online actually wants

Despite the four-column option in the UI, the format QBO imports most reliably is the three-column CSV: Date, Description, Amount. That's it. No header row is required (though it's allowed); no transaction type column; no balance column; no memos. Anything extra just creates a rejection or — worse — a silent misimport you'll find six weeks later during reconciliation.

The amount column expects a single signed number. Money in is positive (250.00), money out is negative (-32.18). Two-column debit/credit exports — the kind every major bank produces — are not what QBO wants. You have to merge them yourself, and you have to get the sign right.

The eight formatting rules that decide whether it works

  1. Column order is exact. Date first, Description second, Amount third. Reorder them and the import either fails or maps the wrong field to "Amount." Either is bad.
  2. Dates must be unambiguous. ISO 8601 (2025-10-03) is the only format that never gets misinterpreted. QBO accepts MM/DD/YYYY but will silently parse 10/03/25 as October 3 in the US locale and March 10 in most other locales. If your books are EU-flavored, you've just shifted every transaction by a calendar.
  3. Amounts must be plain decimals. No currency symbols, no thousand separators, no parenthesized negatives. (1,250.00) is a string to a CSV parser. -1250.00 is a number. Only the second one imports cleanly.
  4. One signed amount column, not two. If your bank gives you separate Debit and Credit columns, you have to merge them: subtract debit from credit, end up with one signed number per row.
  5. UTF-8, no BOM. QuickBooks chokes on byte-order marks (the invisible  at the start of a file that Excel happily writes when you "Save As CSV"). You can't see it, but QBO sees it and rejects the file with "invalid format."
  6. No smart quotes. Curly quotes (", ") in descriptions break CSV parsing because they look like quotes but aren't escape characters. Straight quotes only.
  7. Trim the description noise. Bank exports embed terminal IDs, POS prefixes, and merchant codes (POS PURCHASE 0823 SQ *COFFEE BAR ATL GA). QBO accepts these but you'll hate yourself at reconciliation. Strip them.
  8. File size ceiling: 350 transactions per CSV. QBO's UI accepts more, but the import quietly truncates or fails past a few hundred rows. Split big years into quarterly files.

The 30-second version

If you're staring at a bank export and you don't want to read this whole post — drop the file into VelvetCSV. It auto-detects your bank, normalizes all eight things above, and hands back a QBO-ready file. Free for three conversions a month, no account required.

Step-by-step: importing into QuickBooks Online

Once you have a clean three-column CSV in front of you, the QBO side is fast.

  1. From the QBO home screen, click Transactions → Bank transactions in the left navigation.
  2. Pick the account you're importing into. If it's not there, click Link account first or Upload from file if you don't want to connect feeds.
  3. Click the dropdown next to Link account and choose Upload from file.
  4. Drag the CSV in. QBO previews the first few rows.
  5. Pick the correct QuickBooks account (checking, credit card, etc.) — this is where most people accidentally import a credit card statement into checking.
  6. Map the three columns: Date, Description, Amount. If your CSV is in that exact order with no header row, QBO usually maps them automatically.
  7. Click Next, confirm the row count, click Import.

The transactions land in the "For review" tab. They're not posted to your books yet — you still have to categorize them and click Add or Match on each one. That's the QBO bank feed workflow, and CSV imports drop into the same queue.

Per-bank quirks (and what they break)

Chase

Chase exports include a "Type" column (SALE, RETURN, PAYMENT) that's not part of the three-column spec. Strip it. Posting Date is the date you want — not Transaction Date. Descriptions are clean-ish, but credit-card exports prefix recurring charges with RECUR, which clutters reconciliation.

Bank of America

BofA has the worst date format situation: checking exports use MM/DD/YYYY, credit card exports sometimes use YYYY-MM-DD, and the iOS app exports MMM DD, YYYY ("Oct 3, 2025"). All three need normalizing to one format before QBO touches the file. The "Running Bal." column is irrelevant — drop it.

Wells Fargo

Wells Fargo exports have no header row. The columns are positional: date, amount (signed, but with a leading apostrophe to defeat Excel), an asterisk asterisk asterisk star-rating column nobody uses, an empty column, and description. You'll need to add headers and remove the apostrophes before QBO can read it.

Citi

Citi exports use separate Debit and Credit columns (the worst kind). Merge them: amount = credit − debit. Their description column is mercifully clean, but they include the transaction status in a separate column you can ignore.

Capital One

Capital One is the cleanest of the big five — three columns, signed amounts, ISO-ish dates. The only issue is description prefixes like PURCHASE AUTHORIZED ON 10/03 that duplicate the date inside the description. Strip them.

Common pitfalls — and how to spot them

  • "Invalid file format" error: 90% of the time, this is a BOM or smart quotes. Open the file in a real text editor (VS Code, Sublime), check the encoding indicator in the bottom-right, and re-save as UTF-8 without BOM.
  • All amounts import as positive: You forgot to merge debit/credit columns. The single Amount column needs negatives for spend.
  • Dates are off by a month: US-vs-EU date parsing. Use ISO 8601 (YYYY-MM-DD) to make it unambiguous.
  • Half the file is missing: You're past 350 rows. Split it.
  • Descriptions look fine in Excel but garbled in QBO: Excel re-encoded the file to Latin-1 when you saved it. Open in a text editor and save as UTF-8.

Skip the cleanup entirely.

VelvetCSV does all of this — auto-detect, date normalization, signed amounts, encoding fix, description cleanup — in three seconds. The file never leaves your browser, no upload, no account. Free for 3 conversions/month, $3/month unlimited, or $49 lifetime (limited time).

Convert my CSV

FAQ

Does QuickBooks Online accept Excel files?

Yes — .xlsx and .xls. But the same formatting rules apply, and Excel makes encoding mistakes worse. If your source is Excel, "Save As → CSV UTF-8" before importing.

What's the difference between CSV import and a bank feed?

Bank feeds are automatic — QBO connects to your bank and pulls transactions daily. CSV import is for everything else: closed accounts, banks not in the feed network, manual exports for cleanup periods, and the gap month between feed disconnections.

Can I import historical years?

Yes, but split files by quarter or month. Each CSV import is capped around 350 rows in practice. A full year of business checking is usually 600–1,200 transactions.

Why does my reconciliation show duplicates?

Because the bank feed and your CSV imported the same transactions twice. Always check the date range — if a feed is connected, only import dates the feed doesn't cover.

QuickBooks CSV import Chase BofA Wells Fargo Bookkeeping