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
DEPorATM. - C — cleared status.
Xor*means cleared,Rmeans 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.
| Format | What it is | Who reads it | Can a third party generate it? |
|---|---|---|---|
| QIF | Plain text, letter codes, caret-terminated records | Quicken, GnuCash, Moneydance, MoneyMoney, Banktivity, AceMoney | Yes, no restrictions |
| OFX | The open banking standard, SGML or XML | Most accounting software, including Xero and GnuCash | Yes |
| QBO | OFX plus Intuit's Web Connect tags | QuickBooks Desktop and Online | Yes |
| QFX | OFX plus a paid Intuit branding identifier | Quicken only | No, see below |
| CSV | Plain comma-separated columns | Almost everything, after column mapping | Yes |
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.
