Skip to main content
๐Ÿ“Š

Convert CSV to QIF: Record Layout, Tools and a DIY Script

6 min readOctober 26, 2026

Quick Answer: QIF is a plain-text format where each transaction is a few lines starting with a letter code (D for date, T for amount, P for payee) and ending with a caret. To convert a CSV, map its columns to those codes, add a !Type:Bank header, and save as .qif. A converter app, an Excel add-in or a ten-line script all do this; the format is simple enough that free tools work well.


QIF, the Quicken Interchange Format, predates OFX and stores transactions as short blocks of text, one field per line. Converting a CSV to QIF means rewriting each spreadsheet row as one of those blocks. Because the format is simple and openly documented, you can do it with free converters, an Excel formula or a short script, on Windows, Mac or Linux.

Drop your bank statement here

PDF or OFX ยท Max 4.4 MB

Uploaded over an encrypted connection. We never ask for your bank login. Privacy

Preview free with no account. Free account to download.

What does a QIF file look like?

Here are two bank transactions in QIF:

!Type:Bank
D03/14/2026
T-45.67
POFFICE DEPOT 1123
MPrinter paper
LOffice Supplies
^
D03/15/2026
T1250.00
PCLIENT PAYMENT ACME LTD
^

Each line begins with a one-letter code:

CodeMeaningNotes
!Type:Account type headerBank, CCard, Cash, Oth A, Oth L; first line of the file
DDateUsually month/day/year; some apps expect day-first
TAmountNegative for money out; no currency symbol
PPayeeFree text
MMemoOptional
NCheck or reference numberOptional
LCategory, or [Account] for a transferOptional
^End of transactionRequired after every record

Fuller definitions, including split transactions and investment records, are summarised in the Quicken Interchange Format article. For a deeper tour of the format itself, see our QIF format guide.

Which apps still use QIF?

Fewer than once did, but enough that the conversion is still a common need:

  • Quicken for Windows. Its QIF import help now says you can import any account type using QIF. Older Quicken versions restricted QIF import to non-bank accounts such as cash, asset and liability, which is why older forum advice says QIF will not work for checking accounts; with a current release that advice is out of date.
  • GnuCash, Moneydance, Banktivity and similar desktop finance apps, which use QIF as a common import route.
  • Accounting software that accepts several statement formats for manual import; Xero, for instance, documents QIF alongside CSV and OFX on Xero Central.
  • Older or legacy programs where QIF is the only import option.

If your target app takes QFX or OFX too, those formats carry transaction IDs that help prevent duplicates, which QIF lacks. Our QIF vs QFX comparison covers the trade-off.

How do you convert CSV to QIF in Excel?

You can build QIF text with a formula and paste it into a text file. Assume your sheet has Date in A, Payee in B and a signed Amount in C.

  1. In D2, enter:

="D"&TEXT(A2,"mm/dd/yyyy")&CHAR(10)&"T"&TEXT(C2,"0.00")&CHAR(10)&"P"&B2&CHAR(10)&"^"

  1. Fill it down to the last row.
  2. In a blank cell, combine everything: =TEXTJOIN(CHAR(10),TRUE,"!Type:Bank",D2:D500).
  3. Copy that cell, paste into a plain text editor, and save as transactions.qif.
  4. Excel wraps multi-line cells in quotation marks when you paste. Delete the opening and closing quote in the text editor before saving.

This works for a one-off file. For repeated conversions, a script or dedicated converter avoids the quote clean-up and handles text that contains commas or line breaks.

Is there a free or open-source CSV to QIF converter?

Yes, several kinds:

  • Open-source scripts. Search a code host for "csv2qif" and you will find Python, Perl and JavaScript projects. Most read a CSV with a column mapping you configure and write a QIF file. Check the last commit date and the date format they assume.
  • Excel add-ins. Add-ins exist that add an "export to QIF" command to Excel on Windows. They are convenient when your data already lives in a workbook; check the publisher and reviews before installing anything that runs macros.
  • Desktop converters for Windows and Mac. Commercial utilities read CSV and Excel and write QIF, QFX and other formats, usually with a free trial.
  • Online converters. They work from any operating system, but your file is uploaded. Fine for low-risk data, less so for business records.

When comparing them, the things that differ are date-format handling, debit/credit column support, category mapping and whether they produce correct !Type: headers for credit cards.

How do you write a CSV to QIF converter yourself?

If you are comfortable running Python, this handles the common case of a CSV with Date, Description and Amount columns:

import csv
from datetime import datetime

with open("bank.csv", newline="", encoding="utf-8") as src, open("bank.qif", "w", encoding="utf-8") as out:
    out.write("!Type:Bank\n")
    for row in csv.DictReader(src):
        date = datetime.strptime(row["Date"], "%Y-%m-%d").strftime("%m/%d/%Y")
        amount = float(row["Amount"].replace(",", "").replace("$", ""))
        out.write(f"D{date}\nT{amount:.2f}\nP{row['Description'].strip()}\n^\n")

Change the strptime pattern to match your CSV's date format and the column names to match its headers. For a credit card account, write !Type:CCard and make sure charges are negative.

How do you handle credit cards, categories and splits?

Three details trip up conversions that otherwise look right.

Credit card files. Use !Type:CCard as the header. Charges should be negative and payments to the card positive, from the card account's point of view. Many card CSVs print charges as positive numbers, so multiply the amount column by -1 before converting, then spot-check a payment row to make sure it came out positive.

Categories. The L line carries a category name, and the importing app matches it by exact text. "Office Supplies" and "Office supplies" may become two categories. If your CSV has a category column, clean it to the names already in your finance app before you convert; if it has none, leave L out and categorise after import, which most apps make quick with rules.

Split transactions. QIF supports splits with S (split category), E (split memo) and $ (split amount) lines repeated inside one record. A CSV rarely represents splits cleanly, so most converters ignore them. If a single payment really covers several categories, it is usually faster to split it in the app after import than to encode it in the file.

Finally, keep one account per QIF file. A file can technically hold several accounts with !Account blocks, but single-account files are easier to check and much harder to import into the wrong place.

What goes wrong when importing a converted QIF?

  • Dates land in the wrong month. The importing app read 03/04 as day-first. Most apps let you choose the date convention during QIF import; otherwise rewrite the D lines.
  • Every amount has the wrong sign. The CSV had withdrawals as positive numbers. Flip them before converting.
  • Duplicates after a second import. QIF has no transaction IDs, so the app cannot tell an old row from a new one. Import each period once.
  • Transfers appear twice. An L[Savings] category creates the matching entry in the other account; do not also import that account's copy.
  • The import creates a new account. Some apps do this when the header lacks an account block. Choose the target account during import if the app offers it.

Should you start from the PDF statement instead?

If your CSV was itself made from a PDF statement, consider converting the statement straight to QIF and skipping the CSV. QuickBankConvert does that: it accepts PDF statements and OFX, but not CSV, and writes QIF on the Plus plan alongside CSV, Excel, QBO and QFX. The PDF to QIF page shows the steps.

Frequently Asked Questions

Can Quicken import a QIF file into a checking account?

Current Quicken for Windows releases can import QIF into any account type, according to Quicken's help. Older versions limited QIF import to accounts such as cash, asset and liability.

What is the easiest free way to convert CSV to QIF?

For a one-off file, build the QIF lines with an Excel formula and paste them into a text file. For regular use, a free open-source script or a converter with saved column mappings is quicker.

What date format does QIF use?

Most apps expect month/day/year, but QIF does not enforce one. Use the format your target app expects and choose the matching option during import if it asks.

Can I convert CSV to QIF on a Mac?

Yes. QIF is plain text, so Python scripts, online converters and Mac desktop converters all produce files that any QIF-reading app accepts.

Why does my QIF import create duplicate transactions?

QIF has no unique transaction IDs, so the importing app cannot recognise rows it already has. Import each date range only once, or use QFX or OFX if the app supports them.

Ready to convert your bank statement?

Free to preview. No bank login. Results in about a minute.

Convert a statement