Exchange Rate Error When Creating Purchase Invoices from Goods


I am experiencing an issue with ERPNext version 15.21.0 where an error message appears during the creation of purchase invoices from Purchase Receipts. The error indicates that the exchange rate cannot be 0 or 1. Interestingly, this issue has only occurred with a couple of of these Purchase Receipts conversions into invoices, and not others, which suggests some inconsistency in how exchange rates are being handled or retrieved.

Here are the details:

**ERPNext Version:**v15.21.0 (version-15)

  • Issue: Error message stating “Exchange rate cannot be 0 or 1” when creating purchase invoices/bills from Purchase Receipts.
  • Frequency: Only occurs with some invoices, not all.
  • Specific Context: The error emerges specifically during the transition from Purchase Receipt to purchase invoices.

Could you provide insights into why this might be happening? Is there a known issue in this version related to exchange rate calculations, or could it be related to specific configurations or data associated with the affected Purchase Receipt or their subsequent invoices? Any guidance on troubleshooting this issue would be greatly appreciated.

Thank you for your assistance.

Bump for help!

I want to second this. My country has a currency that is tied to another. We need to use it on invoices, but we also use the other currency. I can’t set a 1 to 1 exchange rate for them.

Thanks for contributing, rob1.

I’ve found a temporary work-around with setting the currency manually to the current exchange rate for the relevant receipt dates, but this also requires designating a forex gains/loss account on the accounting side of ERPNext. We don’t currently use the accounting side of ERPNext so this temporary, non-ideal, solution is working for us so far. I would rather the currency be pulled correctly from what was setup on the buying/selling settings for currencies.

If anyone more knowledgeable can help that would be wonderful, likely a missed setting that I couldn’t find.


I want to add another use case when this is relevant and the same incorrect error is shown.

We are dealing with crypto currencies and one the currencies is USDC which is tied to the US dollar and the value is exactly 1. i.e. 1 USDC = 1 USD.

Hence this error check for 0 or 1 (in this case 1) is invalid and needs to be corrected.

please can you name the country and currency, better to know when the change is being considered