Feature Requests
Share ideas, discuss and vote on requests from other users in community
Updating Client Currency on Account - Invoicing Retained with Old Currency.
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.
We're using you Invoice Fix addon in our WHMCS. I've also made a script to import into mod_invoicedata table all data coming from invoices made before the installation of this addon. Everything is working fine but I think that there's a big problem on your side. Let me explain.
Let's suppose that i'm a client and that i place an order of 1.000 USD. As soon as i pay i get my invoice of 1.000 USD. Then i pay for another service 2.000 USD. Now i have 2 invoices with a total amount of 3.000 USD.
+++ Individual income tax return +++
I change the currency of my account to EUR so that WHMCS replace $ with € in all my invoices. Now i can report that i've spent 3.000 EUR instead of 3.000 USD. With the current change rate i'll report that i've spent 3.938 USD! I though that with Invoice Fix i would be able to fix this issue since in "mod_invoicedata.clientsdetails" i can see that you keep a track of currency ID but i was wrong. Why don't you use it?
This is a really dangerous problem because clients can fake their individual income tax return by editing our invoices and we can get serious problems. It's not acceptable that clients can freely change the amount paid on their existing invoices.
Do you have any workaround? When do you plan to fix this very big problem?
On a side note i forgot to say that if you are using tools like this (http://blog.whmcs.com/?t=67990) you'll frequently have to face to this very serious problem. Just think about one of your client traveling around the world.
Let's suppose that he pays from Italy an invoice of 1000 EUR. Now he moves to UK and the invoice becomes of 1000 GBP which is 1176 EUR. Next month he goes to Japan and his invoice becomes of 1000 YEN which is 8 EUR, in China 124 EUR, in Chile 2 EUR, in Iran 0.06 EURO.
It's absurde! A Japanese could order a service of 1000 YEN then download the invoice via proxy from Italy and voilà . Now he gets an invoice of 1000 EUR which is 992 EUR higher!
Absolutely. This is a huge mess. Its not uncommon for a customer to request his account to be changed to another currency. Example, you have customers in Europe but just now you started to offer products in Euros. Its only normal for this customers which where paying in your default currency to want to change to Euros now.
Another example is someone moving to another country. Lets say they move from Europe to the states and want now their current account in USD.
Said this, currently its a major accounting mess.
Changing the currency changes the currency symbol on past invoices which is a bug. Since if the customers paid 120$ in one invoice, and 12$ in another invoice, you changed his account to Euros and now it says he paid 120EUR and 12EUR.
This is a major bug. Paid invoices should not have their symbol changed and problem solved. Open invoices would change to the current new EUR value in this example but PAID/CANCELED invoices should not be touched. It seems rather than a feature request this is a WHMCS bug. It changes the currency symbol on all the invoices for that customer.
How hard can it be to make a pre-check on the PHP code that runs this?All it needs to do is skip the invoices that have the status PAID/REFUNDED/CANCELLED.
I forgot to update this open feature request. I managed to fix this issue "blocking" particular values on my invoices such as name, lastname, vat id and of course currency symbol too. Now clients can freely change their default currency. All invoices keep the "original" currency value.
How did you blocked it?
As far as I know, this feature can be implemented if the PHP code checks for the value on invoices "Unpaid" and the issue is solved. WHMCS should only change them on this invoices and not others. All other invoices with a status which is not "Unpaid" should be skipped and its currency symbol untouched.
Agreed.
This is a *HUGE* mess.
Changing the currency for a client resulting in all past invoices (paid or not) going to that currency as well is ridiculous. It shouldn't work like that at all, and it is a bit strange for an accounting tool to have such a major bug inside of it.
If a client moves from USA to Europe for example, or vice versa, and now wants to pay in that currency: it should be possible! Without all the trouble.
It also causes issues for business owners within the EU as they will have to do a currency conversion for every payment not received in EUR by clients living within the eurozone and having to pay taxes...
This must be fixed.
As I have already said in my previous comment, it's possible to fix this issue with a custom modification (addon module + hook + few lines of code in invoice PDF). I don't think that WHMCS is interested in fixing this because on paper it's not a bug. It's how WHMCS is meant to be used. Sad but true :)
Guys, these problems can be prevented by using our Cached invoices module.
It saves all the necessary data about each created invoice to the database, including the currency and even it's number format. The module even displays the right currency for the invoice while you're viewing it from the admin area.
So, in a nutshell...the process looks like this:
invoice gets generated -> data gets written to a database thus preventing stupid changes for all of the older invoices if the user decides to use a different currency after that -> if invoice is paid, module creates a PDF file locally (optional) thus preventing ANY changes in the future...invoice stays the same forever, even if you change your WHMCS theme and the user gets the same invoice data, no matter when he tries to view/download it. So, you're happy, your accountant is happy...
You can even edit the data for each saved invoice and change the currency afterwards if you want, among other things.
Check out the WHMCS forums thread -> http://forum.whmcs.com/showthread.php?95294-M-BIT-Cached-Invoices-Addon-Module-for-WHMCS-Keep-your-invoices-intact-forever!
We're open to all sugestions, don't be shy.
Just another demonstration of how extremely poor this functionality is thought out:
If you have taken steps to change the currency to, for example, EUR: you already had to jump through multiple hoops due to WHMCS not allowing people to switch currency (as it pretends they always paid in that currency, which already is a huge flaw). So you had to run some queries to fix the currency values...Next up: you have to retain the USD packages and create new EUR packages for new orders right? That way, your existing clients keep paying in USD, and your new clients finally get the new currency...Well... To make that story even better: that ensures that everyone who once paid in USD and has their account set to USD: they can't place new orders anymore because the system won't allow them to order in EUR! I'm not even joking... Their entire order will be thrown out, or when they're logged in: it will not throw an error during order but just show blank boxes... Great going WHMCS... This function is so very *very* messed up for a billing "solution", it's really extraordinary ridiculous. To make it this flawed requires really quite some skill.
Retaining the currency alone is not sufficient. Past invoices have to be retained exactly as they were sent out. In many countries this is simply the law, not something up for debate.
Currently we can't allow a customer to change their currency or their address without either breaking the law (because it modifies past invoices!) or creating an entirely new profile for them.
IMHO the inability to be compliant with the law without creating a new profile is a serious bug, not a missing feature.
I agree. You can't change invoices once emitted. Actually, that is the law everywhere. I don't know anywhere, US, Europe, or any other country where that is actually allowed.
The strange thing is that I don't understand why WHMCS is even doing this. Its extremely easy just to apply the new currency to new invoices, and leave the past ones alone because WHMCS does not actually update the amount on the old invoices, it just updates the currency symbol on them. This is not a rocket science and I had to disable the currency feature for this reason as well.
I'd forgotten I'd subscribed to this, since the original request was filed in 2013! As others have said, this isn't a feature request, it's a bug....or at the very least a flawed implementation.
One customer requested me to change the currency today and when I done it WHMCS just changed the PREFIX/SUFFIX of currency and kept all transactions, invoices, payments, etc. with wrong value. What to do in this case? This an extremly serious bug that must be fixed ASAP. I really don't believe that no one reported this before and if reported, why your development team doesn't fixed yet.
This is completely wrong for accounting. When an invoice is created
WHMCS should store the currency, amount, exchange rate (in case of conversion), etc. All invoices/transactions/etc shouldn't suffer changes. This is something that must be rethought urgently.
I think the point here is very clear. This is not a feature request it's a bug WHMCS should consider it urget and fix it
Just store currency per invoice and not per customer and this will fix many issues.
When changing currency for a client, I've not noticed that WHMCS has no updated the correct pricing, so instead of charge 34usd, im charging 34 mexican peso. 20 pesos is 1 dollar, so imagine how this BUG are broken my business.
Is any solution there?
Thanks in advance
wating for update
We appreciate the discussion and requests for this feature.
There are however a number of other technical challenges that we must consider and we would be interested in your feedback and thoughts on them:
1. How do you suggest we handle credit balances which are maintained in the customers primary currency?
2. How would credit which is stored in the clients primary currency work for an invoice that is in a different currency? What would the credit balance show and how would the amount be calculated?
3. How would you suggest we handle monetary discount promotion codes that are assigned to a clients products & services?
4. How would you suggest we handle affiliate commissions and withdrawals history which are also stored in the clients currency?
5. How would you suggest we display the customers invoices and income totals when they have invoices & transactions in multiple different currencies?
6. How would you suggest we handle allowing a customer requesting to mass pay invoices in different currencies? Only one currency can be used per transaction.
Well, this issue is the main reason why I still didn’t and
can’t use multi currency in WHMCS. Asking a customer to create a new account
and lose all the past transactions, tickets and other data is not reasonable.
And how it works today in WHMCS is an account mess because all it does is
change the currency symbol and leave the same numbering/amounts when it should not be changing any past transactions, only new ones from that point on which is what probably everyone assumes would happen when they switch the currency. Past invoices and
transactions should be freeze and this would solve all the problems. So answer
the questions this is my suggestion:
1. There could be more than one solution here. The first one
is WHMCS gives an error if you try to change the currency if someone has
positive credits in the account. So you should tell the users to use his credits
first or he will lose them. Simple solution.
Better solution: Current credits are converted to the new
currency, if the amount is less, a negative transaction can be recorded with
the description currency conversion exchange. If it’s the opposite, increase the credits
to counter act the balance. I would say that most customers will understand
they will or can lose money with a currency conversion, so they will agree with
this. What should never happen here is for WHMCS to record a negative balance
against the company because the whole accounting balance will then not match with
the past years (if it was reported already).
Credits are tricky to handle, so maybe not even allow currency
conversion if there are positive credits. If the question was about past
transactions, the answer should be the same as with invoices. Do not touch past
transactions. Any transactions, invoices generated, invoice paid, credits used,
all of them should not be touched past the date where the user decided to
switch currency.
2. I think I answered this above. Do not convert accounts if
there are credits, or credits can be converted to the new currency recording.
For example if the user has $50 credits and wants to switch to Euros, you
need to convert $50 to 47 Euros, in such a case, it would be as easy as switching the
currency and then adding a negative transaction to the credits for -3 for the
exchange. Now the user has 47 but euros. He can then see he lost 3 in the currency exchange.
If it’s the opposite. A user that has 50 euros and wants to
switch to USD dollars, which would result in $53 then WHMCS should maybe block
this with a warning and not allow it, or inform the admin he is going to lose
money in the exchange switch. Then a user has a choice to use his credits first or
lose them. In this case just switch the 50 euros to 50 dollars and the user
lost $3. If he does not want that. Then he should have no credits in order
to a currency change first. An account currency change is a big change, so it is not something someone would request unless he is aware of the implications.
3. I don’t understand this question. Past
transactions are not touched. New promotions and orders would work just like they
do today in the new currency for that customer. Do you mean active ones?
4. Same as above. Past transactions are frozen. Nothing is
changed. New currency only applies to transactions past the date where the
conversion was done.
5. I don’t think this is what people asked here at all. I didn’t
saw anyone here asking to have a customer in 2 currencies at the same time, that would indeed be
a mess. Nobody is asking (and I don’t know why would someone want this) to have
a customer with both USD or Euro invoices at the same time. What most people
want is to switch the currency for that customer. Example, someone moving from
Europe to the America or the other way around. All past transactions are stuck
with the currency they were originally, new transactions are in the new currency.
The customer can’t use the older currency anymore, unless he is switched again
manually by a WHCMS admin.
6. Again, see 5. I don’t think this is what users are asking. I don’t even know a billing system that can do this. What we want is just to be
able to switch currency properly. Today if a customer paid $245 invoices, and
you switch him to Euros, WHCMS just switches the currency symbol on all
transactions, so now suddenly that user paid 245 euros which is wrong. What
people are asking is to fix this. I don’t think people asking to use 2
currencies simultaneously. That would indeed require a major WHMCS change and I
don’t see this as reasonable. What I do see something which can be fixed is the
currency bug I and others mentioned before.
Almost all the problems here can be solved by just doing
what I suggested. Freeze past and old transactions. Do not change the currency
on them. Only new transactions are in the new currency. I’m surprised you
mentioned this. Did you read what others have posted here? They are not asking
about having several currencies at the same time for a customer. They are asking not to change the currency on previous transactions.
I think 2 options would be sufficient.
1) Option in admin area to change currency and WHMCS changes all currency for future invoices (so services/domains should become the amount in new currency, using pricing)
2) Old invoice/revenue record should be kept in old currency for legal accounting reasons.
At this moment if you need to change customer currency (in case of merging 2 whmcs installs)
You need to change currency in Customer profile, payment amount per service.
But changing currency in customer profile means that all already issued (and old) invoices are changed also.
Amounts as Paypal fees can't be changed and will give a strange high of low figure.
Issued invoices shouldn't be able to altered by this. And as suggested above : " Freeze past and old transactions. Do not change the currency"
No address change, no amount and no currecny change. If people have a reason to alter old invoices they can use phpMyadmin to do so.
WHMCS is such a good software but missing currency change feature for clients. This is must have feature for whmcs. Without this feature multi-currency option looks like paralyzed.
I am saying this because think a customer signed up from USA and later he moves to Germany. When he was in USA he was making payments in USD and now as he is in Germany he wants to use EUR as his currency. So what option do we have in such cases? It sounds weird and unprofessional to ask him to just create new account with EUR currency and loose all past data on same domain he used with old account. Suppose he creates a new account and later he moves to UK then do we have to ask him to create one more account for Pounds and loose all data of previous 2 accounts which he created for USD and EUR?
And I also suggest that customers should not be able to change their default currency by themselves because doing so will increase chance of fraud orders and may create mess. So client area currency changing feature should be available only for administrators not for customers. If customers want to change their currency they can request through support ticket and backend staff can change if customer has a good reason for changing it.
I cant belive 4 years later with lots of support this is still not a thing, why is it only under consideration instead of planned?
Haha how is this not yet implemented this is such an important FEATURE!, not only when you swap the currency should it not swap the past invoices but it should also make sure to convert any ongoing products or issued invoices to the current currency not just 100 USD becomes 100 EUR everywhere.
5 years down the line, still so important feature isn't implemented.
Common WHMCS you can do it.
Hi there,
With less than a dozen votes per year, this is not currently on
our radar for implementation. However should this change and this idea
gain popularity we are keeping that possibility open for the future.
To understand why this has not been implemented, it is important to consider the full ramifications of such a change to the product.
To start with, the request title fails to encompass all of what it would take to provide the level of functionality that is being requested by many here in this thread.
A clients currency in WHMCS affects far more than just invoices. To implement this feature, the currency would not only need to be stored against every invoice, but also every order, service, addon, domain, invoice and transaction. That introduces a level of complexity many times greater than exists today, both for product design and UI/UX and considerations would have to be made both at a product design and UI level for how to deal with a single client with items in 1, 2 or any number of additional currencies. It would affect how we deal with credit, no longer can you have a single credit balance, it would affect anywhere we display income totals for a client, it would affect how we display outstanding invoice due balances within the client area, it would even affect how we generate invoices, no longer being able to combine items due by the same customer on the same date because currency also needs to be taken into account, billing reports would need to be rewritten, and this is just the start of areas it affects.
To those suggesting that amounts be converted dynamically using the latest exchange rates, the challenge is that we are not always guaranteed to have an up-to-date exchange rate for every currency defined in a WHMCS system - we are restricted both by the currencies that are supported by the exchange rate feeds we support, and admins choosing to disable automatic currency rate updating, along with admins who simply aren't happy with the rates provided by the feeds we support. All of these these make dynamic currency conversion both for display purposes and "on change" of currency far from reliable.
The ability for an admin user to change currency via the clients profile was never designed or intended to be used for the purposes of changing an existing clients currency once they have billing and transaction activity and to change it to work in the way being discussed here would be a significant body of work to undertake. That work would include fundamental backwards breaking changes to design, workflows and APIs which in itself restricts when such a change can be made, as well as affecting almost all areas of the product that deal with billing. That work would take a significant amount of resources and time, and delivering that would mean taking those resources and time away from other features which have more votes and have been demonstrated to have higher demand.
We hope this provides a level of insight into the factors and considerations that affect the decision making for a feature request such as this, and helps to convey the challenges of such a request, both from a technical but also a product design and planning level.
HI WHMCS Dev.
Thanks for explaining, while I do understand your perspective I think you perhaps need to have a dev meeting and consider a different approach and business needs over development complexity.
Your assumption that an exchange rate needs to be stored against every invoice and transaction is not right, you are allowed to attribute gains or losses against exchange rates within your returns as such all you actually need to do is have a table that stores the daily rates for each accepted currency which relativity speaking is tiny, it is 1 table that is updated daily and is available for reference.
Additionally, you are working on the basis that this is an all or nothing change, it is not, hostbill for example will store invoices and transactions in multiple currencies and has included the very basic feature exactly as I described above for years, example: https://imgur.com/a/RjGmCoG as does Blesta and client exec, only WHMCS lacks this feature, all bias for your own product asside, you need to ask yourself why this is, consider the possibility you may be locked in an echo chamber.
Having a bang up to date currency is not a big issue accounting wise.
I hope this provides some further insight and I think you as the dev team need to sit in a meeting with someone from your accountancy department and understand that you are way over thinking it from a code perspective.
This is a bug, not a feature, it needs to be fixed.
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.
Hello,
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.
Settings
- Add an option like "Freeze Paid Invoice", disabled by default.
UI
- 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.
This is a must-have feature, I can't believe this still hasn't been addressed!
This is a must have
This should implement asap.
Must have feature
As a technician for a very large WHMCS based host, this still makes very little sense as not existing.
I like that I can set a default currency per-client, but really it should let us activate currency options for the client, and allow the client to choose which currency they want to pay in on the invoice. And past invoices need to retain the currency they paid in (for my records), while also displaying the current value in their default currency per the current exchange rate (for their records).
I have a client who moved to New Zealand from the US and it's a nightmare trying to get all their past payments into WHMCS from PayPal accurately.
This is quite a big deal if you want to offer your customers the possibility to change currencies.
As it is, if you happen to do so, all past invoices will be showing another currency without any kind of conversion, which is undesirable as it WILL bring problems when customers try to get copies of their invoices on a different currency.
This is really needed, especially with Gateways that have to convert the invoice to a different currency.
This issue is still blocked by many of the issues raised in our post earlier in this thread from November 2016.
To summarise:
1. We do not have a way to obtain exchange rates programatically for every currency
2. Exchange rates we can obtain programatically often differ from the official rates provided by countries and governments
3. There are technical challenges when it comes to:
i. Credit Balances
ii. Reporting
iii. Monetary promotions/discounts
iv. Affiliate system
In WHMCS 8.0, we introduced the Users and Client Accounts feature which allows one human user to have multiple Client Accounts associated to a single login. This should provide a viable workaround for the scenario of one user desiring multiple client profiles with different currencies. Is there any reason why this cannot work?
Thank you for the continued discussion.
Hello,
That sort of could work, but couldn't you just create some sort of multi currency profile? So invoices can be in € or $, they don't change ever once paid because well that's the book keeping of the invoice paid on April 13th 2021 so if its paid in $ then that's that, but allowing the client to just opt for changing the invoice currency before paying it. Then in the summary page, it would show Account summary in each currency not just EUR?
You would basically be juggling the currencies making the profile MULTI CURRENCY instead of MULTI ACCOUNT?
You can even add something like instead of
Paid1 ($141.91USD)
Draft0 ($0.00USD)
Unpaid/Due0 ($0.00USD)
Cancelled0 ($0.00USD)
Refunded0 ($0.00USD)
Collections0 ($0.00USD)
Income
Gross Revenue$141.91USD
Client Expenses$6.54USD
Net Income$135.37USD
Credit Balance$0.00USD
You split this somehow, be it a popup with breakdown, this could be listing the USD as default because that is what the client opts for, but the moment the client decides on his invoice to "Change currency: USD => EUR" then this becomes maybe a detailed popup? with breakdown in each currency instead of just default currency, or some sort of tooltip popover Gross revenue: $141.91USD (hoverable for breakdown let say 90.50USD then rest is in EUR)
Im just spitballing here, but this way you would just change how the system keeps the books, but post paid invoice, they can never change that invoice currency, except hacking the database which well then it just defeats the system.
I have often thought how this could be achieved, for now we've blocked the Currency change dropdown in our profile to avoid our staff from accidentally messing the book keeping up.
Anyway just my two cents :)
Saving the payment information in the original currency is the issue here - if I create an invoice for $100 NZD, that invoice should say $100 NZD and the amount I received in my default currency at the time of payment forever, even if I change the client's default currency in the future.
Comments have been locked on this page!