What Is an IIF File?
An IIF file is QuickBooks Desktop's own interchange format: tab-delimited text built from typed blocks, where each block declares its own columns and every transaction is written twice.
Published 9 August 2026 · 6 min read
The short answer
An .iif file is an Intuit Interchange Format file: plain tab-delimited text that QuickBooks Desktop reads and writes. It can carry transactions, but it can equally carry a chart of accounts, a customer list, a vendor list or an item list. That is the first thing worth checking about any file you are handed.
It is not a bank statement format and it is not related to .qbo, despite both coming from Intuit. A .qbo describes what a bank says happened. An .iif describes bookkeeping entries, so it has to say which account every side of every transaction touches.
What an IIF file looks like inside
Tab-delimited, and built from blocks. A line beginning with ! declares the columns for a record type, and the matching un-prefixed lines beneath are its rows:
!HDR PROD VER HDR QuickBooks Version 24 !ACCNT NAME ACCNTTYPE ACCNT Checking BANK !TRNS TRNSTYPE DATE ACCNT AMOUNT MEMO !SPL TRNSTYPE DATE ACCNT AMOUNT MEMO !ENDTRNS TRNS CHECK 01/05/2026 Checking -24.50 Coffee SPL CHECK 01/05/2026 Meals 24.50 Coffee ENDTRNS
That is one transaction, and it takes three lines to say it: the bank side, the category side, and a terminator. The !HDR and !ACCNT blocks above it are context, not activity.
| Block | What it holds |
|---|---|
| !HDR | Which product and version wrote the file |
| !ACCNT | The chart of accounts |
| !TRNS | The primary side of each transaction |
| !SPL | The offsetting side, one per category |
| !ENDTRNS | A terminator closing each transaction |
| !CUST / !VEND / !EMP | Customer, vendor and employee lists |
| !INVITEM | The item list |
| !CLASS | Classes, for departmental tracking |
| !TIMEACT | Timesheet activity |
The bang headers, and why column order is never assumed
The ! line is the load-bearing part of the format. QuickBooks emits a different column set depending on its version and on what was exported, and the optional columns turn up before MEMO as often as after it. There is no canonical order.
So the columns have to be resolved by name from the !TRNS line, every time, rather than by counting positions. Anything that assumes a fixed layout will read one file correctly and put the memo where the amount should be in the next one. No error is raised, because every field is just text until something interprets it.
A file can also hold several record types interleaved, each with its own ! header. That is why no single grid of column headings describes the whole file, and why a spreadsheet cannot open one usefully.
Why every transaction appears twice
IIF describes double-entry bookkeeping, so a payment is written once against the bank account as a TRNS line and again, negated, against whatever it was categorised to as an SPL line. The pair sums to exactly zero. That is the point of the format, and it is also its trap.
Add up every amount in the file and you get nothing at all. Read only the SPL lines and every figure has the wrong sign. The bank-side TRNS lines are the ones that correspond to what a statement would show, and a transaction split across several categories has one TRNS line and several SPL lines beneath it.
This is the exact opposite of the trap in a QIF file. There the split lines are components of a total the entry has already declared, so reading them doubles the transaction rather than cancelling it. Two formats, two rules, and swapping them breaks both.
IIF is not only transactions
This is the part that surprises people holding a file someone sent them. IIF is the general-purpose way of moving structured data between QuickBooks Desktop company files, and plenty of the files in circulation contain no transactions whatsoever.
- A chart of accounts export, to set up a new company file to match an old one.
- A customer or vendor list, for moving contacts between files.
- An item list, for products and services.
- Timesheet activity, exported for payroll.
None of those convert into a bank statement, because there is nothing in them to convert. Opening the file in a text editor and looking for a !TRNS line is the quickest way to know which kind you have before spending any time on it.
Read an .iif into a spreadsheet with the balancing splits dropped, so the transactions come out once rather than netting to zero. Nothing is uploaded.
Desktop, not Online
IIF is a QuickBooks Desktop format. QuickBooks Online has never read it, and there is no setting, add-on or workaround inside the product that changes this. It is a surprise to almost everybody who arrives holding one after a migration.
What to do about that depends entirely on what your file contains. It is a longer answer than belongs on this page, so how to import an IIF file into QuickBooks Online works through each case.
Why a spreadsheet makes a mess of it
Tab-delimited text looks like something a spreadsheet should open, and technically it does open. What comes back is unusable, for a specific reason: a spreadsheet applies the first heading row it finds to every row below it, and an IIF has several heading rows describing different record types.
So the ACCNT rows land under the !TRNS headings, the SPL rows land under whatever came before them, and columns that exist in one block and not another slide sideways. Nothing is flagged, because every cell is valid text. It is simply describing the wrong thing.
What an IIF cannot tell you
There is no balance anywhere in an IIF. It is a list of entries, not a statement, so nothing in the file asserts what the account stood at before or after them. Nothing in it can confirm the file is complete. That has to be checked against the statement it came from.
There is also no unique identifier per transaction, in the way an OFX document carries a FITID. Reading the same IIF twice gives a program no way to recognise that it has seen those entries before, which is why duplicate entries are the usual outcome of doing so.
And it carries no institution, no account number and no statement period. Everything an IIF knows about a transaction is the date, the amount, the accounts on either side, and whatever text was put in the name and memo fields.
Frequently asked questions
Can I open an IIF file in Excel? You can open it, but what you get is not usable. The file interleaves several record types, each declaring its own columns in a line beginning with !, and a spreadsheet applies one heading row to everything beneath it. The result puts fields under the wrong labels without reporting anything wrong.
Why does my IIF have twice as many rows as transactions? Because it is double-entry. Each transaction is a TRNS line against the bank account plus one or more SPL lines against the categories it was assigned to, carrying the same amounts with the sign flipped, closed by ENDTRNS. The pair always sums to zero.
Is an IIF file the same as a QBO file? No, and they describe different things despite both coming from Intuit. A `.qbo` is a bank statement: transactions, a period and a closing balance. An .iif is bookkeeping, so it names the accounts on both sides of every entry and states no balance at all.
Does an IIF file contain my account number? No. It refers to accounts by the names they carry inside the company file, such as Checking, Meals or Uncategorized Expense, not by any bank account or routing number. There is no field in the format for one.
How do I tell what is inside an IIF before I use it? Open it in any text editor and look at the lines beginning with !. A file with a !TRNS block holds transactions. One with only !ACCNT, !CUST, !VEND or !INVITEM holds a list, which is a perfectly valid IIF containing nothing to convert.