QFX to IIF Converter — Quicken file to QuickBooks Desktop
Your bank offers a Quicken (QFX) download and your books are in QuickBooks Desktop? This turns the QFX into an IIF file, which QuickBooks Desktop imports under File, Utilities, Import, IIF Files, posting each transaction straight into the register rather than through Bank Feeds.
Not the file you need?
- QuickBooks through Bank Feeds instead: QFX to QBO Converter
- Have a QBO rather than a QFX: QBO to IIF Converter
- Have a plain .ofx: OFX to IIF Converter
A Quicken download posted straight into a QuickBooks Desktop register.
A balanced pair per transaction
Each becomes a TRNS line for the bank side and an SPL line carrying the same amount with the opposite sign, which is how an IIF records a transaction.
The cheque number in the Num field
A QFX's <CHECKNUM> goes into DOCNUM, the field QuickBooks shows as Num. Without one the bank's FITID goes there instead, or onto the end of the memo when it is longer than the 11 characters Num holds.
The accounts left for you to name
A QFX names a bank and an account number, not the QuickBooks accounts the two sides belong in. Both are written as plainly unset placeholders, because QuickBooks creates any account an IIF names.
What the IIF file contains
Field by field, where each part of the download comes from.
| In your QFX | In the IIF | How |
|---|---|---|
| <DTPOSTED> | DATE | Written MM/DD/YYYY. |
| <TRNAMT> | TRNSTYPE, AMOUNT | Money out is CHECK, negative on the bank line, card payments and transfers included; money in is DEPOSIT, positive. The SPL line carries the opposite sign. |
| <NAME>, <MEMO> | NAME, MEMO | The two joined. NAME holds the first 41 characters, the most a QuickBooks name holds, even where that cuts a word; MEMO holds the whole description, up to 96 characters. |
| <CHECKNUM>, else <FITID> | DOCNUM | Up to 11 characters. A longer id goes at the end of MEMO, after "Ref", rather than being cut. |
| <CURDEF> | ACCNT on TRNS | In the placeholder, "*** SET BANK ACCOUNT (USD) ***", since IIF has no currency field. Replace it with your bank account's name. |
| Nothing | ACCNT on SPL | "*** SET CATEGORY ACCOUNT ***", for the account the other side belongs in. |
| <INTU.BID>, <ACCTID> | Not written | IIF has no place for the bank's Intuit id or the account number: the account is the one you name in ACCNT. |
| <LEDGERBAL> | No balance | IIF carries no balance. The preview states the QFX's closing balance, to check the register against after importing. |
| Nothing | TRNSID, SPLID | Left empty, so QuickBooks numbers the transactions itself. |
Sample output
Made by this converter's own code from the made-up file shown. The output is the file it writes, not retyped.
The input: QFX
A made-up QFX whose transaction ids are twelve characters long, with a cheque and a payee split across NAME and MEMO.
OFXHEADER:100
DATA:OFXSGML
VERSION:102
SECURITY:NONE
ENCODING:USASCII
CHARSET:1252
COMPRESSION:NONE
OLDFILEUID:NONE
NEWFILEUID:NONE
<OFX>
<SIGNONMSGSRSV1><SONRS><STATUS><CODE>0<SEVERITY>INFO</STATUS><DTSERVER>20260317120000<LANGUAGE>ENG<INTU.BID>12345</SONRS></SIGNONMSGSRSV1>
<BANKMSGSRSV1><STMTTRNRS><TRNUID>1<STATUS><CODE>0<SEVERITY>INFO</STATUS>
<STMTRS><CURDEF>USD
<BANKACCTFROM><BANKID>000000000<ACCTID>864209753<ACCTTYPE>CHECKING</BANKACCTFROM>
<BANKTRANLIST><DTSTART>20260302<DTEND>20260317
<STMTTRN><TRNTYPE>CREDIT<DTPOSTED>20260302<TRNAMT>2200.00<FITID>202603020001<NAME>EXAMPLE CO PAYROLL</STMTTRN>
<STMTTRN><TRNTYPE>CHECK<DTPOSTED>20260305<TRNAMT>-640.00<FITID>202603050001<CHECKNUM>1046<NAME>CHECK 1046</STMTTRN>
<STMTTRN><TRNTYPE>DEBIT<DTPOSTED>20260310<TRNAMT>-112.47<FITID>202603100001<NAME>SAMPLE OFFICE SUPPLY<MEMO>DEBIT CARD PURCHASE 0000</STMTTRN>
<STMTTRN><TRNTYPE>DEBIT<DTPOSTED>20260317<TRNAMT>-89.99<FITID>202603170001<NAME>FICTIONAL INTERNET SERVICE</STMTTRN>
</BANKTRANLIST>
<LEDGERBAL><BALAMT>1980.64<DTASOF>20260317</LEDGERBAL>
</STMTRS></STMTTRNRS></BANKMSGSRSV1>
</OFX>The output: IIF
The whole file.
!TRNS TRNSID TRNSTYPE DATE ACCNT NAME CLASS AMOUNT DOCNUM MEMO
!SPL SPLID TRNSTYPE DATE ACCNT NAME CLASS AMOUNT DOCNUM MEMO
!ENDTRNS
TRNS DEPOSIT 03/02/2026 *** SET BANK ACCOUNT (USD) *** EXAMPLE CO PAYROLL 2200.00 EXAMPLE CO PAYROLL Ref 202603020001
SPL DEPOSIT 03/02/2026 *** SET CATEGORY ACCOUNT *** EXAMPLE CO PAYROLL -2200.00 EXAMPLE CO PAYROLL Ref 202603020001
ENDTRNS
TRNS CHECK 03/05/2026 *** SET BANK ACCOUNT (USD) *** CHECK 1046 -640.00 1046 CHECK 1046
SPL CHECK 03/05/2026 *** SET CATEGORY ACCOUNT *** CHECK 1046 640.00 1046 CHECK 1046
ENDTRNS
TRNS CHECK 03/10/2026 *** SET BANK ACCOUNT (USD) *** SAMPLE OFFICE SUPPLY - DEBIT CARD PURCHAS -112.47 SAMPLE OFFICE SUPPLY - DEBIT CARD PURCHASE 0000 Ref 202603100001
SPL CHECK 03/10/2026 *** SET CATEGORY ACCOUNT *** SAMPLE OFFICE SUPPLY - DEBIT CARD PURCHAS 112.47 SAMPLE OFFICE SUPPLY - DEBIT CARD PURCHASE 0000 Ref 202603100001
ENDTRNS
TRNS CHECK 03/17/2026 *** SET BANK ACCOUNT (USD) *** FICTIONAL INTERNET SERVICE -89.99 FICTIONAL INTERNET SERVICE Ref 202603170001
SPL CHECK 03/17/2026 *** SET CATEGORY ACCOUNT *** FICTIONAL INTERNET SERVICE 89.99 FICTIONAL INTERNET SERVICE Ref 202603170001
ENDTRNSQuestions about converting QFX to IIF
Why convert a QFX to IIF rather than to QBO?
A QBO goes through Bank Feeds, where each transaction waits to be matched or added and QuickBooks recognises a FITID it has seen. An IIF posts straight into the register with no matching at all, which suits a batch of history or a company file that does not use Bank Feeds.
Is my bank's transaction id kept?
In the Num field when it is 11 characters or fewer, otherwise at the end of the memo after "Ref". QuickBooks matches on neither, so importing the file twice enters everything twice: back up the company file and import it once.
Do my Quicken categories come across?
No. A QFX has no category field, so every SPL line posts to *** SET CATEGORY ACCOUNT ***. Replace that with one account for the whole file before importing, or with a holding account you recategorise from in QuickBooks.
What do I replace the placeholders with?
Your bank account's name exactly as your chart of accounts spells it, in place of *** SET BANK ACCOUNT (USD) ***, and the account the other side belongs in. Do it in a text editor before importing: QuickBooks creates any account an IIF names, so leaving them in adds two accounts called that.