ERPNext : Rate difference account

I am working on ERPNext v15 with Perpetual Inventory enabled and have a question regarding Purchase Return accounting when the return rate differs from the original purchase rate.

Scenario

  • Perpetual Inventory = Enabled

  • Item Valuation = Moving Average/FIFO

  • Purchase Receipt:

    • Qty: 10

    • Rate: ₹100

    • Value: ₹1,000

  • Purchase Invoice:

    • Qty: 10

    • Rate: ₹100

    • Value: ₹1,000

Everything posts correctly.

Later, while creating a Purchase Return, I change the return rate from ₹100 to ₹120.

Expected Accounting

The original Stock Received But Not Billed (SRBNB) amount should be reversed using the original purchase value (₹1,000), and the additional ₹200 should be posted to a dedicated Rate Difference Account.

Example:

Stock Received But Not Billed    Cr    1,000
Rate Difference Account          Dr      200
Stock Account                    Dr    1,200

(Or equivalent debit/credit depending on whether the return rate is higher or lower than the original purchase rate.)

Current ERPNext Behavior

ERPNext posts the entire return value against SRBNB.

For a return at ₹120, it effectively posts:

Stock Received But Not Billed    Cr    1,200
Stock Account                    Dr    1,200

As a result:

  • SRBNB is affected by the changed return rate.

  • No amount is posted to a Rate Difference Account.

  • The rate variance is not separated from the SRBNB reversal.

My Questions

  1. Is there any standard ERPNext configuration that supports this behavior while keeping Perpetual Inventory enabled?

  2. Has anyone implemented posting the rate variance to a separate Rate Difference Account during a Purchase Return?

  3. If customization is required, which methods/classes should be overridden so that:

    • SRBNB is reversed only for the original purchase amount.

    • The rate variance is posted to a configurable Rate Difference Account.

    • Perpetual Inventory and stock valuation remain fully reconciled.

I’m looking for the best-practice approach to implement this without breaking ERPNext’s inventory and accounting reconciliation.

Hi @Rangubha_Makwana

This is not a real case and no-one on earth return items back to supplier with exaggerated rates.

The basic of ERPs is to capture data on transactional level with real world meaningful scenarios and those debit note and purhcase return can cover them dynamically.

Thanks for your response. Let me clarify the business scenario, because the ₹120 return rate was only an example to illustrate the accounting issue.

Consider this case:

  • Purchase Receipt: 10 Qty × ₹100 = ₹1,000

  • Purchase Invoice: ₹1,000

After receiving the goods, we find a quality issue. Instead of physically returning only 1 item, we agree with the supplier that we will keep all 10 items but receive a commercial adjustment of ₹100 (or equivalently, issue a debit note for ₹100).

Another way to represent this in ERP is to create a Purchase Return for the value adjustment:

  • Return Qty: 10

  • Return Rate: ₹10

  • Return Value: ₹100

The net amount payable to the supplier becomes:

  • Original Purchase Invoice = ₹1,000

  • Purchase Return (Debit Note) = ₹100

  • Final Amount Payable = ₹900

My question is about the accounting entry generated by ERPNext in this situation.

Currently, ERPNext posts the full return amount through SRBNB. My expectation is that the original SRBNB reconciliation should remain intact, and the ₹100 commercial adjustment should instead be posted to a configurable Rate Difference Account (or similar account), while keeping Perpetual Inventory fully reconciled.

Is there a standard way to achieve this in ERPNext, or is customization the only approach?

@Rangubha_Makwana The SRBNB is booked only for items declared as stock items. Further returning them with another rate can not book the difference in any difference account as it is both contrary to accounting practice as well purchasing best practices.

Custom server scripts can handle such accounting for difference account but there is no logical ground to achieve such a case due to the fact that accounting can book valid fiscal transactions record happened on rational basis. Hypothetical transactions are failed on accounting standards.

Thanks for the response let me check with some customization if i can get the result