Skip to content

What Is a QIF File (and Why Its Dates Import a Month Wrong)

A QIF file is a plain text list of transactions, one field per line. Here is what each letter code means, why QIF dates break imports, how QIF compares to QFX, OFX, QBO and CSV, and how to open one.

Cover Image for What Is a QIF File (and Why Its Dates Import a Month Wrong)

A QIF file (Quicken Interchange Format) is a plain text file of bank transactions, one field per line. A single letter starts each line and names the field: D for date, T for amount, P for payee, M for memo. A lone caret ends each transaction, and a header line such as !Type:Bank declares what the records are.

That is the whole format. There is no XML, no schema, no compression. You can open a .qif in Notepad or TextEdit and read it, which is exactly why it has outlived most of the software that wrote it.

What a QIF file looks like inside

Here are two transactions from a checking account, written the way Quicken itself writes them:

!Type:Bank
D01/15'25
T-42.50
PWHOLE FOODS MKT 10259
MWHOLE FOODS MKT 10259 AUSTIN TX
N1042
CX
^
D01/16'25
T2150.00
PACME LTD PAYROLL
MDirect deposit January
^

The field codes you will actually encounter in a bank QIF are short:

  • D — the date. Formats vary wildly, which is the subject of the next section.
  • T — the amount, signed. Negative is money out. Some files use U instead, or both, with identical values.
  • P — the payee.
  • M — the memo, usually the fuller version of the same string.
  • N — a number: a check number, or a reference like DEP or ATM.
  • C — cleared status. X or * means cleared, R means reconciled, blank means neither.
  • L — the category, written against the sending app's own chart of accounts.
  • ^ — the record terminator. Nothing follows it on the line.

The header matters as much as the fields. !Type:Bank covers checking, savings and credit card records. !Type:Cash, !Type:CCard, !Type:Invst and !Account blocks all exist too, and an importer that reads one does not automatically read the others.

The date problem that breaks most QIF imports

QIF declares no date order anywhere in the file. There is no locale tag, no format string, nothing. So D01/02/2024 means 2 January in an app configured for the United States and 1 February in an app configured for the UK, Australia or most of Europe. The file is identical. Only the reader's assumption differs.

This is the single most common reason a QIF import goes wrong, and it fails quietly. Nothing errors. Your transactions simply land in the wrong months, and you find out during a reconciliation three weeks later when January is short and February is long.

Quicken adds its own wrinkle: it writes the century as an apostrophe. 01/15'25 is 15 January 2025, not a typo and not a quoting error. Two-digit years without the apostrophe (01/15/25) turn up as well, and European exports sometimes use dots (15.01.2025). GnuCash is honest about the mess and shows you a dialog during import saying the QIF file format does not specify the order of the day, month and year, then asks you to pick. Most other importers just guess.

The practical defense is simple. After any QIF import, look at the first and last transaction dates and compare them against the statement. A day-month swap is obvious there and trivially undone. Fifty rows later it is not.

When ConvertFin reads a QIF, it normalizes every date to a four-digit-year MM/DD/YYYY before writing anything out, handling the apostrophe century and two-digit years along the way. Where the first field is above 12 it can only be a day, so the file is unambiguously day-first and gets swapped rather than left for your software to misread.

QIF vs QFX vs OFX vs QBO vs CSV

Five formats circle this problem and they are easy to confuse. Three of them are the same standard in different wrappers.

FormatWhat it isWho reads itCan a third party generate it?
QIFPlain text, letter codes, caret-terminated recordsQuicken, GnuCash, Moneydance, MoneyMoney, Banktivity, AceMoneyYes, no restrictions
OFXThe open banking standard, SGML or XMLMost accounting software, including Xero and GnuCashYes
QBOOFX plus Intuit's Web Connect tagsQuickBooks Desktop and OnlineYes
QFXOFX plus a paid Intuit branding identifierQuicken onlyNo, see below
CSVPlain comma-separated columnsAlmost everything, after column mappingYes

QIF is the oldest and the least structured. OFX, QBO and QFX share one SGML body and differ only in the header block, which is why a file named .qfx is frequently plain OFX inside. CSV is not a banking format at all, just a spreadsheet, but it is the one thing every tool will take. If QuickBooks is your destination rather than Quicken, what a QBO file is covers that side.

Why no third-party tool can hand you a QFX file

This is where most converter sites go vague, so here is the direct answer. QFX is OFX with an Intuit branding identifier in the header, and that identifier is issued by Intuit to financial institutions who pay for it. Quicken checks for a valid one and refuses files that lack it. A self-generated QFX is rejected on principle, not because it is malformed.

QIF has no such gate. Nothing in the format is licensed, registered or checked against a vendor list, which is precisely why QIF is the correct output format for any tool that is not your bank. When you see a converter advertising QFX output, it is either a licensed institution or the file will bounce. For getting your own transactions into Quicken, QIF is the route that actually works, and converting a bank statement to QIF produces exactly that.

Which apps import QIF, and which no longer do

Still supported: Quicken (File → File Import → QIF File), GnuCash (File → Import → Import QIF), Moneydance, MoneyMoney, Banktivity and AceMoney. One caveat on Quicken for Windows: recent versions restrict QIF import to cash, asset and liability accounts, so a checking account that is set up for direct downloads may refuse the file until you import into a manually tracked account instead.

Not supported: QuickBooks Desktop dropped QIF import years ago and wants QBO (Web Connect) or IIF. That gap is the standard headache when a sole trader moves off Quicken, and the fix is to convert first, then use File → Utilities → Import → Web Connect Files. The QIF to QBO converter writes the Intuit header QuickBooks looks for. Categories and splits do not survive that trip, so expect to code the transactions in the Bank Feeds center.

How to open a QIF file

You have two options and only two.

Import it into an app that reads QIF, using the menu paths above. This is right when you want the transactions in your books.

Or convert it, which is right when you just want to read the thing. Renaming it to .csv does not work: QIF is one field per line, so Excel gives you a single column of D, T, P and M lines with no rows. Use the QIF to CSV converter for a spreadsheet, or the QIF to Excel converter if you want amounts stored as real numbers so that SUM and pivot tables work without a text-to-columns pass. Both keep the payee and the memo, joining them into one description rather than dropping the M line the way most converters do. Going the other way, from a bank CSV into Quicken, the CSV to QIF converter handles it. Everything runs in your browser tab, so the file never leaves your machine.

What is not covered

Bank records only. ConvertFin reads and writes !Type:Bank transactions, which covers checking, savings and credit card activity. Investment QIF is a different record shape, with security names, share counts and price per share in fields that have no equivalent in a transaction list, and it is not supported. Categories are not written either, since the L field points at the sending app's chart of accounts and guessing a mapping onto yours would create work rather than save it.

The short version

A QIF file is plain text: letter-coded fields, caret-terminated records, a !Type:Bank header. It is readable in any editor and importable by every personal finance app except QuickBooks Desktop. Its one real trap is the date, which the format never declares, so check the first and last row after every import. And if a tool promises you QFX, it cannot deliver it. QIF is the format without a gatekeeper, which is why the full converter list is built around it.