Format guide

OFX to Excel: How to Open an OFX File in Excel

Excel can't read .ofx files natively. Here are three ways to get the data into a spreadsheet — one takes about ten seconds.

100% private
Never uploaded
Instant
Runs in your browser
CSV & Excel
Real spreadsheet output
No signup
No account, no card
Convert a OFX file to Excel

Drop your file below — runs entirely in your browser, nothing is uploaded.

Drag and drop your OFX file hereor click to browse your files OFXExcel

Why Excel can't open a OFX file

You downloaded an .ofx file from your bank, tried to open it in Excel, and got either nothing or a screen of angle brackets. Nothing is broken. An OFX file is a financial data format, not a spreadsheet, and Excel has never shipped an importer for it.

An .ofx file is Open Financial Exchange data — the bank-neutral standard that Quicken's QFX and QuickBooks' QBO are both built on, and what most banks emit when the download isn't tied to one product. Whatever produced it, the contents are Open Financial Exchange data — markup designed for software to read rather than people. Excel has no importer for it, so you get one of three unhelpful outcomes.

1
Double-clicking does nothing useful
Windows and macOS hand the file to whichever accounting app claimed the extension, or offer an "open with" prompt. Neither gets you a spreadsheet.
2
Renaming it to .xml sort of works
Excel will open it as XML and show a tree of tags. Every transaction is there, spread across rows in a shape nobody would call usable.
3
Older files fail hardest
Many banks still emit OFX 1.x, which is SGML rather than XML — leaf tags often have no closing tag at all. Excel's XML importer rejects those outright.
The short version
Use the converter above — it reads .ofx, .ofx and .qbo alike, handles unclosed SGML tags, and produces a real .xlsx workbook. The rest of this page explains what's inside the file and what to do when the output looks wrong.

What's inside the file

Open one in a plain text editor and you'll find something like this. Each transaction is a STMTTRN block, inside a statement section identifying the account:

Inside a .ofx file
<BANKACCTFROM>
  <BANKID>021000021
  <ACCTID>1234567890
  <ACCTTYPE>CHECKING
</BANKACCTFROM>
<BANKTRANLIST>
  <STMTTRN>
    <TRNTYPE>DEBIT
    <DTPOSTED>20250601120000[0:GMT]
    <TRNAMT>-45.20
    <FITID>202506010001
    <NAME>STARBUCKS STORE 04821
    <MEMO>CARD PURCHASE
  </STMTTRN>
</BANKTRANLIST>

Note the missing closing tags on leaf elements — valid OFX 1.x, and exactly what breaks generic XML tools. Note DTPOSTED too: a date, a time and a timezone marker in one field. Only the first eight digits matter for bookkeeping, which is why a good converter strips the rest and a lazy one hands you the raw string in a date column.

FITID is worth keeping. It's the bank's unique ID for that transaction, and it's what accounting software uses to avoid importing the same transaction twice.

Method 1: use the converter on this page

1
Drop in the file
.ofx, .ofx and .qbo all work — same structure underneath. It's read in your browser; nothing is sent to a server, which you can confirm in the Network tab.
2
Check what was found
You'll see the transaction count and any warnings. A file containing more than one account says so, and records with missing dates or amounts are reported rather than dropped silently.
3
Download the workbook
An .xlsx with Date, Payee, Description, Category, Transaction ID, Amount, Dr/Cr and Balance. Multi-account files get one sheet per account.

Method 2: rename to .xml and import manually

Worth knowing if you'd rather not use a tool at all. Copy the file, change the extension to .xml, open it in Excel and choose "As an XML table". Excel builds a table from the tags.

Two caveats. It only works on OFX 2.x files with proper closing tags — a parse error means your file is SGML-style and this route is closed. And you get raw fields: dates as 20250601120000, one column per tag, account details interleaved with transactions. Cleaning that up by hand takes longer than the conversion did.

Where the manual route breaks down
Unclosed SGML tags stop Excel's importer dead. Multi-account files interleave two statements into one table with no way to tell them apart. Dates and amounts arrive as text, so sorting and totalling misbehave until you convert them. And it all has to be redone next month, on the next file.

Method 3: when your file is actually a PDF

A common surprise: people looking for a OFX-to-Excel converter often don't have a OFX file. Most banks only offer structured downloads for recent months — beyond that window you get a PDF, which no format converter can help with.

That needs a statement parser: something that infers the column layout from the document itself, handles scanned pages with OCR, and checks the running balance reconciles so a misread row surfaces instead of quietly landing in your books.

MethodHandles scansUploads your fileEffortOutput
Converter on this pagen/aSecondsClean .xlsx, one sheet per account
Rename to .xmln/a10–20 min per fileRaw tags, manual cleanup
PDF statement converterSecondsExcel, CSV, QBO, OFX, QIF

Only have a PDF statement? That converts too.

A OFX file means your bank gave you structured data — which most banks only do for the last few months. Beyond that you get a PDF, and a PDF won't open in Excel. BalanceExtract reads those directly: it works out the column layout from the document itself, handles scanned statements with OCR, checks that every running balance reconciles, and flags any row it isn't confident about before you export.

Same Excel output, same on-device processing, nothing uploaded.

Convert a PDF statement6 pages free, no signup, no card

Troubleshooting your converted file

Dates look like 20250601120000

That's the raw DTPOSTED field: date, then time, sometimes a timezone marker like [0:GMT]. Only the leading eight digits are meaningful. The converter here keeps just the date; if another tool gave you the full string, you're seeing the field untouched.

Amounts are negative when I expected positive

OFX signs from the account's point of view — money leaving is negative, money arriving is positive. Credit-card files follow the same rule, so a purchase is negative and a payment towards the card is positive. It reads backwards at first but it's consistent.

There's a Transaction ID column I didn't ask for

That's FITID, and you want it. Accounting software uses it to spot transactions it has already imported. Deleting the column before importing is how you end up with every transaction twice.

Two accounts are mixed together

Your download bundled several statements. Each account gets its own sheet in the Excel export here — if a tool gave you one interleaved list, it read the transactions without reading the account sections around them.

The file is .ofx or .qbo, not .ofx

Same format underneath, different extension and header. The converter above accepts all three, so there's nothing to change.

Some rows are missing

Check the warnings shown after conversion. Records with an unparseable date or amount are reported and counted rather than dropped silently — a converter that shows no warnings and fewer rows than you expected is the one to distrust.

Once the data is in Excel

Build a pivot table

Select the table, Insert → PivotTable, then Payee as rows and Amount as values. Two clicks to see where the money actually went, which is usually the reason for the conversion.

Use the Category column

Transactions are categorised on your device as part of the conversion. Sort or filter by it to split business from personal, or sanity-check a month before it reaches your books.

Reconcile against your records

The Balance column carries the bank's own running balance. If it doesn't move by the Amount on every row, something upstream is wrong — a genuinely useful check that almost nobody uses.

Import into accounting software

QuickBooks, Xero, Wave and FreshBooks all take CSV. To skip column mapping, convert to native QBO or OFX instead and import that.

Frequently asked questions

Why won't Excel open my OFX file?
An OFX file isn't a spreadsheet. Open Financial Exchange is a markup format for moving transactions between financial software, and older versions are SGML rather than XML. Excel has no importer for it, so double-clicking either does nothing or opens a wizard that can't parse the tags.
Can I convert OFX to Excel for free?
Yes. Drop the file into the converter on this page and download an .xlsx workbook. No signup and no upload — the conversion runs in your browser, so the file never leaves your device.
Is there an OFX add-in for Excel?
There are third-party add-ins, but they install into Excel and usually cost money, and several send your file to a service to do the parsing. Converting in the browser avoids both the install and the transmission.
What's the difference between OFX, QFX and QBO?
OFX is the open standard. QFX adds Quicken-specific headers, QBO adds QuickBooks ones. The transaction structure is identical in all three, which is why a single reader handles them and why this converter accepts any of them.
Why are my dates showing as 20250601120000?
That's the raw DTPOSTED field — a date, then a time, sometimes a timezone marker like [0:GMT]. Only the leading eight digits matter for bookkeeping, so this converter strips the rest.
My file has two accounts in it. What happens?
They're kept separate. Bank downloads often bundle several statements, each as its own section. Every transaction is tagged with its account, and the Excel export puts each account on its own sheet rather than interleaving two date sequences.
What if my bank only gave me a PDF?
Then you don't have an OFX file, and no format converter will help. You need a statement parser that reads the PDF's layout — see the PDF section on this page.

How BalanceExtract compares

Honest side-by-side write-ups, including where each of them is the better choice.

Other converters