Currency exchange not correct result

Hi,
I have a question regarding currency exchange and exchange rates.
To see the exchange rate I tried some webs but for the example I use the web: https://www.xe.com/
The problem I have is that if I enter an amount to go from usd to eur, it does not give me the same result in the currency converter as in tryton, this is because the converter directly calculates the amount per the rate to convert from dollar to euro, but tryton does the following operation:

to_currency.round(amount * to_currency.rate / from_currency.rate)

I understand that this operation is done because the conversion can be done in different directions.
But the problem comes when the division between to_currency.rate / from_currency.rate being done will not result in the same exchange rate
which is applied in the converter. Therefore the final result will not be the same in tryton as in the converter. It’s a relatively small difference but it matters.
Besides, if in tryon I do the operation directly → to_currency.round(amount * from_currency.rate), taking the exchange rate that is applied in the converter,
then it is very close to being the same result. But it is not identical, I think this is because the converter does not show all the decimals used in its operation.

For example, in this customer invoice it is converted from usd to eur, therefore I put the last exchange rate in Currencies so that it is taken in the invoice,
Because of the tryton operation, I will put this 1 EUR = 1.05712 USD, but as I said before in the converter, multiply directly by 1 USD = 0.945966 EUR.

And after debugging the values ​​of the operation and the result are as follows:

image

Apart from the fact that it is not identical, the difference can also change depending on the exchange rate that is used at the moment, in this case it is very little difference.

Why? Indeed what matters for accounting is that the conversion in both ways (or using intermediary currency) give always the same result at a specific date.

It matters for us, in this case was a small difference but is some cases it’s quite a lot and the users complain about that because the exchange give a different result than tryton.

Well in your example which is a big number there is a difference of just 0.07€ which does not seems to much compared to 1.618.000€

Account booking have not the same constraint as web trading website.
What is exactly the problem? The amount in the accounting is internal and never displayed to the customer. And more over when the customer will pay, it will be a different rate. So you will always have currency exchange profit and lost.

In another case that I tried this morning with the same amount 1.710.482,60 usd, and with the taxes:
1 EUR = 1,05398 USD
1 USD = 0,948788 EUR
The result has been 1.622.885,43 Euros. And using 1,05398 tax on tryton the result has been 6 euros lower and multipliyng directly with the other tax 0,948788 it was very close. That is a small difference or is pretty much for you?

image

So It doesn’t have to be identical as the web to be correct?

Usually the rule for accounting is to use the same rate for the same date and of course the rate should be valid (usually countries provide average rate to use like daily or monthly).

It is normal to have rounding issue if you are converting amounts greater (or close) to the precision of rate.

But mainly the problem is on the website because:

>>> 1 / 1.05398
0.9487846069185374
>>> round(1 / 1.05398, 6)
0.948785

So their rate are not equivalent at all.

You have reason, anyways our problem went beyond the value of the rate, it was also involved but it was a little difference. Thanks a lot!

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.