Where the upload lives
- Download the CSV from your bank's website.
- In QuickBooks Online, go to Transactions › Bank transactions.
- Open the dropdown arrow next to Link account and choose Upload from file.
- Pick the file, then pick which account in your chart of accounts these transactions belong to.
- Map the columns — Online shows you its guess and lets you correct it. Check the date format here; this is the step where a whole statement quietly lands a month out.
- Accept the import, then review the transactions in the For review tab.
Menu wording moves around between QuickBooks Online versions. If the path above doesn't match what you see, look for the words Upload from file or Import transactions somewhere on the banking screen — that's the feature.
The two layouts Online accepts
This is the part that decides whether your upload works. Online wants either three columns or four, in a specific order, with a header row:
| Layout | Columns | How direction is expressed |
|---|---|---|
| Three column | Date, Description, Amount |
One amount column. Money leaving the account is negative |
| Four column | Date, Description, Credit, Debit |
Every figure positive. The column it's in decides the direction |
Most banks don't export either of these. A Chase checking CSV has seven columns; Wells Fargo exports five with no header row at all. Rearranging the spreadsheet by hand is the normal amount of work here — delete the columns Online doesn't want, put the rest in order, and make sure the header row matches.
The sign is the part that bites
In the three-column layout, a debit has to be negative. Credit card statements usually do the opposite — they list purchases as positive numbers, because from the card's point of view a purchase increases what you owe. Upload one of those unchanged and every transaction goes in backwards, which reconciles to a number that looks almost right and isn't.
Check one line before you accept the import: find a purchase you remember, and confirm it's showing as money out.
Things Online will refuse
- Extra columns. Balance, transaction type, check number, category — all have to go.
- Rows above the header. Bank exports often start with an account name and a date range. Delete those rows.
- Summary rows at the bottom. "Total", "Closing balance" and blank separator rows all count as data.
- Amounts that aren't plain numbers.
$1,234.56and(45.20)are formatting, not figures. - Mixed date formats in one column.
- A file that isn't really a CSV — an
.xlsrenamed to.csvis still an.xls. - Too much at once. Online caps a manual upload at 350 KB and 1,000 transactions. A busy year clears both — split it by month or quarter.
Each of those has its own symptom and its own fix — see why won't my CSV file upload to QuickBooks?
So when would you ever need a converter?
Three situations, and only three:
-
You're on QuickBooks Desktop. Desktop has no CSV import at all — not a
picky one, none. A
.qbofile is the way in, which is what this converter makes. -
Online keeps rejecting the file and you'd rather not rearrange columns by
hand every month. A converted
.qbosidesteps the layout rules entirely. -
You want the duplicate protection. A
.qbocarries a unique ID per transaction, so re-importing an overlapping date range gets matched and skipped. A CSV upload has no such ID — overlap it and you get everything twice.
That last one matters more than it sounds if your credit card statement period doesn't line up with the calendar month. Pulling 1–31 and then 10–9 of the next month means the overlap is built into how you work, not an accident.
One report worth knowing about
Conventional advice is that a .qbo is the "proper" file and a CSV is the fallback.
On Online we've seen it go the other way: someone whose bank feed was posting transactions into
the wrong account tried a .qbo first, it failed, and the plain CSV
loaded first time.
That's one report, not a rule — but it's enough that we'd tell you to try the CSV on Online before converting anything. It costs you nothing and it might be the whole answer. On Desktop, don't bother: the option isn't there.
Frequently asked questions
Does QuickBooks Desktop accept CSV files too?
No — and this is the single biggest source of confusion in this whole area. Advice written
for Online reads as though it applies to Desktop, and it doesn't. Desktop imports bank
transactions through Web Connect, and Web Connect means a .qbo file
specifically — not .qfx (that's Quicken's) and not a plain
.ofx. It can also import .iif files, by a separate route that
bypasses the bank feed. There is no CSV option anywhere in the menu.
How far back can I upload?
As far back as your bank lets you export. That's the real advantage of file upload over a bank feed connection — feeds typically only reach back around 90 days, while the CSV download on your bank's website usually goes back years. It's the normal way to catch up on a set of books that's months behind.
My bank only offers Excel, not CSV. Now what?
Open it in Excel and use File › Save As to pick CSV — but check the date
column afterwards, because that's where Excel rewrites dates into whatever your regional
settings say. Or skip the step: Excel to QBO reads
.xlsx directly.
Will uploading a CSV overwrite what's already in QuickBooks?
No. Uploaded transactions land in the For review queue, where you accept them one at a
time or in a batch — nothing is recorded until you do. That's true of CSV and
.qbo alike on Online. (.iif on Desktop is the exception that
skips the queue entirely — see CSV to IIF.)
Is my bank data uploaded anywhere if I use your converter?
No. Every converter here runs in your browser, and each page ships a Content Security Policy
with connect-src 'none' — the browser itself refuses to let the page make a
network request. You can watch the Network tab in developer tools while you convert; it
stays empty.
Related
- Why won't my CSV file upload to QuickBooks? eight causes, in order
- My imported amounts are 1000× too small European number formats
- Which file does your QuickBooks take? Desktop vs Online, all formats
- CSV to QBO converter for Desktop, and for when Online says no