Skip to main content
9 min read

What is OFX Format?

OFX (Open Financial Exchange) is an industry-standard data format for electronic exchange of financial information between banks, software vendors, and consumers. Created in 1997 by Microsoft, Intuit, and CheckFree (now Fiserv), OFX uses SGML (version 1.x) or XML (version 2.x) to represent bank statements, credit card transactions, investment positions, and bill payment data.

History of OFX

Open Financial Exchange was born from the merger of two competing standards. In the mid-1990s, Microsoft developed Open Financial Connectivity (OFC) for Microsoft Money, while Intuit and CheckFree backed their own specification. In 1997, all three companies agreed to unify their efforts, producing OFX 1.0 — a specification that would become the backbone of online banking data exchange for the next three decades.

OFX 1.0 through 1.6 used SGML (Standard Generalized Markup Language) as their underlying syntax. SGML allowed the format to omit closing tags, which made files smaller but harder to parse with standard XML tools. In 2004, the OFX consortium released OFX 2.0, which migrated to well-formed XML. This transition made OFX files compatible with the vast ecosystem of XML parsers available in every programming language.

The specification is maintained by the OFX consortium, a group of financial institutions and technology companies. As of 2026, the latest version is OFX 2.2, which added support for tax reporting, loan accounts, and enhanced security mechanisms. Despite the availability of newer versions, the majority of banks still serve OFX 1.x files due to the massive installed base of legacy software.

Intuit created two proprietary derivatives of OFX: QFX (for Quicken) and QBO (for QuickBooks). Both add Intuit-specific headers — primarily the INTU.BID identifier — to an otherwise standard OFX file. This means that while OFX is an open standard, the two most popular accounting platforms in the United States require proprietary modifications to accept it.

OFX file structure

An OFX file consists of two parts: a plain-text header section and a structured SGML or XML body. The header declares the OFX version, character encoding, and security level. The body contains one or more message sets — sign-on responses, bank statement responses, credit card statement responses, or investment position reports.

The most common use case is a bank statement download, which uses the BANKMSGSRSV1 message set. Within it, the STMTRS (Statement Response) element contains account identification, the transaction list, and the ledger balance.

Example OFX 1.x file (SGML)

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>20260315120000
<LANGUAGE>ENG
<FI>
<ORG>First National Bank
<FID>10001
</FI>
</SONRS>
</SIGNONMSGSRSV1>
<BANKMSGSRSV1>
<STMTTRNRS>
<TRNUID>1001
<STATUS>
<CODE>0
<SEVERITY>INFO
</STATUS>
<STMTRS>
<CURDEF>USD
<BANKACCTFROM>
<BANKID>021000021
<ACCTID>123456789
<ACCTTYPE>CHECKING
</BANKACCTFROM>
<BANKTRANLIST>
<DTSTART>20260301
<DTEND>20260315
<STMTTRN>
<TRNTYPE>DEBIT
<DTPOSTED>20260305
<TRNAMT>-1250.00
<FITID>202603050001
<NAME>Office Rent March
<MEMO>Monthly lease payment
</STMTTRN>
<STMTTRN>
<TRNTYPE>CREDIT
<DTPOSTED>20260310
<TRNAMT>8500.00
<FITID>202603100002
<NAME>Client Payment - Acme Corp
<MEMO>Invoice #2048
</STMTTRN>
</BANKTRANLIST>
<LEDGERBAL>
<BALAMT>24680.50
<DTASOF>20260315
</LEDGERBAL>
</STMTRS>
</STMTTRNRS>
</BANKMSGSRSV1>
</OFX>

Notice the SGML syntax: opening tags like <TRNAMT> have no corresponding closing tag. The value follows immediately on the same line. This is valid SGML but will cause errors in standard XML parsers — a frequent source of confusion for developers encountering OFX for the first time.

Each transaction block is wrapped in <STMTTRN>...</STMTTRN> tags. The FITID (Financial Institution Transaction ID) is a unique identifier assigned by the bank to each transaction — it is what prevents duplicate imports when the same file is loaded multiple times.

Key OFX tags reference

TagDescriptionExample value
STMTTRNTransaction block wrapper(container element)
TRNTYPETransaction typeDEBIT, CREDIT, CHECK, ATM, POS
DTPOSTEDTransaction date (YYYYMMDD)20260315
TRNAMTAmount (signed decimal)-1250.00
FITIDUnique transaction ID from the bank202603050001
NAMEPayee or transaction nameOffice Rent March
MEMOAdditional description or memoMonthly lease payment
BANKIDRouting / sort code021000021
ACCTIDAccount number123456789
ACCTTYPEAccount typeCHECKING, SAVINGS, CREDITLINE
CURDEFCurrency code (ISO 4217)USD, EUR, GBP
BALAMTLedger balance amount24680.50

Dates in OFX always use the YYYYMMDD format (optionally followed by HHMMSS for timestamps). Unlike QIF, there is no ambiguity between American and European date conventions — YYYYMMDD is unambiguous worldwide.

OFX 1.x (SGML) vs OFX 2.x (XML)

The most significant technical distinction in the OFX ecosystem is between versions 1.x and 2.x. OFX 1.0 through 1.6 use SGML, which allows tags to omit their closing counterparts. In practice, this means a value like <TRNAMT>-1250.00 is complete — no </TRNAMT> is needed. Container elements like STMTTRN do have explicit closing tags.

OFX 2.0 and later require well-formed XML with proper closing tags on every element. The header also changes from the plain-text key-value format to an XML processing instruction. While OFX 2.x is easier to parse with standard tools, the vast majority of banks still export OFX 1.x because of backward compatibility with older accounting software.

If you are building software that reads OFX files, plan to handle both variants. The simplest approach is to detect the header format — if the file starts with OFXHEADER:100, it is SGML; if it starts with <?xml or <?OFX, it is XML. Many parsers pre-process SGML files by inserting closing tags before feeding the result to a standard XML parser.

Software that supports OFX

SoftwareImport OFXExport OFXNotes
QuickenRequires QFXNoNeeds INTU.BID header; plain OFX rejected since 2005
QuickBooks DesktopRequires QBONoNeeds Intuit headers; convert OFX to QBO first
QuickBooks OnlineRequires QBONoUpload via Banking > Upload Transactions
GnuCashYesNoFull OFX 1.x/2.x support via File > Import > OFX/QFX
MoneydanceYesNoReads both OFX and QFX transparently
XeroYesNoImport via bank feeds or manual upload
Microsoft MoneyYesYesDiscontinued but fully supported OFX natively
KMyMoneyYesNoOpen-source KDE finance application

The notable gap in this table is Intuit's own products — both Quicken and QuickBooks reject standard OFX files unless they contain Intuit-specific headers. This commercial decision drives much of the demand for OFX-to-QFX and OFX-to-QBO converters.

OFX vs QFX vs QIF vs QBO

Understanding the relationship between these four formats is essential for anyone working with financial data. OFX is the open standard, while QFX and QBO are Intuit's proprietary wrappers around it. QIF is an older, unrelated plain-text format.

FeatureOFXQFXQIFQBO
Full nameOpen Financial ExchangeQuicken Financial ExchangeQuicken Interchange FormatQuickBooks Web Connect
OwnerOFX ConsortiumIntuitIntuitIntuit
SyntaxSGML (1.x) or XML (2.x)SGML (OFX 1.x based)Plain text, line prefixesSGML (OFX 1.x based)
Date formatYYYYMMDDYYYYMMDDMM/DD/YYYY or DD/MM/YYYYYYYYMMDD
Account metadataBANKID, ACCTID, ACCTTYPESame + INTU.BIDNoneSame + INTU.BID
DeduplicationFITID per transactionFITID per transactionNoneFITID per transaction
Closing balanceLEDGERBAL with BALAMTSame as OFXNot includedSame as OFX
Target softwareAny OFX-compatibleQuicken onlyLegacy personal financeQuickBooks only
Open standardYesNo (proprietary)No (deprecated)No (proprietary)

In practice, OFX serves as the base layer. Banks generate OFX data, and Intuit's products expect that data to be wrapped with their specific headers. If your bank provides OFX but you use Quicken, you need a OFX to QFX converter. If you use QuickBooks, you need an OFX to QBO converter.

How to open and convert OFX files

OFX files are plain text (SGML or XML), so you can open them in any text editor to inspect the raw transaction data. Look for <STMTTRN> blocks to find individual transactions.

For spreadsheet analysis, convert OFX to a tabular format. FinanceConvert's OFX to CSV converter extracts all STMTTRN fields into clean columns: Date, Description, Memo, Debit, Credit, Balance, Currency, and FITID. For Excel with native formatting, use the OFX to Excel converter.

For QuickBooks import, OFX files must be converted to QBO format with the required Intuit headers. The OFX to QBO converter adds the OFXHEADER preamble and INTU.BID that QuickBooks expects. For Quicken users, the OFX to QFX converter performs the same function.

To create archival transaction records, the OFX to PDF converter generates a formatted, printable statement document from your OFX data.

Common issues with OFX files

SGML parsing failures. The most common technical problem is trying to parse OFX 1.x files with a standard XML parser. Since SGML omits closing tags, XML parsers will throw syntax errors. You need either a dedicated OFX parser or a pre-processor that adds the missing closing tags before XML parsing.

Missing or invalid FITID. Some banks generate duplicate FITIDs or leave them empty. Since the FITID is the primary mechanism for deduplication, missing FITIDs can cause duplicate transactions on import. If you notice duplicates after importing OFX files, check the FITID values in a text editor.

Encoding mismatches. The OFX header declares the character encoding (typically USASCII or UTF-8), but some banks include characters outside the declared encoding — accented characters in payee names, for example. This can cause garbled text or import failures in strict parsers.

Date format inconsistencies. While the OFX specification mandates YYYYMMDD, some bank implementations append timezone offsets (e.g., 20260315120000[-5:EST]) that not all parsers handle correctly. Others omit the time portion entirely when the spec expects it.

Intuit software rejection. As noted above, Quicken and QuickBooks reject standard OFX files. The error messages are often cryptic — Quicken may display "This file is not a valid Quicken file" without explaining that the INTU.BID header is missing. Converting to QFX or QBO resolves the issue.

Frequently asked questions

What banks support OFX?
Most major banks worldwide support OFX for transaction downloads. In the United States, institutions like Chase, Bank of America, Wells Fargo, Citi, and thousands of credit unions provide OFX downloads through their online banking portals. The OFX directory maintained by the OFX consortium lists participating institutions.
Is OFX the same as QFX?
Almost, but not quite. QFX is a proprietary Intuit variant of OFX that adds the INTU.BID (Intuit Business Identifier) header. The transaction data is identical, but Quicken software requires the INTU.BID to accept an import. Other software like GnuCash and Moneydance reads both OFX and QFX interchangeably.
How to import OFX into QuickBooks?
QuickBooks does not natively import plain OFX files. Convert OFX to QBO format first using a tool like FinanceConvert, which adds the required Intuit headers. Then import via File > Import > Web Connect (.QBO) in QuickBooks Desktop, or use Banking > Upload Transactions in QuickBooks Online.
Is OFX secure?
OFX supports SSL/TLS encryption for data in transit when downloaded directly from a bank via Direct Connect. However, the OFX file itself stores account numbers and transaction details in plain text (SGML or XML). Treat stored OFX files as sensitive documents and secure them accordingly.
Can I open OFX in Excel?
Excel cannot natively parse OFX files into a usable spreadsheet. You can open the raw SGML or XML text, but it will not be organized into rows and columns. Convert OFX to CSV or XLSX first using FinanceConvert to get clean columns for Date, Description, Amount, and Balance.
FC

FinanceConvert Engineering Team

We parse and convert thousands of OFX files daily across both SGML and XML variants. This guide reflects our direct experience with real-world OFX data from hundreds of financial institutions.