Someone handed you a file called transactions.iif and asked you to "just import it into
QuickBooks" — or maybe you exported one yourself and now need to see what's actually in it. IIF
looks like a spreadsheet gone wrong when you open it in a text editor: tab-separated columns,
but with header rows that start with ! scattered throughout and repeated blocks that don't
obviously line up. This article explains what an IIF file is and how to read one.
What an IIF file is
IIF stands for Intuit Interchange Format — a tab-delimited text format specific to
QuickBooks Desktop (not QuickBooks Online, which doesn't use it). It's how Desktop imports
and exports both list data (a chart of accounts, customers, vendors, items) and transaction data
(checks, deposits, invoices, journal entries) without going through its proprietary .qbw
database file directly.
The structure is simple once you see the pattern: a line starting with ! is a header that
declares the column names for the rows that follow, and a line starting with the bare type name
is a data row using those columns. Here's a minimal transaction:
!TRNS TRNSID TRNSTYPE DATE ACCNT NAME CLASS AMOUNT DOCNUM MEMO
!SPL SPLID TRNSTYPE DATE ACCNT NAME CLASS AMOUNT DOCNUM MEMO
!ENDTRNS
TRNS 1 CHECK 7/14/2026 Checking Acme Supply Co -500.00 1001 Office supplies
SPL 1 CHECK 7/14/2026 Office Expense Acme Supply Co Overhead 500.00 1001 Office supplies
ENDTRNS
TRNS, SPL, and ENDTRNS
Transactions are the trickiest part of the format because they span multiple lines that have to be read as a group:
- TRNS opens a transaction — its type (
CHECK,DEPOSIT,INVOICE,BILL,GENERAL JOURNAL,CREDIT CARD CHARGE, and more), date, the primary account it hits, amount, and a memo. - SPL (split) records the other side of the entry — double-entry accounting means every transaction moves money between at least two accounts, and each SPL line is one of those other legs. A transaction can have zero splits (rare, but valid — a single-account journal entry), one split (the common case), or many (a bill paid out of several expense accounts at once).
- ENDTRNS closes the transaction. Everything between a
TRNSline and the nextENDTRNSbelongs to that one transaction.
Outside of transactions, IIF also carries plain list data the same way — !ACCNT / ACCNT for
the chart of accounts, !CUST / CUST for customers, !VEND / VEND for vendors, !INVITEM
for items, and more. A single IIF file can mix several of these list types together, each with
its own header block.
Why field positions can differ between files
Unlike a fixed-width format, IIF's columns aren't in a hardcoded order — the !TRNS header line
declares which columns come next and in what order, so a data row is only meaningful next to
its most recent matching header. Two IIF files from different QuickBooks versions (or different
export settings) can legitimately have their columns in different orders, or include a different
subset of columns entirely. A parser has to build the column mapping from the header it just
read, not assume a fixed layout.
Getting an IIF file into a spreadsheet
Renaming an .iif file to .csv doesn't work — the header rows and the TRNS/SPL/ENDTRNS
grouping make it structurally different from a flat CSV, and Excel has no idea a transaction and
its splits belong together. The free
IIF to CSV converter here on LegacyFile understands the format: it groups
every TRNS with its splits, handles transactions with no splits or several, and flattens
everything into one row per split you can open directly in Excel — no QuickBooks installation
needed. See
How to convert QuickBooks IIF to CSV for the
step-by-step version.