Handling Excess Customer Payments
This document outlines the standard behavior for excess customer payments (Unallocated Amount) and provides the steps to configure ERPNext to automatically post these excess amounts to a separate Customer Advance (Liability) Account.
1. Standard Behavior: Unallocated Amount
By default, when a Payment Entry is created for a customer and the Paid Amount exceeds the total amount of the invoices it is linked to (the Allocated Amount), the excess amount is stored against the customer's Debtor (Receivable) account.
How it Works:
Excess Amount is Stored: The difference is labeled as an "Unallocated Amount" within the Payment Entry.
Credit to Customer: This unallocated amount acts as a credit balance on the customer's account.
Future Allocation: This credit can be automatically or manually allocated against future outstanding Sales Invoices for the same customer.
No Automatic Liability Posting: This excess amount does not automatically move to a separate liability account
2. Configuration for Advance Payments (Liability Account)
If your business process requires the excess amount to be immediately posted to a specific Customer Advance Liability Account (instead of remaining in the Debtor/Receivable account), you must configure the Advance in Separate Party Account feature.
Required Configuration Steps:
Step 1: Create the Customer Advance Account You must first create a specific Account of type 'Receivable' under the Liability Account Head.
- List itemGo to Accounting > Chart of Accounts.
- Create a new account (e.g., Customer Advances - Liability) under a primary Liability account (e.g., Current Liabilities).
- Set the Account Type to Receivable. (Note: Using the 'Receivable' type under Liability is a specific ERPNext requirement for this feature to link correctly to the customer ledger)
Step 2: Set the Advance Account in Company Master Next, you must specify this newly created account in the Company settings.
- List itemGo to Accounting > Company.
- Select your Company.
- Scroll to the Accounts section.
- In the field Advance Payments, select the Customer Advances - Liability account you created in Step 1.
- Save the Company record.
3. Creating a Payment Entry for Advance Allocation
Once configured, the system needs to be instructed to treat the payment as an advance rather than linking it to an invoice that results in an excess.
Recommended Method: Separate Advance Payment Entry The most straightforward and reliable method is to create the payment entry specifically for the advance amount.
- List itemGo to Accounting > Payment Entry.
- Set Payment Type to Receive.
- Select the Customer.
- Enter the Advance Amount (e.g., $2,500) in the Paid Amount field.
- Crucially: Do not link any invoices in the Allocations table. Leave the table empty.
System Behavior After Saving:
When the Payment Entry is saved without any allocations, the full Paid Amount will be automatically directed to the Customer Advances - Liability account configured in the Company master.
Alternative Method: Splitting the Payment
If the customer pays a single amount covering an invoice plus an excess, you can split the payment into two entries:
- List itemPayment Entry 1 (Invoice): Create a Payment Entry for the exact amount of the existing Sales Invoice.
- Payment Entry 2 (Advance): Create a second Payment Entry for the excess amount (e.g., $2,500), following the Recommended Method above (no invoice allocation).
This process ensures the excess funds are cleanly moved into the dedicated Liability account for proper accounting.