Import a bank CSV into GnuCash: map fields and review matches

Updated · 6 min read

To import a bank CSV into GnuCash 5.17 on Windows, use File → Import → Import Transactions from CSV, choose the bank account, map the columns and review each proposed match before confirming. This guide uses the version 5 manual and follows a simple checking or savings account in one currency, with one transaction per CSV row and two accounting splits per transaction.

Use a suitable bank-native export first. If your only source is PDF, LocalExtract can prepare a CSV locally; choosing GnuCash accounts and reviewing the import remain separate tasks.

The desktop apps export date, description, and amount as CSV. Open CSV in Excel to save an XLSX workbook. Statement support varies: verify the result against your own PDF.

Choose transaction import and the base account

GnuCash distinguishes importing transactions from importing an account tree. An account-list import does not turn bank rows into transactions. Open a backup copy of your book for a first trial, and use the transaction entry named above. The version 5 transaction-import instructions describe the preview, account mapping and matcher as separate stages.

Decide which existing asset account receives the bank movements. That is the base account, such as your checking account; it is different from the expense, income or other transfer account on the opposite side. Confirm its currency against the statement. Do not mix another account or currency into this import just because the CSV columns look similar.

If the file lacks an Account column, select the base account in the preview’s Account control. If the file supplies an account column instead, map it and review the correspondence to your account tree in the account-matching stage. A similar account name is not enough to justify accepting the wrong account.

Leave Multi-split off for the single-row, two-split task here. The manual marks multi-split imports involving multiple currencies or commodities as experimental; this guide does not cover those cases or credit-card liability sign conventions.

Map a signed amount without losing its meaning

After selecting the CSV, inspect Import Preview. Set the separator and encoding to the actual file, skip its header line, and explicitly choose Date Format and Currency Format. The manual notes that the date setting does not simply default to your locale. A readable preview alone does not establish correct date or amount interpretation.

Source column or settingGnuCash choice for this scopeEvidence to check
dateDateA known transaction resolves to the source date
descriptionDescriptionThe complete narrative survives
amountDeposit, for signed asset-account movementsReceipt increases the bank balance; payment decreases it
No account columnAccount control selects the base accountCorrect checking/savings account and currency
Optional sourced transfer-account columnTransfer AccountCorrect opposite-side account in your own book

The manual’s Deposit mapping accepts positive increases and negative decreases for an asset bank account. A separate Withdrawal mapping reverses that direction. For a source with separate receipt and payment columns, map both Deposit and Withdrawal and check the direction of each against the statement; do not map two amount representations of the same event at once.

For broken columns or ambiguous numbers, use the CSV date and decimal guide before returning to the importer. It owns the general locale cleanup; this page concerns the GnuCash account and matcher decisions.

Try a controlled three-row mapping

This synthetic example defines an invented EUR checking account, receipts positive and payments negative. The English descriptions below are test data in every language version, not real transactions.

date,description,amount
2026-10-01,Synthetic receipt,120.00
2026-10-02,Synthetic supplies,-25.00
2026-10-03,Synthetic bank fee,-5.00

With the signed amount mapped to Deposit, the three bank-side movements should be +120.00, −25.00 and −5.00 EUR, a net increase of 90.00 EUR. Mapping the same signed column to Withdrawal would reverse all three and produce −90.00 EUR: that is a useful negative control, not an alternative acceptable result.

The three-field file contains no opposite-side accounts. In this exercise, assign the receipt to an appropriate income account, supplies to an expense account and the fee to a bank-fee expense account in a disposable book. Those choices illustrate the two sides; they are not accounting classifications to copy into a live business book. If a row is actually a transfer, select the real transfer account rather than forcing it into expenses.

Download the synthetic mapping cases to inspect the CSV, expected bank movements and reversed-sign control. Python CSV parsing and Decimal arithmetic check this teaching fixture. They do not execute GnuCash or certify an import.

Review the matcher before accepting changes

Continue through account matching and Transaction Information to Match Transactions. Do not use Skip Errors to make an unexplained missing row disappear. Return to the preview and resolve the field interpretation first.

The generic matcher documentation describes three actions: A adds a transaction; U+C updates and clears an existing match; C clears an existing match without adding a new transaction. Inspect the matched date, amount and narrative before accepting any proposal. A proposed match is a decision to review, not proof that equal-looking payments are one event.

Check the assigned transfer account too. Double-clicking a new row opens the transfer-account selection; a matched row opens the match picker. If no transfer account is assigned, GnuCash can put the balancing side into an Imbalance account. Resolve that destination before importing rather than treating an Imbalance posting as a finished classification.

For overlapping source exports, use the duplicate-evidence workflow before upload. It does not replace reviewing rows already present in this GnuCash book. An approved source row could still correspond to an existing ledger transaction.

Check the account register after import

Confirm only after the base account, proposed actions and opposite-side accounts are correct. Read the import summary, then inspect the account register against the selected source rows. In the synthetic exercise, verify all three signs as well as the 90.00 EUR net change; a matching total alone would miss offsetting errors.

GnuCash’s imported cleared status is distinct from completing reconciliation against an external bank statement. Review any unresolved Imbalance entries and perform the separate statement reconciliation when appropriate. For a wrong trial result, return to the untouched book copy and investigate before changing live records.

LocalExtract processes one PDF at a time, with parsing and OCR on the device, and exports date,description,amount CSV. There is no desktop batch queue or automatic GnuCash synchronization. Verify the extracted rows and prepare the import copy yourself. Conversion does not upload the PDF; account access and periodic Pro verification need a network. Download LocalExtract for a PDF source.

Official version 5 instructions and the GnuCash 5.17 release checked October 15, 2026. Menu names above follow the English Windows interface.

LocalExtract Team

We build LocalExtract, a desktop bank statement converter. Questions or corrections? Contact · Editorial policy

Continue with a related guide