A QIF file is a plain-text list of transactions where each line starts with one letter: D for the date, T for the amount, P for the payee. It carries no transaction id and never says which way round 03/04 goes. Evidilo writes QIF and OFX from the same balance-checked rows, and OFX gives every row an id.
What is a QIF file?
QIF, the Quicken Interchange Format, opens with a line naming the account type, such as !Type:Bank or !Type:CCard, and then lists one transaction after another, each a short run of one-letter lines closed by a caret. No current specification from Quicken could be found on 25 October 2026. The one Intuit description that could be fetched is a 1997 technical-support answer, copied at W3C under its original title, What is the Quicken interchange format (QIF)? Its list for bank, cash and card accounts has twelve codes. Eight of them:
| Code | Intuit’s 1997 meaning | In Evidilo’s QIF |
|---|---|---|
| D | Date | Written, month first |
| T | Amount | Written, signed |
| P | Payee | Written, from the statement’s description |
| N | Num (check or reference number) | Not written |
| C | Cleared status | Not written |
| M | Memo | Not written |
| L | Category | Not written |
| ^ | End of the entry | Written |
The other four are A for an address and S, E and $ for the lines of a split. None of the twelve identifies a transaction. N comes closest, and Intuit calls it a check or reference number: something a bank fills in for a check and leaves empty for a card purchase, with nothing in the list requiring it to be unique. The same page says that when an item is left out, “Quicken treats it as a blank item.” It gives no date order either. Its examples include D6/ 1/94 and D8/25/93, and the word “month” does not appear anywhere on it.
Evidilo is a bank statement to accounting import file converter, and its QIF writer uses four of those codes: D, T, P and the caret. Before any file is offered, it adds up every row against the opening, closing and daily balances the bank printed and marks the first day that does not tie out. The same checked rows can be downloaded as QBO, IIF, OFX, QFX, QIF, CSV or Excel, and the download screen labels QIF “No transaction ID”.
One March statement, read four ways
We wrote a seven-row March 2026 checking statement through Evidilo’s production QIF writer and read its dates back four ways: Python’s strict date parser set month first, the same parser set day first, and the QIF library quiffen 4.0.1 with its day_first switch off and then on. The writer puts the month first and the four-digit year after an apostrophe, so 4 March is written D03/04'2026. What came back on 25 October 2026:
| Date on the statement | QIF line | Strict, day first | quiffen, day_first on |
|---|---|---|---|
| 2026-03-03 | D03/03'2026 | 2026-03-03 | 2026-03-03 |
| 2026-03-04 | D03/04'2026 | 2026-04-03 | 2026-04-03 |
| 2026-03-09 | D03/09'2026 | 2026-09-03 | 2026-09-03 |
| 2026-03-12 (twice) | D03/12'2026 | 2026-12-03 | 2026-12-03 |
| 2026-03-13 | D03/13'2026 | invalid | 2026-03-13 |
| 2026-03-27 | D03/27'2026 | invalid | 2026-03-27 |
Read month first, all seven dates came back as printed. Read day first, four moved: the transfer to 3 April, the rent to 3 September and both café purchases to 3 December. 3 March stayed put because 03/03 reads the same either way.
The strict parser refused 03/13 and 03/27, and a refusal is the better of the two outcomes, because the import stops. quiffen did not stop. With day_first on, it read those two rows month first without a warning, so one file came back in two date orders, four of its rows in months the statement does not cover. Nothing in the file could have told either reader which setting was right. The OFX file Evidilo wrote from the same rows puts the year first, 20260304 for the transfer, and that has one reading.
Two café purchases, one record
Rows 4 and 5 are two purchases of $4.50 at the same café on 12 March. In the QIF file they are the same three lines twice: D03/12'2026, T-4.50, PCORNER CAFE. Of the seven records, six are distinct. A program reading the file cannot tell the second purchase from a row delivered twice, and cannot tell a second import of the whole file from seven new transactions.
In Evidilo’s OFX file from the same rows, the seven transactions carry seven different FITIDs, the two café rows included, and a second run wrote the same seven. Each id is built from the account, the date, the amount, the direction and the running balance the bank printed, plus a count of identical rows before it, so converting the statement again does not change it. Why a stable per-row id matters to the program on the other end is in PDF bank statement to QuickBooks without duplicates. What Quicken or Xero does with two identical QIF rows was not tested here; the file gives them nothing to decide with.
How was this checked?
On 25 October 2026 we ran Evidilo’s production QIF and OFX writers, from its main branch, on the seven-row statement above, and read the QIF dates with Python’s strptime and with quiffen 4.0.1, each set month first and day first. The importer pages in the next table were fetched the same day and their wording recorded. Every value is in dataset.csv, and check.py repeats the run and re-reads the pages.
Which programs import a QIF file
What each program’s own pages said about QIF on 25 October 2026:
| Program | QIF import, per its own page | Page and its date |
|---|---|---|
| Quicken for Windows | Two pages disagree on bank and card accounts (below) | quicken.com support, updated June 5, 2026; info.quicken.com, undated |
| Quicken for Mac | Only to start a new data file from a QIF another app exported | quicken.com support, updated April 21, 2026 |
| Xero (US) | Listed with OFX, QBO, QFX and CSV | Xero’s US bank feeds page |
| QuickBooks Online | Not listed: QBO, QFX or CSV, or a PDF or image statement | Intuit help article, updated 8/24/2026 |
| QuickBooks Desktop | “unavailable” | QuickBooks Team reply, March 26, 2019 |
Quicken’s two Windows pages were both live on 25 October 2026 and give opposite answers. The support article on importing data into Quicken for Windows, updated June 5, 2026, says “QIF import isn’t available for checking, savings, or credit card accounts” and allows it for asset, liability and cash accounts. Quicken’s help page Importing data from a QIF file, which shows no date, answers the question of a banking account with “Yes” and says “you can now import any account type using QIF.” Back up the data file before trying either reading on a checking account.
The Mac page is narrower than both: QIF is the route in from Banktivity or Moneydance through File, New, and “Incremental import of QIF files into Quicken is not supported.”
How to open a QIF file
A QIF file is text, so any text editor opens it and shows the lines exactly as above. Before importing one into a ledger:
- Read the D lines. A number above 12 in the second place, as in D03/13'2026, means the file is month first; above 12 in the first place means day first. When no row has a day above 12, the file cannot settle it, so compare one row with the statement.
- Check the header.
!Type:Bankor!Type:CCardshould match the account you are importing into. - Find the last date already in that account and delete the rows on or before it from the file, because no line in it lets the importer recognise them.
- Set the importer’s date order, if it offers one, to the order you found in step 1.
- After the import, compare the account balance with the closing balance on the statement.
QIF vs QFX
QFX is OFX with Intuit’s sign-on lines added, and it settles both of the questions QIF leaves open: dates are written year first, and every transaction has a FITID. A QFX file also names the bank in a line of its own, covered in what a QFX file is and what its bank id line does. A CSV has QIF’s date problem with a spreadsheet doing the guessing, the case measured in bank statement to Excel or CSV.
For a bank or card account, an OFX or QFX file is the better choice wherever the program takes one, because the file answers what QIF leaves to the importer. QIF still has a place in Quicken for Windows asset, liability and cash accounts, the ones its June 2026 support article names.
What people ask before importing a QIF file
Does a QIF file have a transaction ID?
No. Evidilo’s QIF rows carry only date, amount and payee lines, and its download screen labels the format “No transaction ID”. The N line in Intuit’s field list holds a check or reference number, which nothing requires to be unique; an OFX or QFX file carries a FITID on every row instead.
Why did my QIF import put transactions in the wrong month?
The importer read the dates day first and the file was written month first, or the other way round. Evidilo writes QIF month first, so D03/04'2026 is 4 March, and in our run a day-first reading moved four of seven rows. A row whose day is above 12 can also be read month first without a warning, as quiffen 4.0.1 did, so a wrong-month import can sit beside correct rows.
Can QuickBooks Online import a QIF file?
Intuit’s upload article, updated 8/24/2026, lists QBO, QFX or CSV and does not mention QIF. Evidilo writes the same checked rows as QBO or CSV, two of the formats on that list. For QuickBooks Desktop, a QuickBooks Team reply of March 26, 2019 called QIF import unavailable.
Can I import a QIF file into a Quicken checking account?
Quicken’s own pages disagree: its Windows support article says no for checking, savings and credit card accounts, and its info.quicken.com help page says any account type. Evidilo writes QIF and QFX from one conversion, so either file comes from the same rows checked against the printed balances. Quicken for Mac takes QIF only when starting a new data file.
How do I stop a QIF file importing twice?
Remove the rows the account already holds before you import, because the file has nothing an importer can match them on. Evidilo’s OFX, QFX and QBO files give each row the same id every time the statement is converted. Xero lists OFX, QBO and QFX beside QIF on its US bank feeds page, so a Xero user has a format with ids to choose instead.