Skip to content
Shahid Malla

WHMCS Multi Currency Setup: Steps, Exchange Rates, Gateways and Tax

A WHMCS multi currency setup step by step from the 9.0 docs: default currency, Base Conv. Rate, ECB rate updates, prices per currency, changing a client's currency, gateways, tax and rounding.

· Published · Updated · 11 min read
On this page (19 sections)

A WHMCS multi currency setup in version 9.0 means fixing the default currency before the first invoice, adding each currency at Configuration > System Settings > Currencies with its Base Conv. Rate, setting or converting prices, choosing daily rate updates, letting clients pick a currency on the order form, setting Convert To For Processing on gateways that need it, and checking tax rules.

WHMCS multi-currency is the built-in feature that lets one WHMCS install show prices, bill clients and take payments in more than one currency. One currency is the default, and every extra currency carries a Base Conv. Rate that WHMCS uses to convert amounts to and from it. Each client account uses one currency, fixed at their first order.

What are the steps for a WHMCS multi currency setup?

Menu paths are from the WHMCS 9.0 Sell in Multiple Currencies tutorial and the pages it links.

  1. Fix the default currency. At Configuration > System Settings > Currencies, it is the one with no red delete icon. New installs start with USD.
  2. Add each extra currency. Under Add Additional Currency, fill in Currency Code, Prefix, Suffix, Format and Base Conv. Rate, then click Add Currency.
  3. Check the rate direction. Base Conv. Rate is how much of the new currency one unit of the default buys.
  4. Set prices. Click Update Product Prices to calculate them, or open each product at Configuration > System Settings > Products/Services, go to the Pricing tab, tick Enable for the currency, enter prices and click Save Changes. Then do domain TLDs and product addons.
  5. Choose rate updates. At Configuration > System Settings > Automation Settings, under Currency Auto Update Settings, tick Exchange Rates, Product Prices, both or neither.
  6. Let clients choose. New visitors pick a currency on the order form, or you link to one with cart.php?currency=2.
  7. Configure gateways. At Configuration > System Settings > Payment Gateways, set Convert To For Processing on any gateway that cannot take one of your currencies.
  8. Check tax, then test. Review Configuration > System Settings > Tax Configuration and place one test order per currency through each gateway.
SettingWhereWhat it does
Currency Code, Prefix, Suffix, FormatCurrenciesISO 4217 code sent to gateways, and how amounts print
Base Conv. RateCurrenciesUnits of this currency per one unit of the default
Exchange Rates, Product PricesAutomation SettingsThe same two jobs in the daily cron
Convert To For ProcessingPayment GatewaysConverts the payment into one currency for that gateway
Available Payment GatewaysProduct groupLimits gateways for orders containing that group's products
CurrencyClient Profile tabThe client's currency; editing it relabels, it does not convert

How do you choose or change the default currency in WHMCS?

Pick the currency your books are kept in and settle it before the first invoice. The Change the Default Currency tutorial warns against changing it once invoice or transaction data exists.

On a clean install, click the edit icon on the currency with no red delete icon, type the new Currency Code (for example EUR), adjust Prefix, Suffix and Format, and click Save Changes. The Currencies page adds that the default currency's own rate cannot be edited. On a live install with the wrong default, add the right currency as an extra one and move clients to it.

How do you set the Base Conv. Rate the right way round?

Enter how many units of the new currency one unit of the default currency buys. The Find a Base Conversion Rate tutorial converts 1 of the default currency into the second one; its USD to GBP example gives 0.81979239, entered as GBP's rate. WHMCS divides an amount in that currency by the rate to get back to the default.

The Automation Settings page agrees: a $1 product with a GBP rate of 0.6 becomes £0.6. One line on the Currencies page ("USD to GBP could be 1.5") reads the other way, so I follow the tutorial. To check, multiply one product's default price by the rate and compare it with the cart; a far larger or smaller number means an inverted rate.

Where does WHMCS get exchange rates, and when do they update?

From the European Central Bank. The Currencies page says WHMCS uses the ECB API, and automatic updates cover only these currencies: USD, EUR, JPY, BGN, CZK, DKK, GBP, HUF, PLN, RON, SEK, CHF, ISK, NOK, HRK, TRY, AUD, BRL, CAD, CNY, HKD, IDR, ILS, INR, KRW, MXN, MYR, NZD, PHP, SGD, THB and ZAR.

  • By hand: click Update Exchange Rates on the Currencies page, then Update Product Prices if you want prices recalculated.
  • Daily: tick Exchange Rates, and Product Prices if wanted, in Automation Settings. The System Cron page lists --CurrencyUpdateExchangeRates and --CurrencyUpdateProductPricing as daily tasks, first in the run order and ahead of --CreateInvoices.

No cron, no update: each rate stays at its last value. My WHMCS cron jobs guide covers checking that it runs. A currency outside the list keeps the rate you typed and reports an error such as Update Failed for MAD Exchange Rate. The Exchange Rate Update Failures page says to use a supported currency or edit that rate by hand, so decide who owns it.

Should you set prices per currency or convert them from rates?

Set them by hand for round prices that stay put; convert them to maintain one price list.

ApproachSettingsWhat to watch
Fixed prices per currencyTyped on each Pricing tab; Product Prices offReview them when rates move a long way
Converted dailyExchange Rates and Product Prices onUneven amounts; hand-set prices get recalculated
Converted once, then roundedUpdate Product Prices clicked once; Product Prices offNever turn Product Prices on later
Fresh rates, fixed pricesExchange Rates on; Product Prices offGateway conversion uses current rates while prices drift

Domain Pricing is set per TLD, per registration year and per currency, and the Product Addons matrix needs each billing cycle enabled for each currency. The docs call the automatic job "product prices" without listing what else it touches, so check TLD and addon prices after the first run. Editing a currency's rate also offers Update Pricing; leave it unticked on a hand-priced currency.

Price changes only reach new orders, says the Automatically Update Prices tutorial. Existing clients keep the price they agreed to. To reprice them, activate the Bulk Pricing Updater at Configuration > System Settings > Addon Modules and run it from Addons > Bulk Pricing Updater, once per currency. It cannot be undone. It ships with self-hosted installs and WHMCS Cloud's Growth and Expansion plans; my WHMCS pricing guide compares the plans.

How does a client get a currency, and can you change it later?

A new client picks it on the order form, and it is fixed with their first order. The Profile tab page says later orders use it, so the client no longer sees the currency selector. Staff set it in the Currency field at Clients > Add New Client.

Editing Currency on the Profile tab only changes the symbol. Prices, invoices and transactions are not converted, so a $20 service shows as £20. The 9.0 Change a Client's Currency tutorial recommends a second client under the same user instead:

  1. On the old client's Profile tab, change First Name, Last Name and Email Address to unique values, for example by appending the old currency code, and save.
  2. At Clients > Add New Client, enter the original details and the new Currency. For Owner, choose Associate with an existing user and pick the original client's user.
  3. Move each domain and each service to the new client, set Recalculate on Save to On and click Save Changes for every item.

Recalculate on Save converts the Recurring Amount, so future invoices come out in the new currency. Old invoices stay on the original client, and the customer can switch accounts in the client area to read them. The tutorial's introduction mentions moving invoices and transactions, but its steps only move domains and services. For dozens of clients, a tested script on a staging copy beats hundreds of manual saves.

How do payment gateways handle different currencies in WHMCS?

A gateway receives the invoice's currency code. If its account cannot accept that currency, set Convert To For Processing on it at Configuration > System Settings > Payment Gateways. Per Convert Invoice Currencies, the option appears only once two currencies exist. WHMCS then sends all payments to that gateway in the chosen currency, whatever the client selected, converted at the Base Conv. Rate stored at the time of payment. The customer's statement will show a different currency from the invoice, and a stale rate charges the wrong amount.

WHMCS 9.0 documents no setting that limits a gateway to one currency. The Payment Gateways page makes Show on Order Form subject to product group restrictions, and the Product Groups page sets Available Payment Gateways per group. If an order mixes groups with no gateway in common, no gateway is offered. Showing bank transfer only to EUR clients therefore needs custom code, the kind of rule I build under WHMCS payment gateway integration.

An "Unrecognized Currency" error with a PayPal module means an invalid code: the PayPal Unrecognized Currency Errors page requires ISO 4217 (EUR, not EURO) with no blank spaces. My Stripe, PayPal and Razorpay guides cover what each gateway accepts.

How do you bill or collect an invoice in another currency?

Invoices follow the client's currency. To collect through a gateway that cannot take it, use Convert To For Processing: the invoice stays as it is and the payment is converted. To bill a client in a new currency from now on, use the new-client method above. I found no documented way to convert one existing unpaid invoice, so I cancel and reissue it from the right client account rather than edit amounts by hand.

How does tax work when you sell in several currencies?

Tax follows the client's address, not their currency. A rule on the Tax Configuration page has a name, country, state and rate, and no currency, so a UK client paying in USD matches the UK rule.

  • Inclusive or Exclusive. Exclusive adds Item Price x (Tax Rate / 100). Inclusive works backwards from a tax-included price, which keeps hand-set prices round in every currency.
  • Deduct Tax Amount. With Inclusive tax, it deducts tax from orders matching no rule, using your default country.
  • Per-product tax. Products are untaxed by default, so enable tax on each one.

How does WHMCS handle rounding and non-decimal currencies?

The Currencies page says non-decimal currencies must use the 1,234 format: BYR, BIF, CLP, KMF, DJF, HUF, ISK, JPY, MGA, PYG, RWF, KRW and VUV. Tax adds its own rounding. Calculation Mode either rounds tax per line item to two decimal places or calculates it on the sum; the documented example, 11 items at $2.21 with 20% tax, gives $4.84 one way and $4.86 the other. Pick one mode before launch. For non-decimal currencies I type whole-number prices, leave Product Prices off, and confirm on a test payment that the gateway receives a whole amount.

What should you check before taking orders in a new currency?

  • Default currency matches your accounts.
  • Currency Code is valid ISO 4217, with no spaces.
  • Base Conv. Rate checked against one product.
  • Products, TLDs and addons priced in the new currency.
  • An owner for any rate outside the ECB list.
  • Cron running daily.
  • Each gateway accepts the currency or converts it.
  • Product groups share at least one gateway.
  • Tax rules and per-product tax set.
  • One test order per currency per gateway ends Paid at the right amount.
  • Hand-set prices unchanged after the next daily cron run.

What are the limits of WHMCS multi-currency?

  • One currency per client account. Changing it means a second client.
  • No per-currency gateway setting. Visibility is per product group.
  • Automatic rates for a fixed list only, and only while the cron runs.
  • Repricing existing clients cannot be undone, so run Bulk Pricing Updater on a copy first.
  • Single-currency custom code. A template or hook with a hard-coded $ shows the wrong symbol.

What else do people ask about WHMCS currencies?

Does WHMCS support multiple currencies?

Yes. Add as many as you want at Configuration > System Settings > Currencies, with fixed or converted prices per currency. Each client account uses one currency.

How do I change the default currency in WHMCS?

Edit the currency with no red delete icon, change its Currency Code, Prefix, Suffix and Format, and save. WHMCS says to do this only when no invoice or transaction data exists. On a live install, add a new currency instead.

How do I change a client's currency in WHMCS?

Not on the Profile tab, which only changes the symbol. Create a new client with the new currency under the same user, then move each domain and service with Recalculate on Save set to On.

Does WHMCS have a currency converter?

Conversion is built in: Update Product Prices converts prices and Convert To For Processing converts payments. To look up a rate by hand, the Find a Base Conversion Rate tutorial points to The Universal Currency Converter.

Where does WHMCS get its exchange rates?

From the European Central Bank. Rates update when you click Update Exchange Rates, or in the daily cron if Exchange Rates is on, and only for the 32 listed currencies.

Why does a WHMCS exchange rate update fail?

Usually the currency is not on the supported list, and the error names it, as in "Update Failed for MAD Exchange Rate". Use a supported currency or keep that rate current by hand.

If you need a gateway limited to one currency, a bulk move of clients to a new currency, or rate handling outside the ECB list, that is custom work I take on as part of my WHMCS development services.

Last reviewed 19 October 2026. Disclosure: I sell WHMCS and web development work, so I am not neutral. I am CTO at ElySpace, a freelance developer for Marmaids LLC, founder of WHMCSPilot, and founder and CEO of MagizAI. I am not affiliated with WHMCS. Menu paths and settings come from the WHMCS 9.0 documentation as I read it on that date.

Share this article

Shahid Malla

Written by

Shahid Malla

Freelance WHMCS developer and web designer with 13+ years of client work. CTO at ElySpace, freelance developer for Marmaids LLC, and founder of WHMCSPilot and MagizAI.

Got a project like this?

Tell me what you need and I will send a written quote within one business day.