OFX, QIF, or IIF — pick the right one.

Three formats, one decision: OFX for QuickBooks Online, Xero, Wave and GnuCash; QIF for Quicken and older tools; IIF for QuickBooks Desktop. What each carries, and the caveats worth knowing before you import.

The ten-second answer

QuickBooks Online, Xero, Wave, or GnuCash: use OFX. Quicken or an older desktop finance tool: use QIF. QuickBooks Desktop: use IIF. When a tool accepts more than one, OFX is the safest default — it is the most precisely specified of the three.

OFX — the modern default

OFX is an XML format with an actual published specification, which is why modern accounting tools standardized on it. Each transaction carries an unambiguous date, a signed amount, a stable transaction id (which helps importers skip duplicates), the payee, and a memo; the file also states the statement period and currency. PesaInsights emits OFX 2.x following the 2.1 specification, and every export is round-trip verified: what we write, our own parser reads back identically.

QIF — for Quicken and the long tail

QIF is a plain-text format from the era before specifications were strict, kept alive by Quicken and older tools. It is the only one of the three with a category field, so the categorization PesaInsights infers survives the import. One honest caveat: QIF importers overwhelmingly assume US-style MM/DD/YYYY dates, so that is how we write them — a deliberate choice that keeps 5 March from being read as 3 May.

IIF — QuickBooks Desktop’s own

IIF is Intuit’s tab-delimited journal format, and QuickBooks Desktop’s File → Utilities → Import path expects it. Each row books the transaction against an account whose name is taken from your statement’s source — an M-Pesa statement imports under an M-Pesa account name, with a neutral fallback otherwise — and you can rename the account inside QuickBooks after the import.

What none of them carry

None of these formats carries attachments, running balances as first-class data, or your notes — they move transactions, not context. Whatever you import, spot-check the count, the date range, and the sign of a few transactions against the original statement before reconciling.

Convert a statement · Analyze a statement · Help & FAQ · Privacy promise