to select ↑↓ to navigate
ERPNext

ERPNext

Open in ChatGPT
Ask ChatGPT about this page
Open in Claude
Ask Claude about this page

Advanced Bank Reconciliation

Advanced Bank Reconciliation

ERPNext ships with a standard Bank Reconciliation Tool. Advanced Bank Reconciliation replaces it with a faster UI and an auto-matching engine that handles the majority of transactions without any clicking.

The key idea: every potential match between a Bank Transaction and a Payment Entry / Journal Entry / Sales Invoice / Purchase Invoice gets a score based on multiple signals. Above a confidence threshold, the match auto-reconciles; below it, the human decides — but the UI sorts options by score so the right answer is usually on top.

What it matches

Bank Transactions can reconcile against:

  • Payment Entry — payments you've already booked, awaiting bank confirmation
  • Journal Entry — manual ledger postings, e.g. bank charges
  • Sales Invoice — unpaid customer invoices (the tool creates a Payment Entry on reconciliation)
  • Purchase Invoice — unpaid supplier invoices (creates a Payment Entry)

For invoices, the tool creates the missing Payment Entry / Journal Entry on the fly during reconciliation — you don't need to manually draft a payment first.

The ranking algorithm

Each candidate match gets points from these signals:

Signal Points Description
Reference number match 1 Bank transaction reference_number matches voucher reference_no exactly
Amount match 1 Bank transaction amount equals voucher amount to the cent
Party match 1 Bank transaction party equals voucher party
Date proximity 1–5 Sliding scale: same day = 5, ±1 day = 4, … ±3 days = 1
Voucher name in description 1 The voucher's name (e.g. PE-00123) appears anywhere in the bank description
Reference in description 1 The voucher's reference_no appears in the bank description

Total score ranges 1–11+. Auto-reconcile fires at rank ≥ 3 with an exact amount match. Lower scores go to the UI for human review.

Daily auto-reconcile

The app schedules an auto-reconcile task that runs daily. For each Unreconciled bank transaction in the configured date range:

  1. Build the candidate list across all four voucher types.
  2. Score each candidate using the table above.
  3. If the best candidate has rank ≥ 3 AND amount matches to the cent, reconcile automatically.
  4. Otherwise, leave the transaction Unreconciled and surface it in the reconciliation UI.

Most ledgers settle 70–90% of transactions on this pass alone. The remaining 10–30% are typically the interesting cases (split payments, unmatched references, edge cases) that benefit from human eyes.

The reconciliation UI

For transactions that didn't auto-reconcile, open Advanced Bank Reconciliation in the awesomebar. The UI is a split panel:

  • Left panel — list of unreconciled Bank Transactions, with date, amount, and party.
  • Right panel — for the selected transaction, the candidate vouchers sorted by score with explanations of which signals fired.

Click a candidate to reconcile. Or click Create Payment Entry if no voucher exists yet — the tool drafts the PE pre-filled from the bank transaction's amount, date, and party.

Banking Reference Mapping

Some Dutch banks include reference numbers in non-standard places — e.g. ABN AMRO sometimes puts the SEPA end-to-end reference in the description field, ING uses a separate field. The Banking Reference Mapping child table on Banking Settings lets you tell the matcher: "look for SEPA references in the transaction_description field on this bank's transactions, not the standard reference_no."

Set this up once per bank you use; the matcher then knows where to look.

Configuration

Open Banking Settings in the awesomebar:

  • Auto-reconcile date range — how many days back the scheduled job looks (default 30). Increase if your reconciliation cadence is monthly rather than weekly.
  • Auto-reconcile minimum rank — defaults to 3. Lowering to 2 accepts more matches automatically (more false positives); raising to 4 makes the auto-step more conservative (more manual work).
  • Banking Reference Mappings — per-bank custom field mappings as described above.

When it doesn't auto-match

Common reasons a transaction stays unreconciled:

  • Split payment. One bank credit covers multiple invoices. The current matcher does 1:1 matching only — you'll need to split manually in the UI.
  • No corresponding voucher exists yet. The customer paid before the invoice was issued (rare). Create the invoice, then re-run the matcher on the next schedule, or reconcile manually.
  • Party mismatch. The Customer is set up with a slightly different name than what the bank uses. Update the Customer's bank_account or use the description field for matching.
  • Currency conversion noise. A foreign-currency transaction arrives slightly off the EUR voucher amount due to FX. Rank stays below threshold; resolve manually.

What this app does not do

  • Initiate payments. Reconciliation is downstream of payment. See the SEPA Payments feature of erpnext_netherlands to send payments out via your bank.
  • Connect to banks directly. Bank Transactions need to arrive via CSV / camt.053 / GoCardless Banking. This app only matches what's already there.
  • Recategorise transactions. It matches to existing vouchers; it doesn't decide what category an unmatched transaction belongs to. That's still a manual classification step on Bank Transaction.
Last updated 3 days ago
Was this helpful?
Thanks!