Skip to content
LegacyFile
← Learn

How to Convert QuickBooks IIF to CSV (Without QuickBooks)

By LegacyFile ·

Someone sent you a QuickBooks Desktop .iif file — a transaction register, a chart of accounts, maybe a customer list — and you need it in a spreadsheet. Maybe you're migrating off QuickBooks Desktop, maybe you're auditing a bookkeeper's export, or maybe you just don't have QuickBooks installed on the machine you're working from. Here's how to get it done without QuickBooks at all.

Why renaming .iif to .csv doesn't work

An IIF file is tab-delimited, which makes it look like it should open cleanly in Excel — and technically it will, sort of. The problem is structural, not cosmetic: IIF interleaves header rows (starting with !) that declare column names with data rows that use them, and transaction data is split across multiple lines — a TRNS row, one or more SPL split lines, and an ENDTRNS marker — that all belong together as one logical record. Opened raw in Excel, you get a jumble of header rows mixed into your data with no indication of which columns apply to which rows below them. For the full breakdown of the format, see What is an IIF file?

Convert IIF to CSV in your browser

The free IIF to CSV converter on LegacyFile does the actual parsing:

  1. Drop your .iif file into the converter. Parsing happens entirely on your device — nothing is uploaded.
  2. It reads the header rows to know which columns apply to which data rows, even when different QuickBooks exports declare them in a different order.
  3. It groups every TRNS with its splits. A bill paid out of three expense accounts becomes three linked rows in the output, each carrying the transaction's date, type, and reference number — not three disconnected, context-free lines.
  4. It handles list-only exports too. If your file has no transactions at all — just a chart of accounts or a customer list — the converter automatically exports using that list's own columns instead of forcing it into a transaction layout that doesn't apply.
  5. Check the summary and preview, then export CSV, XLSX, or JSON. The CSV/XLSX opens directly in Excel, Google Sheets, or Numbers.

What ends up in each column (transaction exports)

For a transaction register, every split becomes one row with these columns:

| Column | Source | | ------------- | -------------------------------------------------------------------------- | | Type | The transaction's TRNSTYPE (CHECK, DEPOSIT, BILL, INVOICE...) | | Date | The transaction date, normalized to YYYY-MM-DD when possible | | Account | The transaction's primary account (from the TRNS row) | | Split Account | The other side of the entry (from the SPL row) | | Amount | The split's amount — or the transaction's own amount when it has no splits | | Name | The customer/vendor/employee name, preferring the split's own value | | Memo | Free-text memo, preferring the split's own value | | Class | QuickBooks class tracking, when used | | Num | The check number, invoice number, or other document number |

A transaction with no splits still produces exactly one row, using its own amount and account — nothing gets silently dropped.

When something looks off

The converter never fails silently. A split line with no transaction open before it, or a transaction missing its closing ENDTRNS, gets kept and flagged in a warnings list instead of being dropped or crashing the conversion — the safest default when you're working with financial data you can't easily re-export from the source system.