QIF / OFX to CSV Converter
Turn a QIF, OFX or QFX bank export into a clean, normalized CSV — Date, Amount, Payee, Memo, Category, Check Number, Type and FITID — ready to import into budgeting apps and spreadsheets. Runs entirely in your browser: nothing is uploaded.
QIF / OFX / QFX to CSV converter
Paste a bank or accounting export in QIF (Quicken Interchange Format) or OFX/QFX (Open Financial Exchange) and get a clean, normalized CSV — the same columns every time, ready to import into a budgeting app or open in a spreadsheet. Nothing is uploaded: the conversion runs locally in WebAssembly, so your financial data never leaves your device.
What you get
Every transaction becomes one CSV row with a fixed column set:
Date, Amount, Payee, Memo, Category, Check Number, Type, FITID
Columns that don't apply to your format stay blank — QIF has no Type/FITID,
OFX statements usually carry no Category. Turn on Drop empty columns to
remove any column that's blank for every row (handy for a tidy import), or leave
it off to keep the full 8-column layout so a saved import template always lines up.
How it works
- Input format — leave it on auto and the tool detects QIF vs OFX from the
content; force
qiforofxif you prefer.ofxalso handles.qfxfiles and both OFX 1.x (SGML) and OFX 2.x (XML). - Date column format — QIF dates are ambiguous (is
03/04March 4th or April 3rd?) and OFX dates areYYYYMMDD. Pick ISO2010-03-15(the default, and the safest for imports), USMM/DD/YYYY, EUDD/MM/YYYY, or raw to keep the source text untouched. QIF month/day order is auto-detected — US month-first unless the first field is greater than 12. - Amounts — thousands separators are stripped (
1,250.00becomes1250.00) and the sign is preserved. Toggle Flip amount signs if your bank exports debits as positive (or your budgeting app expects the opposite convention). - Delimiter — comma (default), semicolon, tab (TSV), or pipe.
Worked example
This QIF input:
!Type:Bank
D03/15/2010
T-50.00
PTarget Store
MWeekly run
LFood:Groceries
N1002
^
with ISO dates and Drop empty columns on becomes:
Date,Amount,Payee,Memo,Category,Check Number
2010-03-15,-50.00,Target Store,Weekly run,Food:Groceries,1002
Limits and edge cases
- Convert one export at a time — paste a single QIF or OFX file's contents.
- Split transactions (QIF
S/$lines) are exported as one row per transaction; when the transaction has no top-level category, the split categories are joined into theCategorycell (e.g.Food; Household). - A date that can't be parsed is left as its raw source text rather than failing the whole file.
- Investment (
!Type:Invst) QIF blocks and OFX investment statements aren't broken out into buy/sell columns — banking/credit-card transactions are the supported shape.
Is my bank data uploaded anywhere?
No. The converter is compiled to WebAssembly and runs entirely in your browser tab. Your QIF/OFX contents are never sent to a server.
What's the difference between QIF, OFX and QFX?
QIF is Quicken's older plain-text format — one line per field with a
single-letter code (D date, T amount, P payee), records separated by ^.
OFX is a tag-based format (SGML in 1.x, XML in 2.x) used by most bank
"download transactions" buttons. QFX is Intuit's OFX variant; it parses the
same way here — select ofx (or leave it on auto).
Why is my Date column empty or unchanged?
If a date can't be parsed it's kept as the original text so nothing is lost. Try the raw date option to see exactly what the file contained, or switch between US and EU if the month and day look swapped — QIF files don't state their date order, so the tool assumes month-first unless the first number is above 12.
Can I convert several files at once, or export to Excel?
This tool converts one export at a time to CSV. To combine several files, convert
each and stack the rows; to get a .xlsx workbook, run the resulting CSV through
the CSV-to-XLSX tool. Multi-file batch conversion and direct Excel/QBO output need
a server and aren't part of this in-browser tool.
My budgeting app wants expenses as positive numbers — can it do that?
Yes. Turn on Flip amount signs and every amount's sign is reversed, so a
-50.00 debit becomes 50.00. Zero amounts are left as-is.
Developer & Automation Access
Run it from the terminal
Same engine as this page, headless — via the gizza CLI:
gizza tool qif-ofx-convert "<OFX><STMTTRN><TRNTYPE>DEBIT<DTPOSTED>20260704<TRNAMT>-42.50<NAME>Coffee Roasters<FITID>c1</STMTTRN></OFX>"New to the CLI? Get gizza →
Open it by URL
Pre-fill and auto-run this tool with query parameters — the names match the API/CLI:
https://gizza.ai/tools/qif-ofx-convert/?data=%3COFX%3E%3CSTMTTRN%3E%3CTRNTYPE%3EDEBIT%3CDTPOSTED%3E20260704%3CTRNAMT%3E-42.50%3CNAME%3ECoffee%20Roasters%3CFITID%3Ec1%3C%2FSTMTTRN%3E%3C%2FOFX%3E&format=auto&date_format=iso&delimiter=comma&invert_amounts=true&drop_empty_columns=true