OFX to CSV Converter
Turn an OFX or QFX bank statement into a CSV table in your browser: the seven columns the file actually carries, amounts as plain decimals, dates that sort, and nothing sent anywhere.
Your statement stays on this device.
How to Convert OFX to CSV
An OFX to CSV conversion here runs in one tab: the statement is read where it sits, the records become rows, and the file you download is the only copy that goes anywhere.
- 1Choose your .ofx or .qfx file, or drag it onto the drop area
- 2Convert; every transaction record in the file becomes a row
- 3Check the count it reports against the statement, then download the .csv
Amounts come out as plain decimals, so a spreadsheet reads a column of them as numbers rather than as text, and dates come out as YYYY-MM-DD, which sorts correctly in any tool. What is not in the file: a running balance and a currency, because neither one belongs to a single row.
What an OFX Statement Holds, and What a CSV Keeps
OFX is not a spreadsheet format that someone made awkward. It is a message format: a statement arrives as tagged records, one block per transaction, and each block carries its own date, amount, payee and reference. That is why a bank can hand you a .ofx file and why a double-click on it opens a wall of tags instead of a table. An OFX to CSV conversion is the act of flattening those records into a grid, and flattening is a decision with consequences: whatever belongs to a record survives, and whatever belongs to the statement as a whole has nowhere to sit. This page converts in that direction only, and it never invents a value the file did not carry.
OFX is a published, maintained format rather than a bank's private export: it is looked after by the OFX Work Group at the Financial Data Exchange, which is why statements from different banks follow the same shape.
Records or Rows: Why a .ofx Is Not a Table Yet
Two shapes are at work in this conversion, and the difference between them explains almost every surprise in the result. A statement is a stream of records, each one self-describing, so it can carry a field that appears in one record and not the next. A CSV is a grid, where every row has the same columns and an empty cell is the only way to say nothing. An OFX to CSV conversion means deciding, once, which fields are columns, and then living with that decision for every row in the file. If you want the same rows with formatting, formulas or more than one sheet, the XLSX version of this page writes a workbook instead of a CSV.
The Seven Columns, and Where Each One Comes From
Every column in the CSV is a field the statement already held. This is the mapping an OFX to CSV conversion follows, in the order the columns are written.
| CSV column | Which OFX tag it comes from |
|---|---|
| Date | DTPOSTED, the date the bank posted the transaction, rewritten as YYYY-MM-DD so that a column of dates sorts in order. |
| Type | TRNTYPE, the kind of movement: a debit card payment, a cheque, a transfer, a fee. |
| Amount | TRNAMT, kept with the sign the file used and written as a plain decimal. Money out is usually negative, but the sign is read rather than assumed. |
| Name | NAME, or PAYEE in files that use the older tag, which is the name on the register line. |
| Memo | MEMO, when the bank sent one along with the transaction. It is often empty on card payments. |
| Transaction ID | FITID, the statement's own id for the record. A file without one falls back to CHECKNUM. |
| Account | ACCTID, taken from the statement's own account block rather than from the account at the other end of a transfer. |
When the Result Is Empty or Shorter Than Expected
Almost every surprising result comes from the file rather than from the OFX to CSV conversion itself. These are the ones worth knowing before you assume something is broken.
What the CSV Is Good For
A CSV is the plainest thing a table can be, which is why the output of an OFX to CSV conversion goes almost anywhere.
- Import the rows into accounting software that takes a CSV but not an OFX file
- Build a pivot table by month, by payee or by type
- Reconcile the statement against a second export from the same account
- Hand an accountant a file they can open without an account of their own
- Keep an archive that will still open in ten years
OFX to CSV Questions
An OFX file is a run of tagged records, not a table, so a spreadsheet opens it as one column of tags. Converting it to CSV or XLSX is what turns each record into a row, and this page does that in your browser.
Not as a table. Excel reads it as text, because the file is not delimited by commas or tabs. Once it is a CSV, Excel, Sheets and Numbers all open it directly.
Seven: Date, Type, Amount, Name, Memo, Transaction ID and Account. They are the fields a statement's records carry, and the field guide below says which tag each one comes from.
They are not in the CSV by design. A balance belongs to the statement rather than to any one transaction, and a table of transactions has no column to put it in, so the file keeps only what belongs to a row.
A brokerage statement keeps its trades in their own records rather than in transaction rows, so only the cash movements can be read. When the converter finds none, it says so instead of leaving you with an unexplained empty table.
No. The file is read in the page you are looking at, and no copy of it leaves your device.
Not on this page: it reads .ofx and .qfx statements, which is what most banks hand you. A .qbo file is a QuickBooks download rather than a bank one, and the QBO to CSV page reads that format.
Turn a statement into a plain table
No account, nothing uploaded, and the same seven columns every time.