Skip to main content

Customer Advance Payments in ERPNext: Posting Excess Amounts to a Liability Account

This page explains the standard behaviour for excess customer payments (the Unallocated Amount) and how to configure ERPNext to automatically post those excess amounts to a separate Customer Advance (Liability) Account.

1. Standard behaviour: Unallocated Amount

By default, when a Payment Entry is created for a customer and the Paid Amount exceeds the total of the invoices it’s linked to (the Allocated Amount), the excess is stored against the customer’s Debtor (Receivable) account.

How it works:

  • Excess amount is stored: the difference is labelled 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: the credit can be allocated automatically or manually against future outstanding Sales Invoices for the same customer.
  • No automatic liability posting: the excess does not automatically move to a separate liability account.

2. Configuration for advance payments (Liability Account)

If your process needs the excess to be posted immediately to a specific Customer Advance Liability Account  rather than sitting in the Debtor/Receivable account configure the Advance in Separate Party Account feature.

Step 1: Create the Customer Advance Account

First, create an account of type Receivable under the Liability account head:

  1. Go to Accounting > Chart of Accounts.
  2. Create a new account (e.g. “Customer Advances – Liability”) under a primary Liability account (e.g. Current Liabilities).
  3. Set the Account Type to Receivable.

NOTE

Using the Receivable type under a Liability head is a specific ERPNext requirement for this feature, it’s what links the account correctly to the customer ledger.

Step 2: Set the Advance Account in the Company master

Next, specify this new account in the Company settings:

  1. Go to Accounting > Company.
  2. Select your Company.
  3. Scroll to the Accounts section.
  4. In the Advance Payments field, select the “Customer Advances – Liability” account from Step 1.
  5. Save the Company record.

3. Creating a Payment Entry for advance allocation

Once configured, the system needs to be told to treat the payment as an advance, rather than linking it to an invoice and producing an excess.

Recommended method: separate advance Payment Entry

The most straightforward and reliable approach is to create the payment entry specifically for the advance amount:

  1. Go to Accounting > Payment Entry.
  2. Set Payment Type to Receive.
  3. Select the Customer.
  4. Enter the advance amount (e.g. $2,500) in the Paid Amount field.
  5. Crucially, do not link any invoices in the Allocations table leave it empty.

When the Payment Entry is saved without any allocations, the full Paid Amount is automatically directed to the Customer Advances – Liability account configured in the Company master.

Alternative method: splitting the payment

If a customer pays a single amount covering an invoice plus an excess, split it into two entries:

  1. Payment Entry 1 (Invoice): a Payment Entry for the exact amount of the existing Sales Invoice.
  2. Payment Entry 2 (Advance): a second Payment Entry for the excess (e.g. $2,500), following the recommended method above with no invoice allocation.

This cleanly moves the excess funds into the dedicated liability account for proper accounting.

TIP

If you want every advance to land in the liability account, raise advances as their own unallocated Payment Entry from the start. Splitting after the fact works, but creating the advance entry separately keeps your receivables and customer advances cleanly separated without extra steps.

Related Topics

  • Payment Entry
  • Advance Payment Entry
  • Chart of Accounts
  • Company
  • Sales Invoice

SUMMARY

By default, a customer’s excess payment is stored as an Unallocated Amount against the Debtor (Receivable) account, available to allocate to future invoices, and does not move to a separate liability account. To post excess amounts to a Customer Advance Liability Account instead, create a Receivable-type account under a Liability head, set it in the Company master’s Advance Payments field, then raise a Receive Payment Entry for the advance with no invoice allocations the full amount is directed to the advance liability account. For a combined payment, split it into one entry for the invoice and one unallocated entry for the advance.

Rating: 0 / 5 (0 votes)