Rate differences in Purchase Receipt and Purchase Invoices

Hello Community,

Reiterating over the issue posted here in this post

We are trying to make an enhancement in the Purchase Cycle and would like your feedback on how certain scenarios should be handled and what will be the best accounting practices.

Scenario 1

Creation of Purchase Invoice from a Purchase Receipt where there is change in rates due to currency exchange rate changes

This is what currently happens when a Purchase Invoice is made from a Purchase Receipt with exchange rate difference.

For Eg: Consider an item is being received at $100 at an exchange rate of 75 Rupees per Dollar. The following are the accounting entries posted on submitting the Purchase Receipt

Now suppose at the time of making a Purchase Invoice the exchanges rate changes from 75 Rupees per Dollar to 70 Rupees per Dollar. Then in this case the following Entries are passed

Now even though all the items are fully invoiced there is still an amount of Rupees 500 left in the Stock Received but not billed account. Now the question is what should be done of the remaining 500 Rupees in the Stock Received But Not Billed Account.

Here are the possible options:

Option 1: Debit Stock Received But Not Billed Account for 500 Rupees against Realized Exchange Rate Difference Account (RED) on Posting of Purchase Invoice itself and keep the item valuation based on Purchase Receipt Rate

Option 2: Debit Stock Received But Not Billed Account for 500 Rupees against Stock In Hand Account and repost item valuation on posting Purchase Invoice

Would like the community’s view on which option is followed as the best accounting practice.

Also in case of volatile items the same scenario can happen due to changes in rate of item itself. The rate of items may be different between Purchase Receipt and Purchase Invoice, what should be done in such a scenario from accounting point of view. Should the same process be followed as for the above scenario.

Scenario 2

Creation of Purchase Receipt after a Purchase Invoice with exchange rate difference

Similar Issue will be faced while creating a Purchase Receipt (GRN) after Purchase Invoice. In this scenario what should be the final document deciding the item valuation, rate in Purchase Invoice or the Rate in Purchase Receipt?

Consider the same example as above these are the possible options available on posting Purchase Receipt:

If Purchase Invoice is considered for final valuation then Stock Received But Not Billed Account will be credited with 7000 Rupees and Stock In Hand Account will be debited with 7000 Rupees

If Purchase Receipt is to be considered for the final valuation then Stock Received But Not Billed Account and RED account will be credited with 7000 and 500 Rupees respectively and Stock In Hand Account be debited with 7500 Rupees


@Fred1 @LiyakatAli could you please provide some inputs?

Exchange gain/loss needs to be understood in two categories:
(1) Unrealised exchange G/L: this is an imaginary number and not a real gain/loss in monetary value
(2) Realised exchange G/L: this is real monetary value and a result of money movement in bank transaction.

Looking at the above use case, PR or PI booking and the rates booked at the time of the transaction will generate Unrealised exchange G/L and when the PI is paid off, the rate used by the bank will create Realised exchange G/L. Hence, in the common parlance, there are two entries: (a) booking of the expenses, ie. via PI and (b) making the payment and the difference of exchange rate between (a) & (b) is of accounting concern.

The difference in exchange rate created between PR and PI is unnecessary and it does not add any accounting value. The movement PR is generated, risk and reward are transferred and the PI becomes due. It is only a logistics matter where a separate PI is sent at a different date. Hence even though PI is received at a different date, the expense booking should be done at the same rate as PR exchange rate.

Booking PI from PR or use the same rate, if booked independently is the correct accounting practice.

From the accounting standard point of view, elements are measured at the time economic benefits are received or incurred. So once the service or goods are received, the exchange rate at that point should be used in booking. In business logic you cannot raise PI for the service or goods you have not received. And it is also deemed the the PI is raised at the rate the PR is booked because at that point economic benefit is received.
So the concern should be at the point of paying the supplier, what rate prevails at which exchange gain or loss will be booked if the rate differs from the rate used in the PI


For what its worth - we use current ERPNext guided business process to resolve these issues routinely - we have an imported item distribution business. Do not understand the need of above changes - as you will run afoul of unrealized versus realized gain/losses.

There are two issues that we have to resolve each time. One is the value of the USD PI in local currency - is different than the PO rate - as exchange rate has changed. The other is valuation of goods at time of receipt vs PO rate. We keep exchange rate same for PI as PO - and then at time of payment of PI - we book exchange gain loss - consistent with @LiyakatAli recommended accounting practice - as only then it is a realized gain/loss. In interim there is an unrealized exchange gain/loss but our business does not have need to track it. In interim one can run an exchange rate revaluation - you can then attribute this gain/loss to unrealized gain /loss account.

For stock - we first post a PR at same valuation as PO. However at time of import - the govt values the goods at an official rate - to compute the invoice value in local currency / prevailing rate - to calculate local taxes. This is the permitted official valuation of goods - referred to as nationalization of imported goods. The difference in valuation (PR@PO rate vs Govt ) - is applied to valuation of goods via the LCV. The difference in value is a realized gain/loss and distributed to the items according to their valuation in PI. The Govt import valuation document becomes the backup for the realized gain/loss in valuation.

I am under the impression that ERPNext documents suggest the LCV route for valuation difference - so unclear of the need. Also the stock received but not billed account generally is used for tracking purchase receipts whose invoices are not posted as yet. To use it as an account head for unrealized gain loss makes the COA bit messy. IMO.

Agree. SRBNB is only to track the stage of the purchase cycle and not to be confused with calculating exchange G/L.

In the interim of Expense booking (could be basis PO/PR/PI) and Payment of expenses, there is no real business use case or accounting reason to track the gap in the exchange rate. At least I’m not aware of any such reason for keeping the track of differences from PO to PR to PI.

I’m late to this conversation, but have been very interested in the topic lately.

Maybe it’s out of scope for the original topic, but It seems the solutions are intended to solve the problem of left over balances in “received not billed”, but (at least for us) the bigger problem is not knowing the true value of cogs, which drives future pricing.

For us, payment to the supplier can happen months after PR, PI, SI and DN. At that time it’s too late to adjust stock value to reflect our true cost, which drives future pricing.

@Deepesh_Garg - can the scope of your original post be expanded to include re-valuing existing stock transactions during payment entry to reflect true cost?

I don’t think you should re-evaluate your stock once it has been booked/received. My understanding is as follows:

  • You use exchange rate A when you receive the goods.
  • When you receive the invoice (at a later stage), you use rate A to match your goods receipt.
  • At month/period end, you might have to re-evaluate your outstanding foreign exchange payables with the month-end exchange rate B. Any difference goes to unrealized exchange gain/loss
  • At the time of payment of the supplier invoice, you get an actual exchange rate C from the bank. Any difference that arise from the payment and the latest re-evaluation goes to realized exchange gain/loss

When you receive the goods, you transfer ownership and that’s when you fix your cost base. Anything after that is finance/accounting related and should not influence your product cost (directly). If the foreign currency amounts are substantial, you might want to hedge some portion of this.

I can appreciate fixing costs at time of receipt, but that’s a perfect world scenario. Many of us re-value stock using an LCV to capture lagging freight or customs bills, etc. That functionality exists in an attempt to capture stock’s true cost. I see exchange rate adjustments at the time of payment as an extension of that.

To set competitive pricing and sufficient margin, sales relies on an item’s cost as reported in inventory. If these differences are only accounted for within finance, they will be hidden.

Different businesses have different practices. While freight and custom expenses are reasonable to include (as it’s the total landing cost), FX differences are definitely not part of these as best accounting practices. Assume you pay it immediately, then you won’t have FX differences. You might have some small financing costs as you lose some interest on the amount (or have to pay in case you finance the early payment).

I’m not saying you shouldn’t do it, but I would argue against building it as a standard feature for ERPNext, as it is not best practice.