How to Import a Bank Statement CSV into QuickBooks Online
QuickBooks Online can pull transactions in automatically from a connected bank feed, but that only works going forward from the day you connect it — and plenty of banks, older statements, and one-off imports still need a manual CSV upload. Here's the exact column format QuickBooks expects, the upload steps, and the errors that trip people up most.
Step 1: Get your statement into CSV in the first place
If your bank statement is a PDF — which is how most banks deliver statements — you need it as a CSV before QuickBooks will touch it. QuickBooks' manual upload only accepts CSV, OFX, QFX or QBO files, not PDFs. If you only have a PDF, convert it to CSV first: drop the PDF in, let the parser rebuild the transaction table, and export the CSV from there. It runs in your browser, so the statement isn't uploaded anywhere in that step either.
Step 2: Match QuickBooks' column format exactly
QuickBooks Online's manual bank-transaction upload accepts two column layouts. Pick whichever matches what you already have — don't try to combine them:
- 3-column format:
Date,Description,Amount— a single signed amount column, negative for money out. - 4-column format:
Date,Description,Credit,Debit— money in and money out in separate columns.
A few formatting rules that QuickBooks enforces strictly:
- Use one consistent date format for every row — QuickBooks recommends
DD/MM/YYYY, thoughMM/DD/YYYYalso works as long as it's consistent throughout the file. - Leave a cell blank rather than entering
0in the Credit, Debit or Amount column when there's no value — a literal zero can confuse the row-matching. - Strip the word "amount" and any currency symbols out of numeric cells — QuickBooks expects plain numbers.
- Remove stray numbers from the Description column (like a trailing reference number QuickBooks might misread as an amount).
- Keep the file under 1,000 transaction rows per upload — split larger exports into multiple files by date range.
If you converted your statement with StatementSheet, the exported CSV already uses a clean
Date, Description, Debit, Credit, Amount, Balance layout — delete the Balance column
(QuickBooks doesn't need it and will reject an unrecognized column name) and you're left with a
valid 4-column file.
Step 3: Upload it in QuickBooks Online
- Go to Transactions (or Bookkeeping → Transactions) → Bank transactions.
- If the account already has a tile, select it. If not, select Link account first to create the account record, then come back to this screen.
- Click the Link account dropdown and choose Upload from file instead of connecting live.
- Drag your CSV in, then tell QuickBooks which QuickBooks account (checking, savings, credit card) the file belongs to.
- On the mapping screen, match your CSV's columns to QuickBooks' Date/Description/Amount (or Credit/Debit) fields, then finish the import.
- The transactions land in the For Review tab, exactly like a live bank feed — categorize and accept them from there.
Common upload errors and what causes them
- "No transactions found in this file" — usually a header-row mismatch. Make sure the very first row is your column headers and there's no blank row or title row above it.
- Wrong sign on amounts — if every transaction imports as a deposit (or vice versa), your Amount column isn't using negative numbers for money out. Fix the sign in Excel before re-uploading.
- Duplicate transactions after a second upload — QuickBooks doesn't reliably de-duplicate CSV imports the way it does a live bank feed. Only upload date ranges you haven't already imported, and check the For Review tab before re-running an upload.
- Dates imported as text, not dates — if Excel auto-formatted your date column oddly when you edited the CSV, re-save it and confirm the date format is consistent across every row before uploading again.
After the import: set up bank rules so you don't repeat this
Once your transactions are sitting in the For Review tab, take a few minutes to create Bank rules (under the same Bank transactions screen) for recurring payees — rent, payroll, a recurring software subscription. A rule matches on the description text and automatically assigns the category, payee and account, so the next statement you import (via CSV or a live feed) categorizes itself instead of asking you to review every line again. This is also the point to double-check whether a transaction should be split across multiple categories — QuickBooks lets you split a single imported line by dollar amount before you accept it, which is useful for a combined purchase like a Costco run that mixes groceries and household supplies.
If you manage multiple bank accounts or several months of statements, import one account and one date range at a time rather than combining them into a single file — it keeps the mapping screen simpler and makes it much easier to spot exactly which upload introduced a problem if the balances don't match afterward.
Convert your statement first
Every major US, UK, Canadian and Australian bank statement can be turned into a clean CSV in seconds — parsed in your browser, never uploaded to a server, and reconciled against the running balance so you know the export is complete before it ever reaches QuickBooks.