Feature Requests
Share ideas, discuss and vote on requests from other users in community

Updating Client Currency on Account - Invoicing Retained with Old Currency.

PretecsChris shared this idea 5 years ago
Under Consideration

If a client requests us to switch their currency on their account, that all previous invoicing remain in the old currency and new invoices will be shown in the new currency. From an accounting purpose, this is a huge issue with the archived information not matching what currency they paid in, and this should be retained for perpetuity.

It would also be helpful if the client could set on a product level, not on a client level, what currency they wish to pay in.

Comments (46)


Right here

never designed or intended to be used for the purposes of changing an existing clients currency once they have billing and transaction activity

What WHMCS should do is make it so that IF account is empty, this is accessible from Profile view, if account has been used, invoice generated or service added, disable this.. Just make it no longer possible at least since you don't really convert everything in the account. That way people can't make the mistake thinking they can swap out currency since you obviously don't have that feature.



I'm really surprised to see this major invoicing issue being discussed as a "Feature request" since 5 years and some other low priority stuff with less voting get implemented... This problem should have been taken into consideration as soon as WHMCS provided multi currency support.

Let's start by the invoices alone, without thinking about currencies. Once invoices are sent to the client these are legal documents that should not change, especially after being paid. It means that even in 10 years, exporting the invoice should be exactly the same as today no matter what happened on the client configuration (here we only talk about currency but names and addresses should also be frozen). Changing them not only cause problem to us but to our clients as well. You need to edit a paid invoice? Cancel it and create a new one as it should normally be done.

First idea to have a quick workaround without even touching the currency implementation would be to have an option to freeze invoices. It solves the actual reported problem on the invoices side. Here is a quick and basic idea on how I would implement it.


- Add an option like "Freeze Paid Invoice", disabled by default.


- Use the invoice currency instead of client currency for all invoices

- If option enabled and status = Paid, block editing the invoice (many possibilities: readonly fields, remove the "Save changes" button, etc.).

DB and coding

- Add a field "currency" to tblinvoices. This will contain the currency code and not the id! Reason: if you remove the currency, your invoice changes as currency is not found. [1] [2]

- CreateInvoice: currency_id = current client currency

- UpdateInvoice: if option enabled and status = 'Paid' = frozen invoice = do nothing (throw error?).

Just with this idea, you solve the biggest part of the problem raised by this feature request: invoice won't change in the future (and more as it might help from a legal/audit perspective too).

Same idea for the transactions: keep the currency the transaction was made with.

Now for the currency change, as I said it's something that should have been in mind as soon as the idea of allowing multiple currency at the same time was introduce. Some clients need to change their account currency. It's rare but it happens. Creating new accounts is another workaround but add complexity for the client (multiple accounts to check) and internal staff (more work).

Let's say the client want to switch from USD to EUR.

1. He has to contact us first (I would not advise automation because of potential abuse risks)

2. As someone already gave the idea, we have 2 choices when starting the currency change process:

- convert related orders/services/etc. pricing of this client with the current conversion rate

- keep the same value

3. If convert option is selected, convert everything to the new currency, including credits.

Everything before the switching date will keep the old currency reference. It means that refund for old invoices will be done with the old currency for example. New invoices/orders will be done

That's all for the main/basic idea. I know that it's easier said than done.

[1] This will trigger another problem with currencies: WHMCS allows everything as currency code when adding a currency. Currency code must be ISO 4217 compatible. It's simple to solve this as it "only" requires :

- remplace the text input by a select input with all available ISO 4217 currency codes

- OR let the text input but throw an error if the code is not a ISO 4217 valid one...

[2] I would even go further and adding client name/address and our company address too in the frozen data so invoice are 100% the same any time.


Sice we are a huge ammount of customers, and pay not a little monthly to get this service this is a MUST DO for WHMCS. Period.