Import bank statements into GnuCash, HomeBank, or Moneydance (PDF → OFX)
The cleanest way to get a bank statement PDF into GnuCash — or HomeBank, Moneydance, and most desktop finance tools — is OFX: all three import it natively, amounts and dates arrive typed instead of needing column mapping, and a well-built OFX file carries stable transaction IDs so importing the same file twice doesn't create duplicates. The catch is that banks rarely offer OFX downloads beyond the last few months, and never for the years-old statements a catch-up usually needs. This guide covers converting any statement PDF to OFX, importing it into each tool, and the checks worth doing before you trust the result.
Why OFX instead of CSV for GnuCash-family tools?
CSV works, but it makes every import an interview: which column is the date, which is the amount, what's the date format, is a debit negative or a separate column? Get one answer wrong and the import is subtly broken — and GnuCash's CSV assistant will ask you again next time.
OFX is a finance format, not a spreadsheet format. Amounts are amounts, dates are dates, the account is identified, and each transaction carries its own ID. GnuCash, HomeBank, and Moneydance all treat OFX as a first-class import: no mapping step, no locale guessing.
The transaction IDs are the quiet superpower. OFX marks every transaction with a FITID, and importers use it to recognise transactions they've already seen. Import the same file twice — or two files whose months overlap — and the tool skips what it already has instead of double-booking it. CSV has no equivalent; overlap handling is on you.
The problem is supply: banks typically offer OFX/QFX export only for recent activity, if at all. For a shoebox of PDF statements — or a multi-month packet — you need a conversion step first.
How do I convert a statement PDF to OFX?
- Step 1: Download the statement PDF from online banking. A converter should only ever see a file you already have — never your bank login.
- Step 2: Upload it to BankStatementWise. Digital PDFs, scans and phone photos, and password-protected files all work. A typical statement converts in a few seconds.
- Step 3: Let the verification finish before you export. Every extracted row is checked against the statement's own printed balances, and each statement reconciles from opening to closing — here's exactly how that works. Review anything flagged; on clean digital PDFs there's usually nothing to do.
- Step 4: Export OFX. The download is a standard OFX 1.0.2 file — the SGML dialect with the broadest importer support, including all three tools here and most bookkeeping software besides.
One conversion also gives you Excel, CSV, and JSON exports of the same verified rows, so the OFX for your finance tool and a spreadsheet for eyeballing come from a single upload.
How do I import the OFX into GnuCash?
In GnuCash: File → Import → Import OFX/QFX, pick the .ofx file, and when prompted, map the account in the file to the matching GnuCash account (you do this once; GnuCash remembers the association). Review the import matcher — rows it recognises as already present arrive pre-flagged to skip — then apply.
Two tips make GnuCash imports boring, in the good way:
- Import chronologically. Oldest statement first, then forward. Balances build in order and discrepancies surface in the month that caused them.
- After each import, compare GnuCash's account balance against the statement's closing balance. They should agree to the cent — the statement printed it, and the conversion already reconciled against it.
What about HomeBank and Moneydance?
- HomeBank: File → Import, choose the OFX file, and assign the target account in the assistant. HomeBank honours the transaction IDs, so re-imports and overlapping files de-duplicate rather than double.
- Moneydance: File → Import, select the .ofx, and pick the destination account. Moneydance's confirmation screen shows incoming transactions before they land — worth a skim on the first import from any new source.
The workflow is identical in spirit across all three: convert, import oldest-first, and check each month's ending balance against the PDF's printed closing balance.
What exactly is in the exported OFX file?
Worth knowing, because import quality depends on it:
- OFX 1.0.2 SGML — the most widely supported OFX dialect, chosen over newer XML variants precisely because older and conservative importers accept it.
- One transaction record per verified row, with typed dates and signed amounts — no column mapping, no locale ambiguity.
- A stable FITID on every transaction, derived from the row itself — so the same row always carries the same ID, and re-importing a file (or an overlapping month) can't duplicate it in tools that honour FITIDs.
- The statement's closing balance as the ledger balance record, so your tool can confirm the account lands where the bank says it should.
- Only the account's last four digits as the account identifier — the export never carries a printable card number.
Frequently asked questions
- Will importing the same OFX file twice create duplicates?
- Not in tools that honour OFX transaction IDs — and GnuCash, HomeBank, and Moneydance all do. Every exported transaction carries a stable FITID derived from the row itself, so a re-import or an overlapping month is recognised and skipped rather than double-booked.
- My bank only offers OFX for the last 90 days. What about older statements?
- That's the normal case, and it's exactly what PDF conversion is for: any statement you can download (or scan) as a PDF can be converted to OFX, however old it is. Import oldest-first and check each month's closing balance as you go.
- Does this work for credit card statements?
- Yes — card statements convert the same way, and the account type is carried in the OFX so your tool books it against a card account. See the [credit-card conversion guide](/guides/convert-credit-card-statement-to-excel) for card-specific details.
- I use QuickBooks or Xero, not GnuCash. Is OFX still right?
- Both accept OFX, but their CSV paths are well-trodden too — see the dedicated [QuickBooks](/guides/import-bank-statement-into-quickbooks) and [Xero](/guides/import-bank-statement-into-xero) guides for the import flow each tool prefers.
Upload a bank statement PDF and get reconciled spreadsheet data back. Free to try, no sign-up.
Convert a statement — free