A year of statements for an accountant
Convert each monthly OFX in turn and concatenate the results. The account number column keeps rows from different accounts separable once they sit in one sheet.
Turn an OFX bank statement into a spreadsheet-ready CSV, without the file leaving your browser.
Maintained by Roshan · Page and browser-local behavior last reviewed August 31, 2026.
Reads an OFX statement in this tab and writes the transactions out as CSV. The file is never uploaded, which is the point: a statement names every counterparty you paid.
Checked against a 1.0.2 SGML export with unclosed leaf tags and a 2.1.1 XML export from a UK bank. The closing balance in LEDGERBAL uses the same amount tag as a transaction and is correctly excluded from the row count; timezone suffixes on DTPOSTED resolve to the posting day rather than shifting it.
More in this category
Find related browser-local tools for nearby tasks without starting another search.
Browse all developer and data tools toolsOpen Financial Exchange is the format banks settled on for handing account data to software rather than to people. Your bank generates it for accounting packages, and it holds everything a statement does — posting date, payee, memo, signed amount, transaction type and a unique identifier per row — in a structure a program can read exactly. What it does not do is open in a spreadsheet. Double-clicking an .ofx file gets you a chooser dialog or a wall of angle brackets, which is why so many people end up retyping a month of transactions by hand. This converter reads the file in your browser tab and writes the transactions out as CSV. There is no upload step, and this site operates no endpoint that could accept one. That matters more here than on most pages: a statement is a complete list of everyone you paid and how much, which is among the last things anyone should hand to an unfamiliar website in exchange for a download link.
Convert each monthly OFX in turn and concatenate the results. The account number column keeps rows from different accounts separable once they sit in one sheet.
Convert, sort by amount, and the largest debits are visible in seconds. The credits, debits and net movement are shown before you download, so an obviously wrong total is caught before the file goes anywhere.
Because it is a tagged data format rather than a table. Excel has no importer for it, and renaming the file to .csv produces a single column of tags. The structure has to be read and flattened first, which is what this does.
It is the financial institution transaction ID, a unique reference the bank assigns to each entry. It is the reliable key when matching this statement against a ledger, because two coffees on the same day for the same amount are otherwise indistinguishable.
Yes. OFX stores a signed amount, and the sign is preserved exactly as written, so debits stay negative. The summary totals credits and debits separately and shows the net movement so you can check the file against the statement you were sent.
Yes. Each account block is read in turn and the account number travels with every row, so the combined CSV can be filtered back into separate accounts afterwards.
Convert a Quicken QFX file to CSV in your browser. Works without a Quicken subscription. No upload, no bank login, no account needed.
Convert a QuickBooks .qbo Web Connect file to CSV in your browser. No upload, no QuickBooks licence, no bank feed. See every transaction before you import.
Convert a QIF file to CSV in your browser, with the day/month order made explicit instead of guessed. No upload, no account, no bank connection.
Reconcile bank, ledger, processor and marketplace exports in your browser. Write your own matching rules, review the exceptions, and export a full audit package. The files are not uploaded.
Convert CSV to a JSON array locally. Parse quoted commas, embedded newlines, BOM files, duplicate headers, sparse rows, and optional safe value types.