OFX to QBO Converter — For QuickBooks
An OFX your bank gave you, rewritten as a QuickBooks Web Connect file. The difference between the two is small and decisive: QuickBooks looks for Intuit's own identifying tags and refuses a file without them.
Not the file you need?
- Have a .qfx rather than an .ofx: QFX to QBO Converter
- QuickBooks Desktop, straight into the register: OFX to IIF Converter
The same transactions with the Intuit tags QuickBooks checks for.
Your bank's own id is kept
Where the source file carries an <INTU.BID>, it is preserved rather than overwritten. That code identifies the issuing bank, and replacing it with a generic one is how a file QuickBooks would have accepted becomes one it rejects.
Nothing is guessed
The transactions are already structured. Each date and amount is read from its own tag and written into the QBO — no categories, no inferred signs.
Your bank's transaction ids kept
Each transaction keeps the FITID your bank gave it, which is what QuickBooks matches when it decides whether it has seen a transaction before. Only an id the file itself repeats is replaced, so no transaction is dropped as a duplicate.
What the QBO file contains
Field by field, where each part of the download comes from.
| In your OFX | In the QBO | How |
|---|---|---|
| <DTPOSTED> | <DTPOSTED> | The same date, written YYYYMMDD. |
| <TRNAMT> | <TRNAMT> | The same signed amount. |
| <FITID> | <FITID> | Your bank's id, kept. A FITID the file repeats gets a new one, since QuickBooks would drop the second. |
| <CHECKNUM> | <CHECKNUM> | Kept, and a transaction the bank typed CHECK stays a CHECK, so QuickBooks can match it to a cheque you wrote. |
| <NAME>, <MEMO> | <NAME>, <MEMO> | Kept apart as the bank split them. A name longer than 32 characters, the most <NAME> holds, is cut there and written whole at the start of <MEMO>. |
| <TRNTYPE> | <TRNTYPE> | CREDIT, DEBIT or CHECK. Finer types such as POS or ATM become CREDIT or DEBIT by the amount's sign. |
| <LEDGERBAL> | <LEDGERBAL> | The closing balance and its date, as the OFX states them. |
| <CURDEF>, <ACCTID> | <CURDEF>, <ACCTID> | Carried across unchanged. |
| Nothing | <INTU.BID> | 3000, the id Intuit registered for Wells Fargo - a common stand-in when a file names no bank - so the import may be labelled with that bank's name. |
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: OFX
A made-up OFX of the plain kind most banks hand out, with no Intuit bank id in it.
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>20260318120000<LANGUAGE>ENG</SONRS></SIGNONMSGSRSV1>
<BANKMSGSRSV1><STMTTRNRS><TRNUID>1<STATUS><CODE>0<SEVERITY>INFO</STATUS>
<STMTRS><CURDEF>USD
<BANKACCTFROM><BANKID>000000000<ACCTID>123456789<ACCTTYPE>CHECKING</BANKACCTFROM>
<BANKTRANLIST><DTSTART>20260302<DTEND>20260318
<STMTTRN><TRNTYPE>CREDIT<DTPOSTED>20260302<TRNAMT>1500.00<FITID>2026030200000000417<NAME>EXAMPLE CO PAYROLL</STMTTRN>
<STMTTRN><TRNTYPE>POS<DTPOSTED>20260306<TRNAMT>-38.20<FITID>2026030600000000418<NAME>SAMPLE HARDWARE STORE<MEMO>POS PURCHASE CARD 0000</STMTTRN>
<STMTTRN><TRNTYPE>CHECK<DTPOSTED>20260311<TRNAMT>-250.00<FITID>2026031100000000419<CHECKNUM>1044<NAME>CHECK 1044</STMTTRN>
<STMTTRN><TRNTYPE>DEBIT<DTPOSTED>20260318<TRNAMT>-71.35<FITID>2026031800000000420<NAME>MADE-UP GAS & ELECTRIC</STMTTRN>
</BANKTRANLIST>
<LEDGERBAL><BALAMT>1640.45<DTASOF>20260318</LEDGERBAL>
</STMTRS></STMTTRNRS></BANKMSGSRSV1>
</OFX>The output: QBO
The whole file. The writer puts everything after the header on one line; line breaks are added here before each transaction so it can be read.
OFXHEADER:100
DATA:OFXSGML
VERSION:102
SECURITY:NONE
ENCODING:USASCII
CHARSET:1252
COMPRESSION:NONE
OLDFILEUID:NONE
NEWFILEUID:NONE
<OFX><SIGNONMSGSRSV1><SONRS><STATUS><CODE>0</CODE><SEVERITY>INFO</SEVERITY></STATUS><DTSERVER>20260318120000</DTSERVER><LANGUAGE>ENG</LANGUAGE><INTU.BID>3000</INTU.BID></SONRS></SIGNONMSGSRSV1>
<BANKMSGSRSV1><STMTTRNRS><TRNUID>1</TRNUID><STATUS><CODE>0</CODE><SEVERITY>INFO</SEVERITY></STATUS>
<STMTRS><CURDEF>USD</CURDEF><BANKACCTFROM><BANKID>000000000</BANKID><ACCTID>123456789</ACCTID><ACCTTYPE>CHECKING</ACCTTYPE></BANKACCTFROM>
<BANKTRANLIST><DTSTART>20260302</DTSTART><DTEND>20260318</DTEND>
<STMTTRN><TRNTYPE>CREDIT</TRNTYPE><DTPOSTED>20260302</DTPOSTED><TRNAMT>1500.00</TRNAMT><FITID>2026030200000000417</FITID><NAME>EXAMPLE CO PAYROLL</NAME></STMTTRN>
<STMTTRN><TRNTYPE>DEBIT</TRNTYPE><DTPOSTED>20260306</DTPOSTED><TRNAMT>-38.20</TRNAMT><FITID>2026030600000000418</FITID><NAME>SAMPLE HARDWARE STORE</NAME><MEMO>POS PURCHASE CARD 0000</MEMO></STMTTRN>
<STMTTRN><TRNTYPE>CHECK</TRNTYPE><DTPOSTED>20260311</DTPOSTED><TRNAMT>-250.00</TRNAMT><FITID>2026031100000000419</FITID><CHECKNUM>1044</CHECKNUM><NAME>CHECK 1044</NAME></STMTTRN>
<STMTTRN><TRNTYPE>DEBIT</TRNTYPE><DTPOSTED>20260318</DTPOSTED><TRNAMT>-71.35</TRNAMT><FITID>2026031800000000420</FITID><NAME>MADE-UP GAS & ELECTRIC</NAME></STMTTRN>
</BANKTRANLIST><LEDGERBAL><BALAMT>1640.45</BALAMT><DTASOF>20260318</DTASOF></LEDGERBAL>
</STMTRS></STMTTRNRS></BANKMSGSRSV1></OFX>Questions about converting OFX to QBO
Will the QBO duplicate transactions QuickBooks already downloaded?
Not when they carry the same ids. Every transaction keeps the FITID your bank gave it, and QuickBooks does not add a transaction whose FITID it has already imported into that account. Converting the same OFX twice gives the same file both times.
Why does QuickBooks want a QBO rather than an OFX?
QuickBooks Desktop's Web Connect import opens .qbo files and checks them for Intuit's <INTU.BID> tag, which the OFX most banks hand out does not carry. QuickBooks Online's upload screen suggests a QBO too, and names QFX and CSV as the alternatives.
Is anything in the OFX left out?
A transaction with no usable date or amount, which the preview reports. Transaction types finer than credit, debit and cheque, such as POS or ATM, are written as credit or debit. Nothing is categorised and no balance is invented: the OFX's one closing balance is the QBO's.