OmniConvert

OFX and QFX File Format: Bank Statement Files Explained

OFX (Open Financial Exchange) is the format most banks use when you download transactions for personal finance or accounting software. It was created in 1997 by Microsoft, Intuit and CheckFree and contains your transactions together with account details and the closing balance.

QFX and QBO are not separate formats: they are OFX files with a few extra Intuit-specific fields, used by Quicken (QFX) and QuickBooks (QBO).

Example: A bank statement in OFX 1.x (SGML) with one transaction, shortened
OFXHEADER:100
DATA:OFXSGML
VERSION:102

<OFX>
  <BANKMSGSRSV1>
    <STMTTRNRS>
      <STMTRS>
        <CURDEF>USD
        <BANKACCTFROM>
          <BANKID>999999999
          <ACCTID>1234567890
          <ACCTTYPE>CHECKING
        </BANKACCTFROM>
        <BANKTRANLIST>
          <DTSTART>20240101
          <DTEND>20240131
          <STMTTRN>
            <TRNTYPE>DEBIT
            <DTPOSTED>20240115120000[-5:EST]
            <TRNAMT>-42.50
            <FITID>2024011500001
            <NAME>COFFEE ROASTERS
            <MEMO>Card purchase
          </STMTTRN>
        </BANKTRANLIST>
        <LEDGERBAL>
          <BALAMT>1520.35
          <DTASOF>20240131
        </LEDGERBAL>
      </STMTRS>
    </STMTTRNRS>
  </BANKMSGSRSV1>
</OFX>

Convert OFX / QFX files

How an OFX file is structured

Every transaction is an <STMTTRN> block inside <BANKTRANLIST>. The fields you will see most often are:

  • TRNTYPE: transaction type, such as DEBIT, CREDIT, CHECK, FEE or INT (interest)
  • DTPOSTED: posting date as YYYYMMDD, optionally followed by a time and a time zone in brackets
  • TRNAMT: amount, negative for money leaving the account
  • FITID: a unique ID per transaction. Accounting software uses it to skip duplicates when you import overlapping date ranges
  • NAME and MEMO: payee and description

OFX 1.x vs OFX 2.x

OFX 1.x files are SGML: they start with plain header lines (OFXHEADER:100, DATA:OFXSGML) and leaf elements such as <TRNAMT>-42.50 have no closing tag. OFX 2.x files are proper XML with an <?xml ?> declaration and closing tags everywhere. Many banks still produce 1.x files, which is why generic XML tools often fail to read them.

Credit card statements use the same structure with CREDITCARDMSGSRSV1 and CCSTMTRS instead of the BANK… elements.

OFX vs QFX vs QBO

Because the content is the same, converting between them is mostly a matter of the header fields. Banks that are not registered with Intuit cannot produce QFX files that Quicken will accept.

  • OFX: the open standard, read by GnuCash, Moneydance, Banktivity, Microsoft Money and many budgeting apps
  • QFX: OFX plus Intuit fields such as <INTU.BID> (the bank ID). Quicken in the US expects QFX and may reject a plain OFX file
  • QBO: the QuickBooks Web Connect variant, also OFX-based

How to open an OFX file

  • Import it into finance software: Quicken, QuickBooks, GnuCash, Moneydance or Banktivity
  • Read it in any text editor: it is plain text
  • Convert it to CSV or JSON to work with the transactions in Excel, Google Sheets or your own code

Frequently Asked Questions

What is the difference between OFX and QFX?
QFX is OFX with extra Intuit-specific fields, mainly the bank ID <INTU.BID>. The transactions are stored identically. Quicken in the US expects QFX files; most other finance software reads plain OFX.
Can I open an OFX file in Excel?
Excel cannot read OFX directly. Convert the file to CSV first, then open the CSV in Excel or Google Sheets. Each transaction becomes a row with date, amount, payee and memo.
Why are some of my transactions missing after import?
Finance software skips transactions whose FITID it has already seen, to avoid duplicates. If a bank reuses IDs or your software has old transactions with the same ID, those rows are skipped.

More format guides