---
title: "Advanced Bank Reconciliation"
space: "ERPNext"
url: "https://www.prilk.com/docs/erpnext/integrations/reconciliation/advanced-bank-reconciliation"
updated: "2026-05-15"
---

# 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.
