QBO to IIF Converter — For QuickBooks Desktop
QuickBooks Desktop reads both formats and they are not interchangeable: Web Connect files go through the bank feed, IIF files post directly. When you need the second and have the first, this converts between them.
Not the file you need?
- Starting from a bank CSV: CSV to IIF Converter
- Have a QFX rather than a QBO: QFX to IIF Converter
- Have an OFX rather than a QBO: OFX to IIF Converter
For the QuickBooks Desktop imports that take IIF rather than Web Connect.
A balanced pair per transaction
Each becomes a TRNS and a matching SPL carrying the opposite sign, which is the structure QuickBooks expects and will reject a file for missing.
Dates in the order QuickBooks reads
IIF dates are MM/DD/YYYY. The conversion is done once, from a date whose order is already known, rather than guessed from the digits.
The account left for you
A QBO does not name the account the other side should post to. It is marked plainly unset rather than invented.
What the IIF file contains
Field by field, where each part of the download comes from.
| In your QBO | In the IIF | How |
|---|---|---|
| <DTPOSTED> | DATE | Written MM/DD/YYYY. |
| <TRNAMT> | TRNSTYPE, AMOUNT | Money out is CHECK, negative on the bank line; 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; MEMO holds up to 96. |
| <CHECKNUM>, else <FITID> | DOCNUM | Up to 11 characters. A longer id goes into MEMO 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. |
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: QBO
A made-up QBO Web Connect file with four transactions, one of them a cheque.
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>20260319120000<LANGUAGE>ENG<INTU.BID>12345</SONRS></SIGNONMSGSRSV1>
<BANKMSGSRSV1><STMTTRNRS><TRNUID>1<STATUS><CODE>0<SEVERITY>INFO</STATUS>
<STMTRS><CURDEF>USD
<BANKACCTFROM><BANKID>000000000<ACCTID>555000111<ACCTTYPE>CHECKING</BANKACCTFROM>
<BANKTRANLIST><DTSTART>20260302<DTEND>20260319
<STMTTRN><TRNTYPE>CREDIT<DTPOSTED>20260302<TRNAMT>1975.00<FITID>QB260302A<NAME>EXAMPLE CO PAYROLL</STMTTRN>
<STMTTRN><TRNTYPE>CHECK<DTPOSTED>20260305<TRNAMT>-420.00<FITID>QB260305A<CHECKNUM>2051<NAME>CHECK 2051</STMTTRN>
<STMTTRN><TRNTYPE>DEBIT<DTPOSTED>20260313<TRNAMT>-58.40<FITID>QB260313A<NAME>SAMPLE TIRE & AUTO<MEMO>CARD PURCHASE</STMTTRN>
<STMTTRN><TRNTYPE>DEBIT<DTPOSTED>20260319<TRNAMT>-19.99<FITID>QB260319A<NAME>MADE-UP STREAMING CO</STMTTRN>
</BANKTRANLIST>
<LEDGERBAL><BALAMT>3876.61<DTASOF>20260319</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 1975.00 QB260302A EXAMPLE CO PAYROLL
SPL DEPOSIT 03/02/2026 *** SET CATEGORY ACCOUNT *** EXAMPLE CO PAYROLL -1975.00 QB260302A EXAMPLE CO PAYROLL
ENDTRNS
TRNS CHECK 03/05/2026 *** SET BANK ACCOUNT (USD) *** CHECK 2051 -420.00 2051 CHECK 2051
SPL CHECK 03/05/2026 *** SET CATEGORY ACCOUNT *** CHECK 2051 420.00 2051 CHECK 2051
ENDTRNS
TRNS CHECK 03/13/2026 *** SET BANK ACCOUNT (USD) *** SAMPLE TIRE & AUTO - CARD PURCHASE -58.40 QB260313A SAMPLE TIRE & AUTO - CARD PURCHASE
SPL CHECK 03/13/2026 *** SET CATEGORY ACCOUNT *** SAMPLE TIRE & AUTO - CARD PURCHASE 58.40 QB260313A SAMPLE TIRE & AUTO - CARD PURCHASE
ENDTRNS
TRNS CHECK 03/19/2026 *** SET BANK ACCOUNT (USD) *** MADE-UP STREAMING CO -19.99 QB260319A MADE-UP STREAMING CO
SPL CHECK 03/19/2026 *** SET CATEGORY ACCOUNT *** MADE-UP STREAMING CO 19.99 QB260319A MADE-UP STREAMING CO
ENDTRNSQuestions about converting QBO to IIF
Why convert a QBO to IIF when QuickBooks Desktop reads QBO?
A QBO goes through Bank Feeds, where each transaction waits to be matched or added. An IIF posts transactions straight into the register, which suits loading a batch of history, or a company file that does not use Bank Feeds.
What should the category account be?
Whichever account the other side of these transactions belongs to: an expense, an income account, or a holding account you sort out later. Replace *** SET CATEGORY ACCOUNT *** before importing, or QuickBooks creates an account with that name.
Does QuickBooks spot duplicates in an IIF?
No. An IIF has no id QuickBooks matches on - the bank's FITID travels in the Num or the memo, and QuickBooks checks neither - so importing the file twice enters everything twice. Import it once.