My business currency is AUD and I have a client that I invoice in EUR. And I am running into weird issues with currency exchange rates through the whole invoicing and payment process.
- First, when creating invoice, I assume, automatic exchange rate should be taken, but the rate is reversed (0.61807)
- Then I enter custom/correct rate for the date of the invoice is issued (1.50869)
- The client pays the invoice in a few days, so I am entering the payment. Invoice Ninja now offers some automatic exchange rate (1.61794)
- Usually this is not the exchange rate that my bank applies, so I enter custom rate (1.50869)
- Then, when I go to the invoice, I can see that the rate was adjusted automatically, but to some automatic rate. It’s not the rate I entered when creating the invoice, and it’s not the rate that I entered when creating a payment, so I have to adjust it again after the invoice is paid.
I think, the payment should not change the rate of the invoice, or if it does, it should change it to the one that is entered when creating payment. Or Invoice Ninja could have an option, where you could choose if you want the rate to be updated from the payment, or you want the original rate to be unchanged. I can see benefits from both options depending on situation. However, I consider current behavior to be a bug.
We’re adding an option to reverse the way the rate is calculated which I think may help.
Currently the app assumes the product price is the company currency and converts to the client currency, you’ll soon be able to reverse it instead.
For me personally, initial currency inversion is probably the least problem here.
The biggest issue, I think is, that currency exchange rate for the invoice is changed in the unpredicted way. I mean, the user should always know, what the invoice currency exchange rate will be. Either it’s the one that was saved during the invoice creation, or the one that has been saved when entering payment. Setting it it to some automatic rate is probably the worst case from the accounting point of view.
It’s even worse with the self-hosted version, where the rate is update to 1 after entering the payment.
I’m not sure I follow your description above, the invoice and payment exchange rates are separate. If you set the payment rate it shouldn’t affect the invoice and visa-versa.
If the rate is being set to 1 it may be because an exchange rate API hasn’t been enabled.
That is the issue I am trying to point out here. Invoice currency exchange rate should not be affected by the payment or any other action, however, it is.
I had a quick look at the code, and can see that InvoiceService->setExchangeRate() is called when marking invoice as sent, as paid, and also when applying payment. Probably that is the cause of the issue, as the exchange rate is applied from the CurrencyApi in that function and the manually entered exchange rate is overwritten. I don’t think that any of the actions mentioned above should change the rate.
@david any thoughts on this?
If a rate is already set I don’t think the backend should ever change it, this is both for payments and invoices.
In the next release, the exchange rate will not be changed after it is set.