QuickBooks Desktop accepts both, and they do not do the same thing. One goes through the banking feed and waits for you; the other writes straight into the register, with only a format check standing between the file and your books.
The fundamental difference
A .qbo file is a Web Connect download: OFX with Intuit’s bank ID in it. It enters through Bank Feeds, where QuickBooks matches incoming transactions against ones it already holds, recognises repeats by their transaction IDs, and lets you review and categorise before anything reaches the register.
An .iif file is Intuit Interchange Format: a tab-delimited text file that describes complete transactions, both sides of each, and writes them directly into the register. There is no feed, no matching against existing entries, and no step where you accept or exclude individual rows. What is in the file becomes what is in the books.
| QBO (Web Connect) | IIF | |
|---|---|---|
| Menu | File → Utilities → Import → Web Connect Files | File → Utilities → Import → IIF Files |
| Needs a bank ID | Yes, INTU.BID | No |
| Goes through Bank Feeds for review | Yes | No, straight to the register |
| Duplicate detection | Yes, by FITID | None |
| Who decides the category | You, in Bank Feeds | The file |
| Splits, classes, non-bank transactions | No | Yes |
| Undoing a bad import | Exclude or delete from the feed | Delete transaction by transaction, or restore a backup |
| QuickBooks Online | Accepted | Not accepted |
What that means for a mistake
A bad QBO import is excluded from the feed in a couple of clicks. A bad IIF import is already in the register, possibly categorised, possibly reconciled, and has to be deleted transaction by transaction or rolled back from a backup. Intuit’s own instructions say to back up the company file before importing an IIF, and that advice is not a formality.
Because what QuickBooks does with an IIF transaction that does not balance depends on the version and the import option chosen, a converter that writes both sides of every entry so the file balances is doing work you would otherwise have to check by hand.
What an IIF file looks like
IIF is a family of record types, each introduced by a header row that starts with an exclamation mark and names the columns for the rows that follow. For bank transactions three matter: TRNS carries the bank side, SPL carries the other side, and ENDTRNS closes the transaction. The amounts on the TRNS line and its SPL lines must sum to zero.
!TRNS TRNSID TRNSTYPE DATE ACCNT NAME AMOUNT MEMO CLEAR
!SPL SPLID TRNSTYPE DATE ACCNT NAME AMOUNT MEMO CLEAR
!ENDTRNS
TRNS CHECK 03/15/2026 Checking Shell -45.20 Fuel N
SPL CHECK 03/15/2026 Uncategorized Expense Shell 45.20 Fuel N
ENDTRNS| Column | What goes in it |
|---|---|
| TRNSTYPE | CHECK for money out, DEPOSIT for money in; CREDIT CARD for a card charge and CCARD REFUND for a card credit; GENERAL JOURNAL for journals |
| DATE | MM/DD/YYYY. IIF has no locale setting, so day-first dates are misread |
| ACCNT | Account name exactly as in the chart of accounts: the bank on TRNS, the other side on SPL |
| NAME | Payee, matched against the customer, vendor and other-name lists |
| AMOUNT | Signed. The SPL amounts are the negation of the TRNS amount |
| DOCNUM | Cheque or reference number |
| MEMO | Free description |
| CLEAR | Y or N. Leave it N |
| CLASS | Optional, where the company file uses classes |
Balance is the file’s job
Every IIF transaction is a small double entry, and the TRNS and SPL amounts have to net to exactly zero. What happens when they do not is less predictable than it should be. Integrators who generate IIF report QuickBooks refusing such transactions with a “transaction not in balance” message, rounding differences included. QuickBooks 2019 and later scan the file before importing and set failed transactions aside in a new IIF file marked with the errors, while the “Import it for me. I’ll fix it later” option skips that review, which Intuit itself does not recommend.
The awkward outcome is not a clean rejection, which you notice. It is a partial import: the good transactions go in, the bad ones are set aside or reported in a window that is easy to close, and the register is now out by whatever was left behind. So treat balancing as something the file must get right before QuickBooks sees it, and compare the register against the statement after every import. Tally, by comparison, is strict and simply refuses an unbalanced voucher.
Names decide where everything lands
IIF refers to accounts, payees and classes by name rather than by any internal ID. When a name in the file does not match one in the company file, QuickBooks generally adds it to the list rather than stopping. A bank account spelled slightly differently from yours becomes a second bank account, and every transaction posts there while your real account does not move.
Copy names from the Chart of Accounts exactly, including any account numbers prefixed to them, and check the Chart of Accounts after the first import for anything new.
No escaping, either
IIF is tab-delimited with no quoting or escape mechanism of any kind. A tab inside a description shifts every column after it by one, and the result is not a malformed file that fails to import; it is a well-formed file whose columns are wrong, which imports cleanly. Line breaks inside a value do the same to rows. Values have to be stripped rather than escaped, because there is nothing to escape with.
Editing an IIF in Excel brings its own hazards. Excel reformats dates to the computer’s locale and can save with the wrong delimiter or encoding. If you must edit one by hand, use a plain text editor, and if Excel is unavoidable, save as tab-delimited text and check the dates afterwards.
What IIF can express that QBO cannot
For all its hazards, IIF is the more expressive format. A QBO transaction is a bank movement and nothing more: QuickBooks decides where the other side goes when you categorise it in the feed. An IIF transaction states both sides itself.
- Splits across several accounts. One TRNS with several SPL lines posts a single payment across multiple expense accounts.
- The category, decided in the file rather than in the feed.
- Classes, where the company file uses them.
- Non-bank transaction types, such as bills, invoices and journal entries, which the banking feed has no concept of at all.
That expressiveness is exactly why it bypasses the feed. There is nothing for the feed to do: the file has already made every decision the review step exists to let you make. A converter that cannot know your chart of accounts should therefore not pretend to, and should post the other side to a holding account, such as Uncategorized Income or Uncategorized Expense, that you clear afterwards.
The CLEAR column, and why it should stay N
Both record types carry a CLEAR field marking a transaction as cleared. It is tempting to set it: the transactions came from a bank statement, so they have obviously cleared the bank.
Do not. Cleared in QuickBooks means reconciled within QuickBooks, by you, against a statement. Importing rows pre-marked as cleared removes them from the next reconciliation, which is the one control that would have caught a bad import in the first place. Leave it N and reconcile normally.
When a QBO stops being an option
Two situations push Desktop users to IIF even when they would rather use QBO. The first is a bank with no Intuit bank ID, for which no valid QBO can exist. The second is a QuickBooks Desktop version past its support date. Intuit retires online banking services for each Desktop release on a fixed schedule, roughly three years after release, and from that date Web Connect files stop importing even though the software itself keeps running.
IIF import is a local utility rather than an online banking service, which is why it is the usual route for those files. It is a workaround with the trade-offs above, not a like-for-like replacement, so the date-range check matters more, not less.
Which to use
- QBO, whenever your bank has an Intuit ID and your Desktop version is supported. The feed and its duplicate detection are worth the effort of finding the number once.
- IIF when the bank is not in Web Connect, when your Desktop version can no longer import Web Connect files, or when you genuinely need splits, classes or non-bank transactions.
- Never IIF for QuickBooks Online. It has no IIF import at all; use QBO, OFX or a three-column CSV there.
- 1Back up the company file and switch to single-user mode, as Intuit asks.
- 2Check the file’s date range against what is already in the register for that account.
- 3Import through File → Utilities → Import → IIF Files and take the review option rather than the bypass.
- 4Read the result window before closing it. If anything was set aside, fix it in the error file QuickBooks writes and import that, not the original.
- 5Reconcile the account against the statement before doing anything else with the period.