How to Import Bank Transactions into GnuCash (CSV and OFX)

Jul 20, 2026 · Updated Jul 21, 2026

Convert your bank statement to Excel now

PDF, JPG, PNG, BMP, HEIC, TIFF, MT940

Upload your bank statement

Short answer: GnuCash imports bank transactions through File then Import, using a CSV file mapped in the column assistant or an OFX, QFX, or QIF file the importer reads directly. GnuCash cannot read a PDF statement, so convert the PDF to CSV or OFX first, then let the Import Matcher assign the balancing account for each transaction.

GnuCash is free, open source, double entry accounting software, and its importers are more capable than they first look. The catch is that they expect a structured file. Feed them a clean one and a month of bank activity lands in seconds; feed them a raw PDF or a badly shaped CSV and the import stalls. This walks through both routes and the decisions that actually matter.

What formats can GnuCash import?

Under the File then Import menu, GnuCash reads four transaction formats: CSV, OFX and QFX, and QIF. It does not read PDF. That single fact is why most people get stuck: the bank sends a PDF statement, and there is no menu item for it. You have two sensible paths from there.

  • CSV import uses an interactive assistant where you map each column with a dropdown. It gives you the most control and lets you review the data before it touches the ledger.
  • OFX or QFX import reads the file directly, with no column mapping, and remembers which account the source belongs to for next time.

If you only have the PDF, you first need to convert the bank statement into a GnuCash-ready CSV or OFX. A converter that outputs separate deposit and withdrawal columns saves the most cleanup, because that is exactly how the CSV assistant expects the money split.

How to import a CSV into GnuCash, step by step

The CSV route is the workhorse. Here is the flow in current GnuCash 5.x.

  1. Open the GnuCash file for the business or household you are working in.
  2. Go to File then Import then Import Transactions from CSV.
  3. Choose your CSV file. On the first screen set the date format to match your statement (choose m-d-y for a US statement), pick the column separator, and set how many header rows to skip.
  4. On the mapping screen, use the dropdown at the top of each column to assign it. At minimum you need Date, Description, and Deposit and or Withdrawal.
  5. Set the destination Account for the whole file in the import window if every row belongs to one bank account, so you do not need an account column in the file itself.
  6. Finish, then work through the Import Matcher, which proposes a transfer account for each line and flags likely duplicates.

The load-bearing detail is the deposit and withdrawal split. GnuCash maps a Deposit column and a Withdrawal column separately rather than reading one signed amount. A raw bank export with a single amount column often has to be reshaped, which is fiddly by hand. A file built for GnuCash already has the two columns, so the assistant maps them without editing.

How to import an OFX or QFX file

If you would rather not map columns, the OFX path is quicker. Go to File then Import then Import OFX/QFX, choose the file, and press Import. Because an OFX file carries the transaction structure and source tags inside it, GnuCash reads the date, amount, and description on its own and remembers the account so later imports skip the account prompt. For a recurring monthly job, that is the lower effort option. CSV still wins when you want to eyeball the rows or fix a stray description first.

Understanding the Import Matcher and the transfer account

Because GnuCash is double entry, every imported bank line needs a second account for the other side of the entry, an income, expense, or transfer account. The Import Matcher handles this. It uses a Bayesian approach that learns from your history: it proposes a destination account, detects likely duplicates by comparing date, amount, transaction ID, and description, and marks each row to import, update, or skip. Your first import takes a few minutes of assigning accounts. After that the matcher recognizes your regular payees and does most of the work, so a monthly import becomes a quick review.

One caveat worth knowing: multi currency imports can create unexpected adjustment entries, so where you can, keep a single import file to one currency.

Why the import fails and how to fix it

When a GnuCash import goes wrong, it is almost always the source file, not GnuCash. The usual culprits:

  • A running balance column. Bank CSVs often include a balance that GnuCash should not treat as a transaction. Leave it unmapped or remove it.
  • One signed amount instead of two columns. Split it into Deposit and Withdrawal so the assistant can map both.
  • Inconsistent dates. The assistant needs one date order for the whole file. Fix mixed formats before importing.
  • Descriptions split across rows. Long details that wrapped in the original document confuse the matcher. Keep each transaction on one line.

Converting the statement rather than copying it out of the PDF avoids all four, since the output is already one clean row per transaction with the columns GnuCash expects.

After the transactions are in

Once the import lands, categorize each line to the right account and reconcile the account against the statement balance so your ledger ties to the bank. If you keep several accounts, repeat the import per account. Should you ever move off GnuCash to hosted accounting, the same statement data converts to an importable QuickBooks file, so switching does not mean rekeying years of history.

For related conversions, the bank statement OFX converter produces a plain OFX for the GnuCash importer, and bank statement reconciliation covers tying the imported data back to the bank once it is in.

Ready to convert your bank statement?

Upload a PDF and get clean Excel or CSV in seconds. Works with statements from any bank.

Convert to Excel now

Free to try, no credit card required

From the same family of tools