Skip to main content
Bankflow

OFX: An OFX file is the banks' own interchange format.

Open Financial Exchange was published in 1997 by Microsoft, Intuit, and CheckFree so that a bank could hand a program a statement without either side agreeing on a spreadsheet layout first. It is still what Xero, Sage, Wave, GnuCash, and Moneydance would rather import than a CSV.

Runs in your browser · Nothing uploaded · No account

  • Transactions, balances, and the account
  • Two incompatible versions
  • No column mapping

Export transactions

Choose the scope, format, fields, and column order.

Scope

Selected transactions (40)

Exports only the currently selected rows.

Format

OFX

A standard bank-data file.

Fixed field set

OFX/QuickBooks files always carry date, description, and signed amount.

Include category as memoAdds an optional memo field with the current category.

Row order

Match current view

1,284 rows · 3 columns

Export OFX

One name, two file formats that do not parse alike.

OFX 1.x is SGML: tags are opened and never closed, and a strict XML parser rejects the whole document. OFX 2.x is real XML with closing tags and a declaration at the top. Both are called OFX, both use the .ofx extension, and a program written for one frequently cannot read the other. When an import fails with nothing more useful than a parse error, the version line in the header is the first thing to look at.

How it works

How to open an OFX file

  1. 1

    Read the header

    The first lines say which version you have: OFXHEADER:100 with VERSION:102 for the SGML generation, or an <?xml declaration followed by OFXHEADER="200" for the XML one.

  2. 2

    Import it into your accounting tool

    Xero takes OFX under its bank statement import, as do Sage, Wave, GnuCash, Moneydance, and most desktop ledgers. The import arrives as transactions against an account rather than as columns to map.

  3. 3

    For a spreadsheet, convert it

    Excel has no OFX importer. Convert to CSV or XLSX to get one row per transaction with dates and amounts in their own columns.

  4. 4

    For Quicken or QuickBooks, add the right header

    Quicken wants QFX and QuickBooks wants QBO. Both are this same document with Intuit identifiers added, so it is a conversion rather than a re-read.

What an OFX file carries

The account it belongs to

A bank id, an account number, and an account type sit above the transactions, so the importing program knows where the rows go without being told.

A unique id per transaction

Every transaction carries an FITID from the bank. Importing an overlapping file twice is recognised as a repeat rather than doubling your ledger.

The period and the balance

The statement block states the range it covers and the ledger balance at the end of it, which is what makes an automatic reconciliation possible at all.

Explicit dates and signed amounts

Dates are YYYYMMDD, and amounts are signed: negative out, positive in. Nothing is left to the reader's locale or to a guess about which column meant what.

A transaction type per row

DEBIT, CREDIT, CHECK, ATM, XFER, FEE, and the rest, so a program can treat a returned fee differently from a payment without parsing the description.

Version 1.x and 2.x are not interchangeable

SGML and XML are different enough that a parser built for one fails on the other. Converting between them is the fix; editing tags by hand rarely is.

The elements inside an OFX statement

What each block is for, reading from the top of the file down.

ElementWhat it holds
OFXHEADER / VERSIONWhich generation of the format the file is written in.
SONRSSign-on response: status, server date, and the institution.
BANKACCTFROMBank id, account number, and account type the statement covers.
BANKTRANLISTThe period covered, then one STMTTRN per transaction.
STMTTRNType, date posted, amount, FITID, name, and memo for a single transaction.
LEDGERBALClosing balance and the date it was taken, used to check the rows tie.
AVAILBALAvailable balance, where the bank bothers to send one.

A QFX or QBO file is this same document with Intuit identifiers added above it, which is why converting between the three does not involve re-reading any transactions.

FAQ

Common questions

What is an OFX file?

An Open Financial Exchange file: a structured export of one account's transactions over one period, including the account details, a unique id per transaction, and the closing balance. Banks and accounting programs use it to move statement data without agreeing on a spreadsheet layout.

How do I open an OFX file?

Import it into an accounting tool that reads OFX, such as Xero, Sage, Wave, GnuCash, or Moneydance. To look inside it, open it in a text editor, since it is text. For a spreadsheet, convert it to CSV or Excel first.

Can Excel open an OFX file?

Not natively. Excel has no OFX importer, and opening the file directly shows you the markup rather than a table. Convert it to CSV or XLSX to get one row per transaction.

What is the difference between OFX and QBO?

A QBO file is an OFX document with an Intuit header identifying the bank to QuickBooks. QuickBooks requires that header and refuses plain OFX, while Xero, Sage, and GnuCash want the plain OFX and ignore the Intuit fields.

Why does my program say the OFX file is invalid?

Most often a version mismatch: OFX 1.x is SGML with unclosed tags and OFX 2.x is XML, and a reader built for one rejects the other. Check the header line before assuming the file is corrupt. Truncated downloads are the other common cause.

Is OFX still used?

Yes. Direct bank feeds have replaced it for some workflows, but OFX remains the file most accounting tools accept for a manual statement import, and it is still what many banks emit from their download screens.

Read the file, then send it where it is going.

Open an OFX, QFX, QBO, or QIF file in the browser and save it as CSV, or convert a statement PDF straight to the format your ledger accepts.