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?

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 QBOIn the IIFHow
<DTPOSTED>DATEWritten MM/DD/YYYY.
<TRNAMT>TRNSTYPE, AMOUNTMoney out is CHECK, negative on the bank line; money in is DEPOSIT, positive. The SPL line carries the opposite sign.
<NAME>, <MEMO>NAME, MEMOThe two joined. NAME holds the first 41 characters, the most a QuickBooks name holds; MEMO holds up to 96.
<CHECKNUM>, else <FITID>DOCNUMUp to 11 characters. A longer id goes into MEMO rather than being cut.
<CURDEF>ACCNT on TRNSIn the placeholder, "*** SET BANK ACCOUNT (USD) ***", since IIF has no currency field. Replace it with your bank account's name.
NothingACCNT 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
ENDTRNS

Questions 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.

Related guides