Girman Logo
Let's talk
tech

What Is Payment Reconciliation? How ERPNext Matches Payments to Invoices at Scale

Payment reconciliation matches incoming payments to open invoices. See how ERPNext automates it with the Payment Reconciliation tool and bank matching rules.

Ankita Sinha
Author
Ankita Sinha
Consultant . Girman Tech
September 16, 2026
8 min read

Payment reconciliation is the process of matching each payment your company receives or sends against the specific invoices it settles, so that the outstanding balance on every customer and supplier account reflects reality. It is a standard financial control implemented in SAP, Oracle NetSuite, Microsoft Dynamics, and ERPNext. Without it, your ageing report is fiction. You cannot tell which customers actually owe you money and which have already paid.

Most finance teams do not discover a reconciliation problem in the accounts. They discover it when a collections executive calls a customer who paid three weeks ago.

The operational problem

A customer sends one NEFT transfer of ₹8,42,000 against six invoices. The bank statement line says NEFT-CR-HDFC-ACME INDUSTRIES-8420 00. No invoice numbers. Nobody at the customer's end sends a remittance advice.

Your accounts team now does what most teams do: opens the ledger, eyeballs which combination of open invoices adds up to ₹8,42,000, and posts a journal entry. It works when you have forty open invoices. At four hundred it stops working, and the failure is silent. Payments sit as unallocated credits, invoices sit as overdue, the ageing report drifts from reality, and the first person to notice is the customer who gets a dunning email for an invoice they cleared last month.

The cost is rarely the accounting error itself. It is the collections effort spent chasing money you already have, and the working-capital decisions made on an ageing report nobody quite trusts.

Payment reconciliation vs. bank reconciliation

These two are constantly conflated, and the distinction matters because they are different tools solving different problems.

Bank reconciliation answers: does my ledger's cash balance match what the bank says? It matches bank statement lines against vouchers already in the system.

Payment reconciliation answers: which invoices does this payment settle? It matches payment entries against open invoices for a specific party (an allocation problem, not a cash-balance problem).

A company can be perfectly bank-reconciled and still have a completely unreliable ageing report. You need both. SAP Business One draws the same line, calling the second one "Internal Reconciliation" and keeping "Bank Statement Processing" separate.

How payment reconciliation works in ERPNext

ERPNext ships both tools. Here is the payment-to-invoice side.

Step 1: Open the Payment Reconciliation tool

Go to Accounting > Payment Reconciliation. It is a single-use tool, not a stored document. Nothing is saved until you reconcile.

Set the mandatory filters:

  • Company
  • Party Type: Customer or Supplier
  • Party: the specific customer or supplier
  • Receivable / Payable Account: usually Debtors or Creditors

Payment Reconciliation form with Company, Party Type, Party and Receivable/Payable Account filled in.

Payment Reconciliation form with Company, Party Type, Party and Receivable/Payable Account filled in.

Step 2: Narrow the search before fetching

This is the step most teams skip, and it is the difference between the tool being useful and being unusable.

The optional filters are Bank / Cash Account, From / To Invoice Date, From / To Payment Date, Minimum / Maximum Invoice Amount, Minimum / Maximum Payment Amount, Cost Center, Project, and free-text Filter on Invoice / Filter on Payment fields.

Note the Invoice Limit and Payment Limit fields, both defaulting to 50. The system only pulls 50 invoices and 50 payments unless you change this. Setting them to 0 fetches everything, which on a ledger with 1,500 open documents is exactly how you make the tool hang. Filter by date range and amount band instead.

The filter section expanded, showing Invoice Limit and Payment Limit set to 50.

The filter section expanded, showing Invoice Limit and Payment Limit set to 50.

Step 3: Get Unreconciled Entries

Click Get Unreconciled Entries. Two tables populate: unallocated payments and outstanding invoices.

Step 4: Allocate

Click Allocate. ERPNext proposes allocations into the Allocation table, applying payments against invoices in order. Each row carries an Allocated Amount you can edit. This is where you handle a payment that settles four invoices fully and a fifth partially.

Two fields on this table are widely misread:

  • Difference Amount is exchange-rate difference only. It is calculated when the invoice and the payment carry different exchange rates, and it is zero for domestic transactions. It is not a tolerance or rounding bucket.
  • Difference Account is read-only and auto-set to the company's Exchange Gain/Loss Account. On reconcile, ERPNext posts a system-generated Journal Entry for that difference.

Allocation table with the Allocated Amount and Difference Amount columns. Difference Account is a field on the row, not one of the grid's columns. You have to open a row to reach it.

Allocation table with the Allocated Amount and Difference Amount columns. Difference Account is a field on the row, not one of the grid's columns. You have to open a row to reach it.

Step 5: Reconcile

Click Reconcile. Invoice outstanding amounts update, and the payments are linked to the invoices they settle.

Important: ERPNext's allocation tolerance is 0.009. If you try to allocate even one rupee more than an invoice's outstanding amount, it throws an error rather than writing off the difference. Short payments and cash discounts are handled upstream, on the Payment Entry itself: the Write Off Difference Amount button, which posts to the Payment Deductions or Loss table.

Step 6: Automate it

For recurring reconciliation, ERPNext has a background job. In Accounts Settings, enable Auto Reconcile Payments, then set Auto Reconciliation Job Trigger (in minutes, 1-59, default 15) and Reconciliation Queue Size (5-100, default 5).

You then create Process Payment Reconciliation documents (one per party/account combination) and submit them. They sit in Queued status; the scheduler picks them up, fetches, allocates and reconciles in the background, and logs the result to Process Payment Reconciliation Log.

If a reconciliation is wrong, the Unreconcile Payment DocType unlinks the allocation cleanly. You do not cancel and re-post.

Accounts Settings showing Auto Reconcile Payments enabled with job trigger and queue size.

Accounts Settings showing Auto Reconcile Payments enabled with job trigger and queue size.

The bank side: Bank Reconciliation Tool

Go to Accounting > Bank Reconciliation Tool. Set Company, Bank Account, and the statement date range, and enter the Closing Balance from your statement.

Bank statement lines enter the system as Bank Transaction records, imported via Bank Statement Import, which is Frappe's Data Import engine pointed at the Bank Transaction DocType. Column mapping is configured once per bank, on the Bank record's Bank Transaction Mapping table. If your bank is supported by Plaid, Plaid Settings can sync automatically every hour.

For each unmatched line, ERPNext ranks candidate vouchers using a deterministic score: one point each for a matching reference number, an exactly matching amount, and a matching party. You then choose one of three actions: Match Against Voucher, Create Voucher, or Update Bank Transaction. Reconciling stamps a Clearance Date on the matched voucher.

Two things worth correcting, because the official ERPNext documentation is out of date here:

  1. The matchable document types are Payment Entry, Journal Entry, Sales Invoice, Purchase Invoice, and Bank Transaction itself, for inter-account transfers. Expense Claim is listed in the docs but is not supported. Loan Repayment moved out of core into the separate lending app.
  2. Two matching aids exist in Accounts Settings and are off by default: Enable Automatic Party Matching and Enable Fuzzy Matching. Most teams never turn them on and conclude the tool cannot infer parties from statement descriptions. It can.

Bank Reconciliation Tool showing an unmatched transaction with ranked voucher suggestions.

Bank Reconciliation Tool showing an unmatched transaction with ranked voucher suggestions.

ERPNext vs. SAP Business One vs. Odoo vs. NetSuite

CapabilityERPNextSAP Business OneOdooOracle NetSuite
Invoice-to-payment allocationPayment Reconciliation toolInternal Reconciliation (manual / semi-automatic / automatic)Reconciliation ModelsMatch Bank Data / Reconcile Account Statement
Automated background reconciliationProcess Payment Reconciliation (scheduled, configurable interval)Automatic mode with user-defined prioritiesAuto-validate on reconciliation modelsIntelligent Transaction Matching + auto-create rules
Matching logicRule-based ranking; rules engine added in v16Rule-based, user-defined parametersRule-based + regex on statement labelsRule-based (despite the "intelligent" naming)
Underpayment / cash-discount toleranceNo tolerance in the tool; write-off handled on Payment EntryPartial reconciliation supportedPayment tolerance field (underpayment only)Supported via rules
Automated bank feedsPlaid, plus CSV/Excel/Google Sheets importBank Statement Processing26,000+ institutions (requires Enterprise subscription)Bank Feeds SuiteApp
Licensing modelOpen source; hosting from ~$5/month, no per-user feePer-user licence, not publicly listedFrom $24.90/user/month (annual)Per-user, not publicly listed

ERPNext holds 4.5/5 across 140 reviews on Capterra and 4.5/5 across 59 reviews on Gartner Peer Insights (as at September 2026).

One honest limitation

ERPNext's Payment Reconciliation tool has no fuzzy allocation and no write-off tolerance. If a customer pays ₹99,997 against a ₹1,00,000 invoice because their bank deducted charges, the tool will not clear that invoice. It throws an error above a 0.009 tolerance. You handle the ₹3 on the Payment Entry, before you ever reach reconciliation.

A configurable payment tolerance is the cleaner answer to this, and ERPNext does not have one. If your business routinely absorbs small short-payments (export customers paying net of intermediary bank charges, for instance), build the deduction into your Payment Entry workflow from day one rather than discovering it during month-end close.

The second constraint is volume. The 50-record default fetch limit exists for a reason: the tool loads candidates into a form. Teams with 1,000+ open documents per party need the scheduled Process Payment Reconciliation job and tight filters, not the interactive screen. Plan for that in the design, not after go-live.

What changes in ERPNext v16

Version 16 adds a Bank Transaction Rule DocType: priority-ordered rules matching on transaction type, amount range and description patterns, which classify a bank line and assign the account and party automatically. Accompanying settings run the rules hourly against unreconciled transactions, and a transfer-matching window (default 3 days) catches movements between your own bank accounts.

This is ERPNext's structural answer to Odoo's Reconciliation Models. It is rule-based, not AI (which, for an audit trail, is the correct design).

Frequently asked questions

Does ERPNext support automatic payment reconciliation? Yes. Enable Auto Reconcile Payments in Accounts Settings, then create and submit Process Payment Reconciliation documents. A background job processes the queue at a configurable interval between 1 and 59 minutes.

What is the difference between the Payment Reconciliation and Bank Reconciliation tools in ERPNext? Payment Reconciliation matches payments to open invoices for a party, correcting your ageing report. Bank Reconciliation matches bank statement lines to vouchers in your ledger, correcting your cash balance. They are separate tools and you need both.

Can ERPNext import bank statements automatically? Yes, through Bank Statement Import for CSV, Excel and Google Sheets files, with column mapping configured once per bank. Automated feeds are available via Plaid for supported institutions.

How do I undo a payment reconciliation in ERPNext? Use the Unreconcile Payment DocType. Select the voucher, fetch its allocations, and submit. This unlinks the allocation without cancelling the underlying payment or invoice.

How many invoices can ERPNext reconcile at once? The interactive tool defaults to 50 invoices and 50 payments per fetch, configurable via the Invoice Limit and Payment Limit fields. For higher volumes, use the scheduled Process Payment Reconciliation job with a queue size between 5 and 100.

tech
Published September 16, 2026

Schedule a free 30-minute consultation to explore ERPNext

Lets ChatMail Us
Ankita Sinha
Author
Ankita Sinha
Consultant . Girman Tech

Ankita Sinha is an ERPNext Consultant at Girman Technologies, working on ERPNext implementation, business process optimization, requirements gathering, and client support. With a background in research and data analytics, she brings a structured, data driven approach to understanding business requirements and ERP processes.

Girman-logo
frappe-partner

Girman Tech is a Frappe Certified Partner in Bangalore, trusted for delivering tailored ERPNext solutions to businesses of all sizes. As an official Frappe and ERPNext Partner in Bangalore, we help companies to streamline operations and grow with open-source ERPNext solutions.

From seamless implementation to customization and ongoing support, our team ensures businesses unlock the full potential of open-source ERP. Based in Bangalore, we serve clients across India and globally with reliable, scalable, and future-ready ERP solutions.

Recognized By

footer_startupindia

BUSINESS

mail

contact@girmantech.com

phone

(+91) 93801 94282

Accounting ERP Software in Bangalore

Accounting ERP Software in Karnataka

HR Contact

mail

careers@girmantech.com

phone

(+91) 7558354540

CONTACT

9380194282

girish@girmantech.com

manish@girmantech.com

ADDRESS

Girman Technologies Pvt Ltd

BRIGADE NORTHRIDGE, PHASE-1, Yelahanka, Bangalore, Karnataka, India 560064

FOLLOW US