You downloaded transactions from your bank — or dug an old download out of a folder — and got an
.ofx or .qfx file instead of the spreadsheet you actually wanted. Maybe your bank only offers
the "Download to Quicken" option, maybe you're reconstructing months of activity for
bookkeeping, taxes, or an audit, or maybe the bank's own CSV export cuts off history the OFX
download still covers. Here's how to get those transactions into a spreadsheet without Quicken,
Money, or a paid desktop converter.
Why Excel can't just open it
An OFX file isn't a table — it's a statement wrapped in nested tags, and the common 1.x flavor
isn't even XML: it's SGML, where value tags like <TRNAMT>-84.50 never close, sitting under a
plain-text OFXHEADER:100 block that XML tools reject outright. Each transaction lives in its
own <STMTTRN> block with the date, amount, type, payee, and memo as separate tags that have to
be paired back together into one row. Excel sees none of that structure — you get an import error
or a wall of tags. For the full breakdown of the format, see
What is an OFX file?
Convert OFX to CSV in your browser
The free OFX to CSV converter on LegacyFile does the actual parsing:
- Drop your .ofx or .qfx file into the converter. Parsing happens entirely on your device — the file is never uploaded, which matters when it's your bank statement.
- It reads both OFX flavors — the 1.x SGML most banks still serve and the newer 2.x XML — using a tolerant parser that doesn't fall over on unclosed tags or vendor quirks.
- It handles bank and credit-card statements. Checking/savings downloads (STMTRS) and card downloads (CCSTMTRS) both flatten to the same clean transaction table.
- Check the statement summary — account number masked to its last 4 digits, currency, date range, and the closing ledger balance — then preview every transaction.
- Export CSV, XLSX, or JSON. The CSV/XLSX opens directly in Excel, Google Sheets, or Numbers.
What ends up in each column
| Column | Source |
| ------- | ---------------------------------------------------------------------------------- |
| Date | DTPOSTED, normalized to YYYY-MM-DD (time and timezone dropped) |
| Amount | TRNAMT, signed — deposits positive, withdrawals and charges negative |
| Type | TRNTYPE (DEBIT, CREDIT, CHECK, ATM, DIRECTDEP...) |
| Name | The payee — NAME, or the name inside a PAYEE block when the bank sends one |
| Memo | The bank's free-text memo line |
| Check # | CHECKNUM, for check transactions |
| FITID | The bank's unique transaction id — useful for de-duplicating overlapping downloads |
QFX files work exactly the same way
A .qfx is just OFX with Quicken's branding tags added (INTU.BID and friends) — Quicken cares
about the difference, but the transaction data is identical. Drop a QFX into the converter and
it parses like any OFX file; the Intuit-specific tags are simply ignored. So if your bank only
offers "Download to Quicken," take it — you're not locked into Quicken at all.
When something looks off
The converter never fails silently. A transaction missing its DTPOSTED date, carrying a transaction type outside the OFX spec, or holding an amount that won't parse gets kept and flagged in a warnings list instead of being dropped or crashing the conversion — the safest default when you're working with financial records you may not be able to download again.