The 30-second version
QuickBooks rejects bank-statement imports for five identifiable reasons — wrong format, locale mismatch, missing or duplicate header, broken date column, and zero-amount rows. Each has a deterministic fix. The single biggest cause of silent corruption isn't a rejected file though — it's a file that imports successfully but with wrong numbers, which only a reconciled converter will catch.
QuickBooks will happily reject a perfectly reasonable bank statement and then accept a broken one. The second case is the one that costs you. If you've ever stared at "Invalid file" or watched your transactions import as 200 rows of $0.00, this is the post that explains why, and what to do about each variant. We'll cover all five common failure modes, then talk about the sixth one nobody warns you about: silent import success with corrupt numbers.
Failure mode 1: "Invalid file" — the format mismatch
QuickBooks Online accepts three import formats for bank transactions: .csv, .qbo (Web Connect / OFX), and .qfx. QuickBooks Desktop adds .iifon top. Upload a PDF directly, or an Excel workbook with multiple sheets, and you get a generic "Invalid file" error. The actual problem is usually one of these:
- You uploaded a password-protected file. QBO doesn't prompt for a password; it just rejects. Decrypt or re-export from your bank without the password (or use a converter that handles encrypted PDFs natively — see unlocking password-protected bank statements).
- The file is technically CSV but with the wrong delimiter — semicolons in many European locales, tabs from spreadsheet exports. Re-save as
UTF-8 CSV with comma delimiterfrom Excel or Numbers. - The QBO file claims an account it can't find on your books. QBO uses the
<ACCTID>XML element inside the .qbo to match. If you renamed or merged accounts, the .qbo points at a stale ID. Edit<ACCTID>to match your new account, or re-export with current credentials.
Fast diagnostic: open the file in TextEdit
Opaque format errors get easier to debug if you peek inside. .qbo and .qfx are plain text with an OFX header (OFXHEADER:100). .csv is, well, CSV. If the file is binary garbage when you open it, your bank gave you a PDF with a .csvextension — more common than you'd think with online-banking export buttons.
Failure mode 2: "No transactions found" — the locale trap
This one strands accountants in Ireland, the UK, Germany, France, Spain, Italy, the Netherlands, and anywhere else that uses the European number format. QBO assumes 1,234.56 by default; many non-US banks emit 1.234,56. Importing that file looks fine at the file-validation stage but produces a statement of zero transactions, because every amount parses as not a number.
Signs of a locale collision:
- QBO shows "0 transactions ready to review" after import.
- Or it imports them but every amount is exactly
0.00. - Or the amounts are there but off by a factor of 100 (1.234,56 read as 1.23456).
- Or January transactions land in October because
03/04was parsed MM/DD (3 April → 4 March).
Fix: rebuild the CSV with 1234.56 formatted amounts (no thousands separator, period decimal) before uploading. Or use a converter that emits a locale-correct .qbo file directly — the .qboformat doesn't care about display locale because amounts go in as raw numbers.
Don't trust Excel to "just save as CSV"
Excel respects your system locale on save. An accountant in Germany who opens a UK CSV, edits two cells, and re-saves can silently rewrite every amount to 1.234,56style — and the next QBO import returns "no transactions" on what was previously a working file. Audit a freshly-saved Excel CSV in a text editor before importing.
Failure mode 3: missing or duplicate header row
QuickBooks expects a single header row. If your bank's CSV starts with two rows of branding ("Account Statement", "Period: 01/04 - 30/04") before the actual column titles, QBO either errors at row 1 or treats those rows as transactions and burns the Description / Amount / Date cells as failed parses.
The expected QBO CSV minimum is three columns: Date, Description, Amount. Some templates add a fourth Memo column. Anything before that header is junk to QBO. If your bank insists on dropping a header preamble, strip it manually or pick a converter that emits a clean three-column CSV.
Failure mode 4: the date column QBO can't parse
QBO is picky. It accepts MM/DD/YYYY, DD/MM/YYYY, and YYYY-MM-DD, but you have to tell it which one — and it gets the prompt wrong constantly on European statements. A row dated 03/04/2026imports as 3 April in one parse and 4 March in another, both with no warning that the swap happened.
Three telltale signs the date column went sideways:
- Transactions appear in the wrong month after import.
- QBO complains about "invalid date" only on the days where DD > 12 (because those are unambiguously DD/MM; everything ≤12 silently misparses).
- Bank-reconciliation in QBO doesn't match the bank's own statement even though every amount looks right.
Fix: convert to ISO format (2026-04-03) before upload. ISO is unambiguous; QBO recognises it without prompting. A reconciled-output converter exports ISO dates by default precisely because of this trap.
Failure mode 5: zero-amount rows after import
Symptom: the file imports cleanly, the transaction count is right, the descriptions look right — but every amount is $0.00. Almost always caused by one of:
- Money-In / Money-Out columns (UK, Irish, Australian, New Zealand bank convention) where QBO expected a single signed Amount column. QBO reads the right-hand Money In column only — the Money Out column never gets merged, so debits become zero.
- Debit/Credit suffix notation (German Soll/Haben, Indian Dr/Cr, Brazilian Débito/Crédito, Mexican Cargo/Abono). QBO ignores the suffix and parses the amount as the bare number, losing the sign.
- Parentheses for negatives (US accounting convention).
(1,234.56)may parse as zero unless the CSV header explicitly tells QBO to treat parens as negatives.
The most expensive QuickBooks import error is the one that doesn't throw an error — it just silently halves your revenue or doubles your spend.
Failure mode 6: the silent one — wrong numbers, no error
Every failure mode above is loud: you get an error message or zero transactions and you know something's wrong. The genuinely dangerous one is the import that succeeds and produces wrong numbers. A single misread digit on a 200-row statement — a 7 read as 1, or a missing minus sign on one debit — and QuickBooks happily imports it. Your books look reasonable. Your management accounts go out. Three months later your auditor finds the discrepancy.
This is the case for using a converter that auto-reconciles: the opening balance plus the sum of every transaction must equal the closing balance, within rounding. If it doesn't, the converter flags the row that broke the chain instead of silently shipping a wrong file. QuickBooks has no way to do this itself because it doesn't see the bank's opening or closing balance — it sees only the transaction list.
The mapping table — error message → real cause → fix
Save this when QBO surprises you on a Friday afternoon:
| QBO says | Actual cause | Fix |
|---|---|---|
| Invalid file | Password-protected, wrong delimiter, or PDF | Decrypt, fix encoding, or convert from PDF first |
| No transactions found | Locale mismatch on amounts | Re-emit with 1234.56 format |
| Date format not recognised | Ambiguous DD/MM vs MM/DD | Convert dates to YYYY-MM-DD |
| 0 amounts on every row | Money In/Out columns or Dr/Cr suffix | Merge into a single signed Amount |
| Duplicates on re-import | CSV doesn't carry FITIDs | Use .qbo with stable per-row FITIDs |
| No error — books don't balance | Misread digit or missing row | Use a reconciled converter; verify opening + Σ = closing |
The shortest path to a clean QBO import
- Convert the PDF on StatementEdge.
- Check the reconcile badge is green or amber (with a small flag count you can review).
- Download as QuickBooks (.qbo).
- In QBO: Banking → Upload from file → File upload. Pick the
.qbo. Done.
That bypasses the column mapper, the locale parser, the date guesser, the Money-In/Out trap, and the silent-zero failure mode in one go. Still stuck after that? Send us a messagewith the job ID and we'll dig into the specific file with you.
Further reading
- What "auto-reconciled" actually means — why the silent-corruption case is the one that matters.
- AIB, Lloyds, Barclays → Xero: the 2026 workflow — every locale trap above hits Xero too; same fixes apply.
- How to choose a bank statement converter — full evaluation checklist.
- REST API + MCP server — automate the conversion + import step entirely if you're running it weekly.