What is an OFX file?
An OFX file (Open Financial Exchange) is a structured text file that carries bank or credit card transactions, each with a date, amount, payee and a unique ID, so accounting and budgeting software can import them without duplicates. QFX and QBO are OFX files branded for Quicken and QuickBooks.
Updated
What’s inside an OFX file
An OFX file describes one account and its transactions over a date range. The parts that matter for bookkeeping:
| Field | What it holds | Example |
|---|---|---|
BANKID / ACCTID |
Routing and account number | 021000021 / 000123456789 |
DTSTART / DTEND |
The period covered | 20260901 / 20260930 |
STMTTRN |
One block per transaction | |
DTPOSTED |
Posting date | 20260918 |
TRNAMT |
Signed amount: negative is money out | -168.43 |
NAME / MEMO |
Payee and description | STATE FARM INSURANCE |
FITID |
A unique ID per transaction | 20260918001 |
LEDGERBAL |
Closing balance and its date | 12437.88 |
FITID is what makes OFX useful. Accounting software remembers every ID it has imported, so loading an overlapping file twice does not duplicate transactions.
A minimal transaction looks like this:
<STMTTRN>
<TRNTYPE>DEBIT
<DTPOSTED>20260918
<TRNAMT>-168.43
<FITID>20260918001
<NAME>STATE FARM INSURANCE
</STMTTRN>
Older OFX 1.x files use this SGML style, where closing tags are optional. OFX 2.x is proper XML. Most software reads both.
OFX, QFX, QBO and CSV compared
| Format | Built on | Read by | Use it when |
|---|---|---|---|
| OFX | Open standard | QuickBooks, Xero, Sage, GnuCash, Moneydance and most accounting tools | You want a bank-feed style import with duplicate protection |
| QFX | OFX + Intuit fields | Quicken | You use Quicken for Windows or Mac |
| QBO | OFX + Intuit fields | QuickBooks Desktop and Online (Web Connect) | Your bank offers it and you use QuickBooks |
| CSV | Plain table | Everything, including Excel and Google Sheets | You want to read, sort or edit the data, or the software asks for CSV |
The trade-off in practice:
- OFX carries more: the account number, the statement’s date range, a transaction type (TRNTYPE) and a unique ID (FITID) for every transaction, so software can skip duplicates.
- CSV is easier to work with: you can open it in a spreadsheet, fix a date or a description, and see exactly what will be imported.
- CSV needs mapping, OFX doesn’t: with CSV you match the date, description and amount columns on the import screen; an OFX file already says which field is which.
Have a PDF statement and need OFX? Convert it to OFX directly. Have a CSV? The free CSV to OFX converter builds one in your browser, and the OFX viewer checks a file before you import it.
Where OFX files come from
Banks generate OFX for recent activity. Look for “Download transactions” or “Export” on your account page, often listed as “Microsoft Money” or “OFX”. The window is usually limited to the last few months.
For older periods, banks keep only the monthly PDF statement. Converting that PDF gets the transactions into a spreadsheet you can import as CSV.
How to get an OFX file
If your bank offers OFX downloads, use them for recent months. For older months, the bank usually has only PDF statements, so convert those.
- Recent months: download OFX from online banking, or the QFX or QBO variant if that is what your software wants.
- Older months: convert the PDF statement to OFX with BankConv, or to QFX for Quicken.
- Check the rows first: in the preview, the last running balance should equal the statement’s closing balance.
- Already have a CSV? Load it into the free CSV to OFX tool, which builds the file in your browser.
QFX, QBO, QIF and other formats are defined in the bank statement glossary.
How to check an OFX file before importing
- Open it in a text editor and confirm
DTSTARTandDTENDcover the period you expect. - Check the sign of
TRNAMT: money out must be negative. - Compare
LEDGERBALwith the closing balance on your statement. - Import into a test company or a fresh account first if your software allows it.
Sources: OFX Work Group and current OFX specification (Financial Data Exchange)