To import a bank statement into GnuCash, open File, then Import, and pick the importer that fits your file: OFX/QFX for a bank download, CSV for a spreadsheet export, or QIF for old Quicken data. GnuCash then shows its import matcher, which suggests an account for each line and flags lines that are already in your books.
Which GnuCash importer fits your bank statement file?
GnuCash has one importer per file type, all under File, then Import. The GnuCash Tutorial and Concepts Guide chapter on importing from files lists QIF, OFX/QFX, CSV, MT940, MT942 and DTAUS. Pick by the file's extension and where it came from, not by what you would like it to be.
| Your file | Importer | Typical source |
|---|---|---|
| .ofx or .qfx | Import OFX/QFX | "Download for Quicken" or "Money" on a bank site |
| .csv | Import CSV | Online banking export, a spreadsheet, a converter |
| .qif | Import QIF | An export from Quicken or similar older software |
| MT940 | Import MT940 | Business banking in some European countries |
| MT942 | Import MT942 | Intraday statements from the same banks |
| DTAUS | Import DTAUS | An older German payment format |
Which one to choose when the bank offers several
Choose OFX or QFX when your bank offers it. The guide describes QFX as Intuit's own version of OFX, and GnuCash reads both through the same importer. These files carry the account details, so GnuCash can remember which account they belong to, and they need no column setup.
Choose CSV when it is the only download, or when you built the file yourself. It takes more setup the first time, but the settings can be saved for next month.
Choose QIF only for history from older personal finance software. The QIF importer is an assistant for moving whole sets of accounts and categories, not a monthly bank routine.
Importing an OFX or QFX bank statement into GnuCash
Importing an OFX or QFX bank statement into GnuCash takes two steps. Select the file under File, Import, Import OFX/QFX, then tell GnuCash which of your accounts it belongs to. The guide says GnuCash remembers that choice, using tags in the file, so later files from the same account skip the question.
That memory is the main reason to prefer OFX. The first import from a checking account asks you to pick the matching account in your chart of accounts. Every later file from that account goes straight to the import matcher, described further down.
What to check in the file first
An OFX file from a bank is usually fine as it is. Two cases need a look before you import:
- A file built by a converter. Open it in a text editor and confirm it has an account block and one transaction block per line. A file with no account number cannot be remembered.
- A file with a renamed extension. A .qfx renamed to .ofx, or the reverse, makes no difference to GnuCash, since both go through the same importer.
If you are also comparing personal finance programs, the OFX route works in a similar way elsewhere. Importing a bank statement into Moneydance covers a program with a comparable approach.
Setting up GnuCash CSV importer columns
Setting up GnuCash CSV importer columns means saying how the file is split, how dates and amounts are written, and which column holds what. The guide names Date, Description, a Deposit or Withdrawal amount and an Account, or one base account for the file. The finished layout can be saved under a name.
The settings that matter for a bank CSV
The CSV importer exposes many options. These are the ones a typical bank export needs:
- Separator. Comma is the default. Some banks use semicolons, especially in Europe. Pick the one that splits the preview into tidy columns.
- Lines to skip. Bank exports often start with a title line or an account summary. Skip those leading lines so the first data row is a real transaction.
- Date format. The guide notes that this does not follow your computer's regional setting by default. Set it to match the file, such as month, day, year for a US bank.
- Currency format. Decimal point or decimal comma, to match the file.
- Base account. If the file has no account column, set the GnuCash account all lines belong to.
- Column types. Above each column in the preview, choose what it holds, such as Date, Description, Deposit or Withdrawal.
A Skip Errors option ignores rows that fail to parse. Use it with care, because a skipped row is a missing transaction, and nothing will remind you later.
A worked CSV example
Here is a made-up export from a US checking account:
Account activity for checking ending 2208
Date,Description,Debit,Credit,Balance
03/03/2026,ELECTRIC CO AUTOPAY,92.15,,4107.85
03/06/2026,DEPOSIT REF 55310,,600.00,4707.85
03/10/2026,HARDWARE DEPOT #41,37.66,,4670.19
For this file: separator comma, skip one leading line, date format month-day-year, base account Assets:Checking, then set the columns to Date, Description, Withdrawal, Deposit, and leave Balance unassigned. Save the settings as "Example Bank checking" so next month's file needs only a file pick.
How does the GnuCash import matcher choose accounts?
The GnuCash import matcher chooses accounts by learning from earlier imports. The guide says it uses a Bayesian approach, so a description that you once filed under Utilities will be suggested for Utilities next time. Each imported line needs a destination account, the other side of the transaction, before the import can finish.
What the row colours mean
The matcher shows one row per imported line, coloured by its state. According to the guide:
- Orange-yellow rows have no destination account yet. They need one before you press OK.
- Light green rows match a transaction already in the account, so they are set not to be imported.
- Mid dark green rows are the ones you have selected.
To give a row an account, double-click it, or right-click and choose Assign a transfer account. Hold Ctrl or Shift to select several rows and assign them all at once, which is quick for a month of grocery or fuel lines.
Teaching it well
The first few imports take the most work, because the matcher has nothing to learn from. Assign accounts carefully during those, and the suggestions improve each month. Fixing a wrong suggestion during the import also teaches the matcher, so a mistake corrected now is less likely to return.
Keep descriptions stable to help it. If you edit payee text in the CSV before importing, edit it the same way every month. A matcher that saw "HARDWARE DEPOT #41" last time may not connect it with "Hardware Depot" this time, and you will be assigning that line by hand again.
Budget-focused apps handle the same job in their own way. Importing a bank statement into YNAB shows how a budgeting tool takes in statement lines and assigns them.
Does GnuCash catch duplicate bank statement lines?
GnuCash does catch many duplicate bank statement lines. The guide says rows that match transactions already in the import account are flagged not to be imported. Such a row shows its A box unchecked and R checked, with a reliability bar in the Info column. Matching uses the date and the description.
When to override it
The match is a judgement, not a certainty. Two genuine transactions can look the same, for example two equal coffee purchases on one morning. If your statement shows both but GnuCash has flagged one as already present, tick its A box to import it anyway. The guide says U and R are then cleared on that row.
The opposite case matters too. A line that is a true duplicate but has a slightly different description, perhaps because the bank changed its text between the CSV and the OFX download, may not be matched. Scan the orange rows for anything you recognise from earlier imports before you assign it an account.
Avoiding overlap in the first place
The safest habit is to import non-overlapping files. Start each file the day after the last transaction already in the account. Then, after each import, open the account register and compare the ending balance with the statement's closing balance. If they agree, nothing was missed or doubled.
A PDF bank statement that must become a GnuCash CSV
A PDF bank statement must become a CSV before GnuCash can read it, because none of its importers accept a PDF. The CSV needs one row per transaction with a date, a description and an amount. Build it by hand for a few lines, or use a converter for longer statements.
Steps from PDF to import
- Check whether the bank offers an OFX or CSV download for the same period. That avoids conversion entirely.
- If it does not, convert the PDF to CSV, or copy the lines into a spreadsheet.
- Fix the year on every date, since many statements print month and day only.
- Remove the opening balance line, page totals and any summary rows.
- Save as CSV and run the GnuCash CSV importer with saved settings.
- Compare the ending balance in GnuCash with the closing balance on the PDF.
SimpleBankConvert is being built to turn PDF statements into CSV files with consistent dates and a single signed amount column. Its files are laid out for QuickBooks and Xero, not GnuCash, so test one month in the CSV importer first and check that money out lands as a withdrawal.
When GnuCash is not the end point
Some readers keep GnuCash for personal accounts and QuickBooks for a business. The two take different files for the same statement. The business side of that split, for the desktop product, is covered in importing PDF bank statements into QuickBooks Desktop.