QuickBooks IIF File Format Explained
IIF (Intuit Interchange Format) is a tab-delimited text format that QuickBooks Desktop has used for decades to import and export lists and transactions. If you are migrating data into QuickBooks, building an integration, or trying to fix a failed import, understanding the format at the structural level will save you hours of guesswork.
Validate your IIF file instantly: Check structure, transaction blocks, required fields, and encoding before attempting to import.
Open IIF Validator โTable of Contents
File Structure Overview
An IIF file is a plain text file with a .iif extension. Every line is tab-delimited. The format has two types of lines: header lines (prefixed with !) that define columns, and data lines that supply values for those columns. A header line must appear before any data lines of the same type.
The file can contain multiple sections โ transactions, accounts, customer lists, vendor lists, and so on โ all in one file, separated by their respective header/data line pairs.
Header Lines and the ! Prefix
Every record type in an IIF file is announced by a header line. Header lines begin with ! followed by the record type name, then tab-separated column names. For example:
!TRNS TRNSID TRNSTYPE DATE ACCNT NAME AMOUNT DOCNUM MEMO CLEAR TOPRINT
This declares that TRNS data lines will have 10 fields in this exact order. Every data line of type TRNS that follows must have exactly that many tab-separated fields โ no more, no fewer. A mismatch in field count is one of the most common causes of IIF import failures.
The ! prefix is also used for the split line header:
!SPL SPLID TRNSTYPE DATE ACCNT NAME AMOUNT DOCNUM MEMO CLEAR QNTY PRICE INVITEM TAXABLE REIMBEXP SERVICEDATE OTHER1 OTHER2
Transaction Blocks: TRNS, SPL, ENDTRNS
Transactions are the most structurally strict part of IIF. Every transaction must follow this pattern:
TRNS [trns fields...]
SPL [spl fields...]
SPL [spl fields...] โ one or more split lines
ENDTRNS
The rules are firm: a TRNS line opens a transaction block. At least one SPL line must follow. ENDTRNS closes the block. There is no nesting โ you cannot start a new TRNS before closing the previous one with ENDTRNS. QuickBooks will reject the entire import if any block is unclosed or improperly nested.
ENDTRNS takes no fields โ it is a literal terminator with no tab-separated values after it.
Required Fields
Not all columns in a header need to be populated, but certain fields are mandatory for QuickBooks to accept the record:
For TRNS lines: ACCNT (account name), AMOUNT (signed numeric), and DATE (transaction date) are required. Omitting any of these causes the transaction to be silently skipped or rejected depending on the QuickBooks version.
For SPL lines: ACCNT and AMOUNT are required. The split amount should be the opposite sign of the transaction amount for a balanced entry โ though QuickBooks will sometimes accept unbalanced transactions and flag them in the register.
Common Record Types
Beyond transactions, IIF files support a range of list record types. The most commonly used are:
ACCNT โ chart of accounts entries. Defines account name, type (BANK, CCARD, EXPS, INC, etc.), description, and balance. Accounts must exist before transactions referencing them can be imported โ import your account list first.
CUST โ customer records. Name, billing address, contact information, payment terms, and tax settings.
VEND โ vendor records. Similar structure to CUST.
INVITEM โ items (products and services). Item type, description, account linkage, price, and cost.
CLASS โ class tracking entries, used when class tracking is enabled in QuickBooks.
Each of these has its own !-prefixed header line and follows the same header/data pairing rules as transactions.
Date and Amount Formats
QuickBooks IIF is strict about both formats. Dates must use M/D/YY or M/D/YYYY โ for example 3/15/24 or 3/15/2024. ISO 8601 format (2024-03-15), zero-padded months (03/15/2024), or any other variation will cause the date field to be rejected.
Amounts must be plain numeric values, optionally with a decimal point. Negative amounts use a leading minus sign: -150.00. Do not include currency symbols, thousands separators, or parentheses for negative values. A value like ($150.00) or 1,500.00 will fail amount validation.
Encoding and Line Endings
IIF files should be saved as plain ASCII or Windows-1252 (ANSI). A UTF-8 BOM (EF BB BF at the start of the file) will confuse QuickBooks' parser and cause the first line to be misread. If you are generating IIF files programmatically on a Mac or Linux system, ensure you are not writing a UTF-8 BOM.
Line endings should be Windows-style CRLF (\r\n). LF-only line endings (Unix style) are usually tolerated by modern QuickBooks versions but can cause issues with older releases. Null bytes in the file indicate binary content or encoding corruption and will prevent the file from loading entirely.
A Complete Example
This is a minimal but valid IIF file that imports one transaction with one split line:
!ACCNT NAME ACCNTTYPE
ACCNT Checking BANK
ACCNT Office Supplies EXPS
!TRNS TRNSTYPE DATE ACCNT NAME AMOUNT MEMO
!SPL TRNSTYPE DATE ACCNT NAME AMOUNT MEMO
!ENDTRNS
TRNS CHECK 3/24/2026 Checking Staples -89.50 Office paper
SPL CHECK 3/24/2026 Office Supplies Staples 89.50 Office paper
ENDTRNS
Key things to notice: the account list comes before the transaction section; both !TRNS and !SPL headers appear before any data; !ENDTRNS is declared as a header even though it carries no data columns; and the amounts balance (โ89.50 + 89.50 = 0).
