To import CSV bank transactions into QuickBooks Desktop, you have three routes, because Desktop has no CSV bank upload screen. Convert the CSV to a QBO file and use Web Connect, use Desktop's Excel import, or enter the rows as a batch. Only the QBO route keeps bank matching.
Why doesn't QuickBooks Desktop take a CSV bank file?
Desktop's bank import was designed around Web Connect (QBO) files, which carry a bank ID and a unique ID per transaction. QuickBooks Online has a CSV upload with column mapping. Desktop has no equivalent screen for bank lines, so a CSV needs a conversion or a different import tool.
The practical effect is simple. If you open Desktop's bank import and choose your CSV, it will not be accepted as a bank file. The same spreadsheet that uploads to Online in a minute needs extra work in Desktop. A QBO file also has what Online's mapping screen has to guess: which column is the date, which is the amount, and whether a negative number means money out.
Excel, CSV and the Intuit import tool
Excel and CSV files are still welcome in Desktop for general data. Intuit's guide to importing and exporting data in QuickBooks Desktop says to use MS Excel or CSV files for general data transfer of lists and transactions, and it warns that an import cannot be undone, so a backup comes first. The catch is that this is a general tool. It is not the bank feed, and it behaves differently, as the routes below show.
What to do before choosing a route
Look at the spreadsheet first. A clean file has one header row, one row per transaction, a date column, a description column and an amount column. If yours has subtotals, blank lines or merged cells, fix those before any route. Tidying the sheet is covered in cleaning the spreadsheet before an import.
Route one: convert the CSV to a Desktop-ready QBO file
The first route turns the CSV into a QBO file, then imports that file as if the bank had provided it. Because the result is a real Web Connect file, you get the Bank Feeds Center, matching against entries you already made, and duplicate protection. It is the closest thing to a normal bank download.
How the conversion works
A converter reads each row and writes it in the QBO layout. It sets a bank ID, an account type, a date range, and a unique ID for every row. Then you import the file with File > Utilities > Import > Web Connect Files, exactly as you would a file from a bank. The prompts are laid out in the Web Connect steps for Desktop.
What your CSV needs to carry
The converter needs three things from the sheet: a date, an amount and a description. Anything more, such as a check number, is a bonus. The amount should be one column with money out as a minus. If your bank gives separate withdrawal and deposit columns, merge them into one first. An example of the shape of the rows:
| Date | Description | Amount |
|---|---|---|
| 2026-03-03 | SQ *FLOUR SUPPLY CO | -412.80 |
| 2026-03-05 | CUSTOMER DEPOSIT 1187 | 2,500.00 |
| 2026-03-09 | CHECK 2041 | -3,200.00 |
The values above are examples only.
Testing a converter before you trust it
Convert one month, not twelve. Import it into a test copy of the company file, and compare the register to the bank's balance. Which checks to run on a converter is the subject of testing a CSV to QBO converter.
Where SimpleBankConvert fits
If your starting point is a PDF statement rather than a CSV, SimpleBankConvert is being built to produce the QBO file directly, so you do not need to make the spreadsheet first. It is in early access, so read the homepage before relying on it.
Route two: Desktop's Excel import for bank transactions
The second route uses the Excel import in the File > Utilities > Import menu. You prepare a worksheet, map it to QuickBooks fields, and Desktop creates transactions from the rows. It works without a converter, but it is the same tool used for lists, and it posts transactions straight to the register.
What the Excel import can bring in
The import wizard is a general data tool. It can bring in lists such as customers and vendors, and it can bring in some transaction types. Intuit's import page lists checks, deposits, credit card transactions and transfers of funds among the transaction types it takes. It does not say which editions get each one, so open the menu in your own copy and see what it offers before you plan around it. If the Excel option is absent, route one or route three remain.
How the rows become transactions
The wizard asks you to choose the type of data and to match your columns to its fields. For bank lines the usual target is a check or a deposit, so a payee, an account and an amount are required for each row. That is more fields than a bank file has. A bank line says "SQ *FLOUR SUPPLY CO" and an amount, and the wizard also wants the expense account. You must fill in a category column yourself.
The cost of this route
Rows imported this way become transactions at once. They do not wait in the Bank Feeds Center, and Desktop does not try to match them against a check you already entered. If you wrote check 2041 by hand and then import a row for the same check, you now have two. This is the main trade for skipping the converter.
Which CSV route keeps Desktop bank matching working?
Only route one, the QBO conversion, keeps bank matching. A converted file lands in the Bank Feeds Center, where Desktop compares each line to transactions already in the register. The Excel import and batch entry create transactions directly, so they cannot match and can only add.
The three routes side by side
The table compares what each route does. It describes the usual behavior, and your edition may differ.
| Route | Steps | Keeps bank matching? | Which editions offer it |
|---|---|---|---|
| Convert to QBO | Clean the CSV, convert it to QBO, import with Web Connect Files, review in Bank Feeds Center | Yes | Any Desktop version that still accepts Web Connect files |
| Excel import | Prepare a worksheet with payee, account and amount, map the columns in the import wizard | No, rows post directly | Depends on version and edition; check the Import menu |
| Batch entry | Paste or type rows into a batch entry screen, one transaction per row | No, rows post directly | Depends on version and edition; check your menus |
Which one to choose
Pick route one when the account already has history in QuickBooks, because matching protects you from doubles. Pick route two or three for an account with no history, such as a brand-new account, where there is nothing to match and the extra work is smaller. For a short list of one-off lines, typing them in the register by hand is also fine.
An example
Suppose you have 40 March lines in a CSV, and 12 of them are checks you already entered. With route one, those 12 show up as matched items and you accept them in a few clicks. With route two, all 40 become new transactions, and you delete the 12 duplicates afterwards. The same spreadsheet gives two different amounts of cleanup.
Credit cards follow the same logic
A credit card has its own account type and its own sign rules, but the three routes work the same way. If the file is for a card, set up the card account first, as described in downloading credit card transactions into QuickBooks Desktop.
Desktop CSV imports that post straight to the register unchecked
Routes two and three skip the review step. Rows go into the register as finished transactions, with no pause for you to look at them. A wrong sign, a wrong date format or a wrong account then ends up in your books, and the only fix is to find the rows and correct or delete them one by one.
What can go wrong
- Dates read the wrong way. A date such as 03/04/2026 can be March 4 or April 3. Check how a sample row was read before the full import, because a mismatch moves a whole month of entries.
- Signs flipped. If a deposit column is imported as a payment, every figure is wrong in the same direction. The register balance is off by twice the total.
- Missing category. Rows without an expense account may land in an uncategorized account, which hides real costs until a report shows them.
- Doubles. Lines already entered by hand are added again, since nothing is matched.
Limit the damage
Take a backup before you import. Import a small sample first, perhaps five rows, and inspect the register. Only then bring in the rest. If you must undo a bad import, restoring the backup is faster than deleting rows.
Check the result against the bank
After any direct import, compare the register's ending balance to the bank balance for the same date. A match tells you the amounts and signs are right. It does not prove the categories are right, so scan the accounts the rows landed in.
When a journal entry is the wrong answer
Posting a whole month as one journal entry hides each line inside a single entry and leaves nothing to reconcile against. Journal entry imports that bypass the bank register explains what that skips.