QIF to CSV converter
Turn a QIF file from your bank or Quicken into a CSV, one row per transaction. Your file never leaves your browser.
Drop a QIF file here
A .qif file from your bank or Quicken, up to 100 MB. It stays on your computer.
No file to hand?
- No sign-up
- Nothing uploaded
- Dates read the right way round
A CSV with one row per transaction.
Your file stays on your computer
The file is read and the CSV is written in your browser. Nothing is sent to Mammoth or anyone else.
Dates read the right way round
The converter works out from the file whether 03/10 means 3 October or 10 March, and you can switch it.
Split transactions kept whole
A payment split across categories stays one row, with its full amount and every category listed.
How to convert QIF to CSV
Each transaction becomes a row with its date, payee, amount, memo and category. Columns the file leaves empty are left out.
- 1
Add your QIF file
Drop a .qif file on the box, or choose one from your downloads.
- 2
Check the rows
A preview shows the transactions. Check the date order, pick a date style, or split money in and out.
- 3
Download
Save the CSV, with commas, semicolons or tabs, or save it as an Excel file.
Other ways to do it
Python can read a QIF file too. The difference is what you have to tell it, and what comes out.
Python with quiffen
A script that runs every month
- Works out day or month firstNo
- Keeps two decimalsNo
- Category as plain textPartly
- No code to writeNo
- This page
This converter
A clean CSV in one step
- Works out day or month firstYes
- Keeps two decimalsYes
- Category as plain textYes
- No code to writeYes
How to convert QIF to CSV in Python
The quiffen library reads a QIF file into a pandas table, and pandas writes the CSV. Here is the whole script.
Want a spreadsheet, not a CSV? The QIF to Excel converter writes an .xlsx with real dates and amounts. Have an OFX, QFX or QBO file? Use the OFX to CSV converter.
from quiffen import Qif
qif = Qif.parse("checking.qif", day_first=True)
df = qif.to_dataframe()
df["category"] = df["category"].map(lambda c: c["hierarchy"] if isinstance(c, dict) else "")
df[["date", "payee", "memo", "amount", "category"]].to_csv("checking.csv", index=False)quiffen 4.0.1. You tell it the date order: in our test, a UK file read without day_first=True put 2 January on 1 February. Amounts come out with one decimal (1000.0), and the category is a Python dictionary until the third line turns it into text.
Your file stays private
The converter runs inside this page. Your QIF file is read and turned into a CSV on your computer, and nothing is sent to Mammoth. Your accounts and transactions stay with you.
Once the page has loaded, it works with your internet switched off.
Getting a statement every month?
Mammoth can take it from there. Put each month's CSV in a folder and the rows are added to one table, ready to filter, total and download.
Bank statements
| August | Aug 01 | Harbor & Pine Payroll | 2,150.00 | |
| August | Aug 14 | City Water Utility | -58.12 | |
| September | Sep 02 | Blue Door Coffee | -4.50 | |
| October | Oct 11 | Corner Market | -83.19 | |
| October | Oct 31 | Interest paid | 0.42 |
Illustration. Every new file in the folder is added to the same table.