CSV to IIF: Import Transactions to QuickBooks Desktop
February 28, 2026
Most IIF imports fail for a boring reason: an account name in the file doesn't exist in the company file. QuickBooks Desktop doesn't stop and ask — it invents a new account, throws a vague "error when saving", or imports half the batch and abandons the rest. The conversion takes thirty seconds; the preparation around it is where the work is.
Get the CSV into shape first
A bank CSV is nearly always usable as-is, but three things are worth fixing before conversion rather than after:
| Problem in the CSV | Why it matters | Fix before converting |
|---|---|---|
| Split Debit and Credit columns | IIF needs one signed amount per transaction | Combine into a single column, expenses negative |
| Currency symbols and thousands separators | $1,250.00 may parse as 1.00 | Strip $ and , with Find & Replace |
Dates as DD/MM/YYYY | Reads as an American date and silently lands in the wrong month | Reformat to MM/DD/YYYY |
Also trim the date range. Re-importing a period you've already done is the most common cause of duplicated registers, because IIF carries no unique transaction ID for QuickBooks to match against. Once the file is clean, run it through the CSV to IIF converter and map Date, Description, and Amount.
Why account names have to match exactly
An IIF transaction references accounts by name, not by ID. There is no lookup table, no fuzzy matching, and no confirmation dialog. If the file says Checking and your chart of accounts calls it Business Checking - 4471, QuickBooks doesn't map them — depending on version and preferences it either errors or quietly creates a brand-new account called Checking sitting next to your real one.
So before importing, open Lists > Chart of Accounts and copy the account names character for character. Watch for:
- Trailing spaces (invisible, and they do count)
- Colons, which denote subaccounts:
Expenses:Office Suppliesis a different account fromOffice Supplies - Case — treat matching as case-sensitive even where a version tolerates it
The converter defaults to Checking for the bank side and Income / Expense for the offsetting side. If those aren't your real account names, either set the account name in the converter or open the downloaded .iif in a text editor and do a find-and-replace before importing. It's plain tab-delimited text, so this is safe and quick.
The double-entry structure IIF requires
Every IIF transaction is a block, not a line. A TRNS row opens it, one or more SPL rows carry the offsetting side, and ENDTRNS closes it. The amounts inside a block must sum to zero:
!TRNS TRNSID TRNSTYPE DATE ACCNT AMOUNT MEMO
!SPL SPLID TRNSTYPE DATE ACCNT AMOUNT MEMO
!ENDTRNS
TRNS 1 CHECK 01/15/2026 Checking -250.00 Office supplies
SPL 1 CHECK 01/15/2026 Expense 250.00 Office supplies
ENDTRNS
TRNS 2 DEPOSIT 01/17/2026 Checking 1400.00 Client payment
SPL 2 DEPOSIT 01/17/2026 Income -1400.00 Client payment
ENDTRNSThe lines beginning with ! are header definitions — they name the columns for every following row of that record type, and must appear before any data rows. Fields are separated by real tab characters, not spaces: edit an IIF in an editor that converts tabs to spaces and the import fails on every row.
Sign convention: money leaving the bank account is negative on the TRNS line, and the matching SPL line carries the same figure with the opposite sign. Deposits are the reverse. Get this backwards and everything imports cleanly but your P&L is inside out — see the amount-reversal fix in Fix QuickBooks Import Errors.
Back up the company file before you import
IIF imports are not undoable. There is no "reverse last import" command, and if the file creates 400 transactions against the wrong account, your only clean recovery is a restore. Go to File > Back Up Company > Create Local Backup, choose Local backup, pick a folder outside your working directory, and let it finish before you import anything.
Then test small: copy the first five rows of your CSV into a separate file, convert that, and import it. Five bad transactions are a two-minute cleanup; four hundred are an afternoon.
Running the import
Close any open windows in QuickBooks, switch to single-user mode, then go to File > Utilities > Import > IIF Files and select your .iif file. Depending on your version, QuickBooks either imports directly or shows a review screen listing what will be created and what it couldn't read. Read that screen rather than clicking through it — it's the only place errors are itemised.
Verifying the import actually landed
Don't trust the success message. Check three things:
- The register. Open the bank account from the chart of accounts and confirm the transaction count and ending balance against your bank statement.
- New accounts. Reopen Lists > Chart of Accounts. Any account you didn't create yourself is a name mismatch that succeeded in the worst way.
- The offsetting side. Run a Profit & Loss for the period. A pile of activity in a generic
Expenseaccount means the transactions landed but were never categorised.
When the import half-succeeds
| What you see | What went wrong | Fix |
|---|---|---|
| Some transactions imported, some didn't | A malformed row aborted mid-file | Open the IIF, look for rows with a different field count than the !TRNS header |
| A duplicate-looking account appeared | Account name didn't match the chart of accounts | Delete or merge the new account, correct the name in the IIF, restore and re-import |
| "There was an error when saving" | Almost always an unknown account or list name | Verify every ACCNT value against the chart of accounts |
| "Unexpected end of file" | A TRNS block with no closing ENDTRNS | Check the last block in the file; truncation usually happens at the end |
| Amounts are correct but reversed | The CSV uses positive numbers for expenses | Invert the sign in the CSV, reconvert |
To review the file before committing it, run it through the IIF to CSV converter — 400 tab-delimited rows are far easier to read in Excel than in Notepad.
Which format you actually need
IIF is QuickBooks Desktop only — Pro, Premier, and Enterprise. QuickBooks Online doesn't accept it at all; that platform wants QBO files, which you can build with the CSV to QBO converter. If the destination is Quicken, the format is QIF: use CSV to QIF instead.
Ready to convert your files?
Free, unlimited, no signup. Your data never leaves your browser.
Related articles
How to Convert CSV to QBO for QuickBooks Online (Free, Any Bank)
Step-by-step guide to converting any bank CSV export into a QBO file for QuickBooks Online — with ba…
How to Import Bank Statement CSV into QuickBooks (Free)
Your bank gives you CSV. QuickBooks wants QBO. Here's the fastest way to convert any bank statement …