Skip to content

What Is an IIF File (and Why QuickBooks Online Will Not Take One)

An IIF file is Intuit Interchange Format: tab-delimited text QuickBooks Desktop imports straight into the register. Here is the record structure, the balancing rule, the tab trap, and how to convert IIF to CSV or CSV to IIF.

Cover Image for What Is an IIF File (and Why QuickBooks Online Will Not Take One)

An IIF file is an Intuit Interchange Format file: plain, tab-delimited text that QuickBooks Desktop imports directly into your company file. It holds transactions and list records as rows of tab-separated fields, with no compression and no encryption. You can open one in Notepad and read it. QuickBooks Online does not import IIF at all, in any plan.

That last sentence is the question most people arrive with, so it is worth stating plainly up front.

QuickBooks Online cannot import IIF

No plan, add-on or hidden setting makes QuickBooks Online read an IIF. The Import Data screen under the gear menu accepts CSV and Excel for customers, vendors, products and the chart of accounts. The Banking screen accepts CSV, QBO, OFX and QFX for transactions. IIF appears on neither list and never has.

So converting is the only route. Turn the IIF into a spreadsheet with the IIF to CSV converter, check the rows, then upload that CSV in the Banking screen. If you would rather hand QuickBooks a structured banking file than map columns by hand, take the CSV through the CSV to QBO converter instead — the companion piece on what a QBO file is covers where that format fits.

What is actually inside the file

IIF has two kinds of rows. A row whose first cell starts with an exclamation mark is a header row, declaring the column order for every data row of that type that follows. Data rows repeat the keyword without the exclamation mark. Here is a two-transaction IIF, exactly as the converter writes it:

!TRNS	TRNSID	TRNSTYPE	DATE	ACCNT	NAME	AMOUNT	MEMO
!SPL	SPLID	TRNSTYPE	DATE	ACCNT	NAME	AMOUNT	MEMO
!ENDTRNS
TRNS	1	CHECK	03/14/2026	Checking	Shell Oil fuel	-64.20	Shell Oil fuel
SPL	1	CHECK	03/14/2026	Uncategorized	Shell Oil fuel	64.20	Shell Oil fuel
ENDTRNS
TRNS	2	DEPOSIT	03/17/2026	Checking	Acme Ltd invoice 1042	2400.00	Acme Ltd invoice 1042
SPL	2	DEPOSIT	03/17/2026	Uncategorized	Acme Ltd invoice 1042	-2400.00	Acme Ltd invoice 1042
ENDTRNS

Every gap there is a single tab, not spaces. TRNSTYPE is the QuickBooks transaction type (CHECK, DEPOSIT, BILL, INVOICE, GENERAL JOURNAL), DATE is MM/DD/YYYY, ACCNT must match an account in your chart of accounts character for character, NAME is the customer or vendor, and AMOUNT is a signed decimal with no currency symbol and no thousands separator. In a converted file NAME and MEMO both carry the transaction description, because a bank export has no separate vendor field to draw a name from; NAME is truncated to 41 characters, which is where QuickBooks stops reading it.

Account and name matching fails quietly. If your file says Checking Account and your chart of accounts says Checking, QuickBooks does not stop and ask. It creates a second account called Checking Account and posts everything there. Vendor names behave the same way, which is how one typo becomes a duplicate vendor you find three weeks later.

Every transaction has to net to zero

QuickBooks is double-entry and IIF gets no exemption. A TRNS row must be followed by at least one SPL row carrying the opposite sign, then an ENDTRNS marker closing the record. Above, the 64.20 check is offset by a positive 64.20 split, so the record sums to zero.

Get this wrong and QuickBooks will not tell you which line was at fault. You get a generic dialog along the lines of "There is something wrong with this line. Do you want to save the rest of this file?" and no information to act on. Answer yes and you have a partial import with an unknown number of transactions missing. An unbalanced record that does import can land the difference in Opening Balance Equity, which surfaces at year end rather than at import time. If you are assembling an IIF in Excel, count your rows: three lines per transaction, minimum, and the AMOUNT column of each record summing to exactly 0.00.

The tab trap

CSV has a quoting mechanism: put a comma inside quotes and the parser keeps it as data. IIF has nothing of the kind. A tab is a column boundary, a newline is a row boundary, and there is no escape sequence and no quote character.

So a memo containing a tab shifts every column after it on that row. Date lands in the account field, account lands in the name field, and QuickBooks reads a date string into an amount field without complaining, because from its point of view the row simply has the wrong number of cells. The import looks like it worked, and you find the mangled row weeks later. Line breaks split one transaction into two malformed rows. Any memo copied out of a PDF, an email or a bank portal is a candidate, so strip tabs and newlines from every text field before you save.

Column order is declared per file, and it genuinely varies

The !TRNS header is the schema for that one file, and exporters write different schemas. Some add DOCNUM for check numbers, some add CLASS, some include CLEAR and TOPRINT flags, and some put MEMO before AMOUNT instead of after it. All of those are valid.

That is why a converter with hardcoded column positions is dangerous. Give it a file whose MEMO and AMOUNT are swapped and it reads your memo text as the amount, drops it as unparseable, and hands you a clean-looking spreadsheet with the wrong numbers in it. The fix is to read the !TRNS line and map by name, which is what our converter does.

IIF versus QBO: no matching step, and no undo

A QBO file is a bank feed. QuickBooks parks the transactions in the Bank Feeds center, matches them against your register, and waits for you to accept them. Nothing hits your books until you say so.

An IIF is a direct write. No matching, no review queue, no accept step. The transactions are in the register the moment the import finishes, and there is no undo. If the file was wrong, your only clean fix is a backup restore or deleting transactions one at a time.

Back up your company file before every IIF import. File then Back Up Company then Create Local Backup. That one step turns a bad import from an afternoon of cleanup into a two-minute restore. If your source is a bank statement you would rather match than force into the register, use bank statement to QBO instead and keep the review step.

IIF carries lists too, not just transactions

Transactions are the common use, but the format covers any QuickBooks list. !CUST declares customer fields, !VEND declares vendors, !ACCNT declares the chart of accounts, and there are equivalents for employees, items and classes. One file can hold several blocks, each with its own header row, which is why bookkeepers use IIF to stand up a chart of accounts on a fresh company file in one pass. Our converters read transaction records only and ignore list rows.

Importing an IIF into QuickBooks Desktop

  1. Take a backup: File then Back Up Company then Create Local Backup.
  2. Switch to single-user mode if you are on a multi-user file.
  3. Go to File then Utilities then Import then IIF Files.
  4. Select the .iif and read whatever QuickBooks reports rather than clicking through it.
  5. Open the register and spot-check the first, last and largest transactions, plus the account each split landed in.

Converting in both directions

To build the file, the CSV to IIF converter writes the full TRNS / SPL / ENDTRNS record for every spreadsheet row, with the balancing split posting the exact negation of the amount to an account called Uncategorized that you re-code in QuickBooks afterwards. It strips tabs and newlines from descriptions, caps NAME at 41 characters, and writes dates as MM/DD/YYYY, covering all three failure modes above.

Reading one is the more common need. The IIF to CSV converter keeps the TRNS lines, drops the SPL lines so each transaction appears once rather than twice with opposite signs, and returns date, description and a signed amount. Take the Excel download if you want numeric amounts for pivot tables. The balance column comes back empty because IIF records no running balance.

For Quicken, GnuCash or Moneydance there is no direct IIF to QIF step, but the two-hop works: IIF to CSV, then the CSV to QIF tool on the converter hub. Both run in your browser tab, so nothing is uploaded, which matters when the file names your accounts and everyone you pay.

The short version

An IIF file is Intuit's tab-delimited import format for QuickBooks Desktop, and QuickBooks Online will never read it. Header rows beginning with an exclamation mark declare the column order, every transaction needs balancing splits summing to zero, and a stray tab inside a memo silently shifts every column after it. Because an IIF writes straight into the register with no review and no undo, the backup is not optional.