Payment Reconciliation

Payment Reconciliation

The Payment Reconciliation feature in Bench allows users to track and manage how incoming or outgoing payments are allocated to various outstanding documents (e.g., invoices, bills). This module helps you see how much of a payment is applied, how much remains unallocated, and provides a complete breakdown for reporting and audit purposes.


🧾 Purpose

Payment reconciliation ensures that partial and full payments are correctly matched to vouchers such as: - Sales Invoices - Expense Entries - Supplier Invoices - Credit Notes

This is especially helpful when: - Payments do not exactly match a document total. - A single payment settles multiple documents. - There are currency differences (multi-currency support is built-in).


📋 Key Components

🔹 Payment Reconciliation (Parent Record)

This is the central record that ties everything together.

Field Description
Payment A reference to the original payment transaction.
Customer The customer linked to the payment (for receivables).
Supplier The supplier linked to the payment (for payables).
Currency The currency of the payment.
Payment Type Specifies whether itΓÇÖs a customer or supplier payment.
Allocated Amount Portion of the payment that has been applied to documents.
Unallocated Amount The remaining amount not yet applied to any document.

🔹 Payment Reconciliation Items (Child Records)

Each item represents one voucher (e.g., invoice or bill) the payment is applied to.

Field Description
Payment For The document type being paid (e.g., invoicing.salesinvoice).
Voucher ID The specific record ID of the document being paid.
Due Total due amount on the voucher in its currency.
Allocated Amount How much of the payment has been applied to this document.
Unallocated Amount Amount remaining unpaid on the voucher after this payment.
Exchange Rate Rate between the document's currency and the company base currency.
Base Due / Allocated / Unallocated Base currency equivalents for reporting purposes.

Hidden fields such as base_due, base_allocated_amount, and exchange_rate ensure financial consistency across multi-currency operations.


🔄 Allocation Logic

The system will automatically calculate how much of the payment to allocate to each document using the allocate() method in the background. This:


🔎 Example Use Case

Let's say you receive a $1,000 payment from a customer. The system allows you to:

  1. Select which invoices this payment applies to.
  2. Allocate $600 to Invoice A and $400 to Invoice B.
  3. Track remaining balances on each invoice and the payment itself.
  4. View base currency values for accurate accounting and reporting.

🛠️ Tips