Convert CSV to OFX when a bank only gives you a spreadsheet but your money app imports Open Financial Exchange files. This CSV to OFX converter reads a date, an amount and a payee column, plus an optional memo column, and writes an OFX 1.0.2 bank statement with one STMTTRN block per row. The result is a small, standard file you can test in your app before you load a whole year.
How to use the CSV to OFX converter
- Choose a
.csvfile with a header row. - Pick the Input date format:
isofor 2026-01-05,mdyfor 01/05/2026 ordmyfor 05/01/2026. - Type your column names if they are not
date,amountandpayee, and name a category column if you want it as the memo. - Select Process files and download
transactions.ofx.
What goes into the OFX file
The OFX 1.0.2 specification lists the parts a statement response needs. The file starts with the OFX header lines, then a sign-on response with a status code, then the bank message set. Inside it, STMTTRNRS carries a transaction ID and status, and STMTRS holds the currency, the account, the transaction list and a required ledger balance. The transaction list must start with DTSTART and DTEND. This CSV to OFX converter fills all of these in.
Each row becomes DEBIT when the amount is negative and CREDIT otherwise. Every row gets its own FITID that includes its position in the file, because apps use that ID to skip duplicates. Two identical coffees on the same day therefore import as two transactions, not one.
Worked example: two rows
date,amount,payee,category
2026-01-05,-12.50,Cafe,Food
2026-01-06,100.00,Refund,
The output lists a DEBIT of -12.50 to Cafe with memo Food, and a CREDIT of 100.00 from Refund. DTSTART is 20260105 and DTEND is 20260106. The ledger balance is 87.50, the net total of the two rows.

Placeholders you should know about
A CSV has no account details, so the account fields are placeholders: bank ID 000000000, account ID CSV, type CHECKING and currency USD. The ledger balance is the net of your rows, not your real balance, because the spreadsheet does not say what that is. Most apps ask which account to import into and ignore these values, but test one small CSV to OFX file first and check the result before importing more.
Common CSV to OFX errors
- Use a valid date in the selected format, with an end after its start. A date does not match the format you picked.
- Use a decimal amount with no currency symbol and at most two decimal places. Remove
$, thousands separators and extra decimals. - Transaction text cannot contain line breaks. A payee or memo cell has a line break in it.
- A required field or column is missing. The column names you typed are not in the header row.
Privacy: your transactions stay in your browser
The CSV to OFX converter runs with JavaScript in a background worker on this page. We checked the tool code: the statement is read from your device into browser memory, nothing is sent to a FileFix or Calcenzo server, and the only network requests the tool makes are for its own static files. Your file stays in your browser. The download is built in memory too. Bank files carry account numbers and balances, so on a shared computer clear the selection or close the tab when you are done.
Need a different import format? The CSV to QIF converter writes QIF, and the OFX to CSV converter lets you open the result and check every row.
Sources
The CSV to OFX converter follows these specifications and format guides:
- Financial Data Exchange: OFX specifications (including 1.0.2)
- IETF RFC 4180: Common Format for CSV Files
Questions about this tool
Which OFX version does it create?
OFX 1.0.2 in SGML form, with a sign-on response, status codes, a transaction list with start and end dates and a ledger balance.
Why does the file show account CSV?
A spreadsheet has no account details, so the account fields are placeholders. Your app normally asks which account to import into.
Is the ledger balance my real balance?
No. It is the net total of the rows in your CSV. Check your account balance in your app after import.
Will identical rows be merged?
No. Every row gets its own FITID, so two identical transactions on the same day both import.
Is my CSV uploaded?
No. The OFX file is built in your browser.
Review the supported formats and limitations before using an output file. File processing happens in your browser.