Skip to content
Banking Converter

What is an OFX file?

By the Banking Converter editorial team

Published

An OFX file is a bank statement or transaction download in the Open Financial Exchange format, a specification created in 1997 by Microsoft, Intuit and CheckFree so that personal finance and accounting software could exchange data with banks. It contains account details, a date range, a list of transactions each with a unique id, and the ledger balance. Version 1.x files are SGML-like text; version 2.x files are XML.

What is inside

An OFX bank statement response has three layers: a sign-on block with the server date and status, a statement block identifying the account and currency, and the transaction list bounded by start and end dates. The example below is an abbreviated OFX 2.x document.

Abbreviated OFX 2.2 bank statement
<?xml version="1.0" encoding="UTF-8"?>
<?OFX OFXHEADER="200" VERSION="220" SECURITY="NONE" OLDFILEUID="NONE" NEWFILEUID="NONE"?>
<OFX>
  <SIGNONMSGSRSV1><SONRS><STATUS><CODE>0</CODE><SEVERITY>INFO</SEVERITY></STATUS>
    <DTSERVER>20260901120000.000[0:GMT]</DTSERVER><LANGUAGE>ENG</LANGUAGE></SONRS></SIGNONMSGSRSV1>
  <BANKMSGSRSV1><STMTTRNRS><TRNUID>1</TRNUID>
    <STATUS><CODE>0</CODE><SEVERITY>INFO</SEVERITY></STATUS>
    <STMTRS>
      <CURDEF>USD</CURDEF>
      <BANKACCTFROM><BANKID>000000000</BANKID><ACCTID>****2210</ACCTID><ACCTTYPE>CHECKING</ACCTTYPE></BANKACCTFROM>
      <BANKTRANLIST>
        <DTSTART>20260801120000[0:GMT]</DTSTART><DTEND>20260831120000[0:GMT]</DTEND>
        <STMTTRN><TRNTYPE>CREDIT</TRNTYPE><DTPOSTED>20260802120000[0:GMT]</DTPOSTED>
          <TRNAMT>2500.00</TRNAMT><FITID>a91f…</FITID><NAME>PAYROLL DEPOSIT ACME DESIGN LLC</NAME></STMTTRN>
      </BANKTRANLIST>
      <LEDGERBAL><BALAMT>9300.63</BALAMT><DTASOF>20260831120000[0:GMT]</DTASOF></LEDGERBAL>
    </STMTRS>
  </STMTTRNRS></BANKMSGSRSV1>
</OFX>

The fields that matter

TagMeaningNotes
CURDEFCurrency of all amountsISO 4217 code; OFX has no multi-currency rows
BANKID / ACCTID / ACCTTYPERouting number, account number, account typeACCTTYPE is CHECKING, SAVINGS, MONEYMRKT or CREDITLINE
DTSTART / DTENDPeriod coveredImporters use these to decide what is new
TRNTYPETransaction kindCREDIT, DEBIT, CHECK, XFER, FEE, INT, DEP, PAYMENT and others
DTPOSTEDPosting date and timeYYYYMMDDHHMMSS with optional timezone; noon GMT avoids date shifts
TRNAMTSigned amountPositive in, negative out; charges negative on card accounts
FITIDFinancial institution transaction idMust be unique per account; importers use it to skip duplicates
NAME / MEMOShort payee (32 chars) and longer memo (255 chars)Many importers show NAME and hide MEMO
CHECKNUMCheck numberPresent for CHECK transactions
LEDGERBALBalance as of a dateUsed by importers to verify the account

Versions 1.x and 2.x

  • OFX 1.x (1997 to 2003): SGML-style text with a plain-text header. Tags need not be closed. QBO and QFX files are OFX 1.02 documents with Intuit additions.
  • OFX 2.x (2003 onwards): well-formed XML with an XML processing-instruction header; 2.2 was published in 2016. Most modern importers read both.
  • Since 2019 the specification is maintained by the Financial Data Exchange (FDX) after the OFX consortium joined it.

The OFX converter writes version 2.2 and validates the output by parsing it back with a reader that also understands 1.x.

Software that reads OFX

Quicken (as QFX), Microsoft Money (historically), GnuCash, Moneydance, Banktivity, YNAB (via import), Xero, Sage, MYOB, Wave and many bank feeds accept OFX statement files. QuickBooks prefers the QBO variant. See what is a QBO file and what is a QFX file.

Frequently asked questions

Can I open an OFX file in Excel?

Excel does not read OFX directly. Since it is text, you can open it in a text editor, but for a spreadsheet you should convert the statement to CSV or Excel instead.

Why does my OFX file have BANKID 000000000?

The routing number was not printed on the statement and the converter does not guess one. The placeholder fails the routing checksum, which keeps it from matching a real bank, and most importers accept it.

About the author

The Banking Converter editorial team is the engineering group that builds and tests the conversion engine: the parsers for regional date and number formats, the reconciliation checks and the CSV, Excel, JSON, OFX and QBO exporters. Guides describe what the software does and what the formats require; they are not financial, legal or tax advice.