Skip Navigation

Home » WPML Documentation » Related Projects » WooCommerce Multilingual – Multilingual WooCommerce Sites Made Easy » Multi-Currency Features for WooCommerce

Multi-Currency Features for WooCommerce

WooCommerce Multilingual & Multicurrency is a WordPress plugin that lets you run a store with multiple currencies. On the front-end, your users can switch between the different available currencies like they switch languages.

Get the basic features for free, or buy WPML for even more multi-currency and multilingual options.

Display multiple currencies based on customer’s location

Display multiple currencies based on language

Set up automatic exchange rates

Set custom prices in different currencies

Set up different payment methods for each currency

Translate your whole store

Standalone Version

Display multiple currencies based on customer’s location

Display multiple currencies based on language

Set up automatic exchange rates

Set custom prices in different currencies

Set up different payment methods for each currency

Translate your whole store

Full Features with WPML

Display multiple currencies based on customer’s location

Display multiple currencies based on language

Set up automatic exchange rates

Set custom prices in different currencies

Set up different payment methods for each currency

Translate your whole store

Required Plugins and Setup

Free Standalone Version of WooCommerce Multilingual

If you are interested in using the free, standalone version of WooCommerce Multilingual, install and activate:

Setting Up the Standalone Version 

Once you have installed and activated the plugins, head over to WooCommerce → WooCommerce Multilingual & Multicurrency to enable the multicurrency mode.

Enabling the multicurrency mode for the standalone version of WooCommerce Multilingual

WooCommerce Multilingual with WPML

To build a multilingual and multi-currency store with WooCommerce Multilingual and WPML, see our documentation page about WooCommerce Multilingual.

Configuring Currencies

There are two ways you can configure currencies: based on language or based on your customer’s location.

Currencies Per Language

This option requires a WPML Multilingual CMS or Agency account

You can choose to show specific currencies based on the language your customer has selected. This helps with situations when products in certain languages need to be ordered only in a specific currency.

You can also configure the default currency for each language. This way, users see product prices in a given currency when they switch to a different language on the front-end.

To set which currencies to use for each language, go to WooCommerce → WooCommerce Multilingual & Multicurrency, and click the Multicurrency tab.

Multicurrency settings for site language

Choosing Keep for the default currency option under a particular language means the store’s currency will not change when switching to that language.

When a new currency is added it is included by default for all languages. You can adjust this using the appropriate checkboxes.

Currencies Per Location

This option can be used with or without WPML.

If you have customers in countries that speak the same language but use different currencies, you may want to configure your currencies based on your customers’ IP address or billing address.

This is useful if you would like to:

  • Enforce certain currencies for users based on their location or billing address.
  • Implement a pricing policy based on location.

For example, you can decide to set a higher price for someone in the US (paying in USD) rather than for clients in the UK (paying in GBP). You can set it so that customers won’t see the prices in the other country’s currency, even though both customers speak English.

To set up currencies per location, go to WooCommerce → WooCommerce Multilingual & Multicurrency, and click the Multicurrency tab.

WooCommerce uses MaxMind Geolocation to determine a customer’s location via IP address. For best results, create a free MaxMind account and generate a new license key in order to determine a customer’s location.

Choosing to show currencies based on client location

Once you enter the key in the Multicurrency settings, you’re ready to customize your currencies per country.

Click Add currency to add another currency to your site. You can choose for which countries you would like this currency to be available. Or, you can exclude specific countries.

Adjusting currency settings

Once you enable currencies based on client location, logged-in customers will see currencies based on their billing address. For other customers, WooCommerce Multilingual will use their IP address to display the correct currency.

Please note: displaying currencies based on IP address may not work perfectly. This is because:

  • The MaxMind database determines customer geolocation. Customers will see your store’s default currency if their IP address does not match one in MaxMind’s database.
  • Transients and WooCommerce sessions save IP addresses in order to show specific content to customers in certain locations. As a result, prices may appear in the same currency for VPN users in various countries.
  • If you’ve chosen to limit your store’s selling locations to specific countries, WooCommerce will show customers from these countries the assigned currencies. All other customers will see your store’s default currency.

You can override the WooCommerce Multilingual geolocated country by using the wcml_geolocation_get_user_country filter hook.

Adding a Currency Switcher to the Front-End

Once you have added the support for multiple currencies, you should display a currency switcher in your site’s theme. You can display the currency switcher with a shortcode or as a hook.

Sample of currencies switcher display on the frontend

Currency Switcher Widget

The currency switcher can be added to a template as a WordPress classic widget. Please note that the currency switcher is not yet available as a block-based widget.

To configure it, go to WooCommerceWooCommerce Multilingual & MulticurrencyMulticurrency tab.

The currency switcher options allow you to:

  • Show a currency switcher on the product page template
  • Preview how the switcher will look on the front-end before applying changes
  • Set the switcher style
  • Drag-and-drop the order of currencies in the switcher
  • Adjust the output of the switcher
Currency Switcher Options

You can customize the template used for the currency switcher by using four parameters:

  • %name% – full name of the currency, for example “Euro”
  • %symbol% – the standard symbol that represents the currency, for example “$” or “€”.
  • %code% – the standard code that represents the currency, for example USD for United States Dollar.
  • %subtotal% – total costs of the current order (basket), without shipping costs and additional taxes. Subtotal is the formatted price and includes the currency symbol positioned according to the currency options set in WooCommerce settings.

WooCommerce Multilingual & Multicurrency also allows you to use the following HTML tags to customize the output of the switcher: img, span, em, strong and u. Please note that these tags can only be used when the currency switcher style is set to List of currencies. This stems from the official HTML standards for the select tag.

Currency Switcher Shortcode

If you want to add your currency switcher to other places on your site, you can do so using a shortcode.

Shortcode: [currency_switcher]

Attributes: format (Available tags: %name%, %code%, %symbol%) Default: %name% (%symbol%)

Example usage: [currency_switcher format="%code% (%symbol%)"]

The shortcode version is the most convenient when you display the currency switcher inline with WordPress content, for example in a Content Template by the Toolset Blocks plugin. You should use the Fields and Text block to include the shortcode into the template.

Currency Switcher as PHP Code

You can also add and customize currency switchers using PHP code.

do_action('wcml_currency_switcher', array('format' => '%name% (%symbol%)'));

Besides format, you can use the following parameter:

switcher_style: wcml-dropdown, wcml-dropdown-click, wcml-horizontal-list, wcml-vertical-list

This outputs a basic dropdown menu with currency codes for option values. The client’s current currency or the configured default currency for a specific language will be auto-selected.

Using Custom Switchers

Besides these default switcher_style options, you can also use custom ones, defined by the custom currency switcher you design using template files. In this case, you need to use the correct slug that identifies your custom currency switcher.

The slug for your custom switcher is generated depending on the sanitized name of your template, as defined in its config.json file, and the template’s location:

Location of the custom currency switcherHow the slug is generated
Theme folderTheme slug + sanitized switcher name
Plugin folderPlugin slug + sanitized switcher name
“uploads” folder“uploads-” + sanitized switcher name

Let’s consider the following example:

  • The name of your custom currency switcher is My custom switcher.
  • You are using the Twenty Seventeen theme and the template files for your switchers are located in the theme’s folder.

The slug to use with your custom switcher is twenty-seventeen-my-custom-switcher, as shown in the following example.

Using custom currency switcher in PHP templates
do_action('wcml_currency_switcher', array(
  'format' => '%name% (%symbol%)',
  'switcher_style' => 'twenty-seventeen-my-custom-switcher'
));

The PHP code version is best when you manually add the currency switcher to PHP templates.

Payment Gateways Settings

You can set up payment gateways for your store by going to WooCommerceSettingsPayments. By default, all of the payment gateways you set up will be available for all of your site’s currencies.

WooCommerce Multilingual is compatible with WooCommerce PayPal Payments, Stripe, and direct bank transfer.

Setting Up Payment Gateways For Each Currency

This feature requires a WPML Multilingual CMS or Agency account

You can choose to set specific payment gateways for each of your site’s currencies. You may find this helpful if, for example:

  • Your store uses direct bank transfers and you want to use local bank accounts for each currency.
  • Your store uses PayPal and you want to set up different PayPal accounts for each currency.

To do this:

  1. Go to WooCommerceWooCommerce Multilingual & Multicurrency and click the Multicurrency tab.
  2. Click the pencil icon next to one of your site’s currencies.
  3. Turn on Payment Gateways. A list of all the payment gateways you set up appears.
Currency settings

Setting Which Currency to Receive Payments In

This feature requires a WPML Multilingual CMS or Agency account

WooCommerce Multilingual allows you to choose which currency to charge customers and receive payments in for each payment gateway. 

For example, you can set up your shop so that:

  • Your customers can shop in pounds sterling (GBP) and select to pay with Stripe
  • You will receive the payment from Stripe in euro (EUR)

When you choose to receive payment in a different currency than the one your client is using, they will see their total amount in the converted currency during checkout.

Payment notice on a checkout page

To set this up:

  1. Edit one of your site’s currencies.
  2. Use the Currency dropdown list to select the currency you want your customers to be charged in.

In the example below, you can see that for customers shopping in pound sterling (GBP) we have direct bank transfers and Stripe as payment gateways. But for Stripe, we have chosen to charge and receive payments in euro (EUR).

Specifying which currency to accept payments in for each payment gateway

If you want all payments to be made in a default currency, you need to edit each currency on your site. Then, you need to set your default currency as the transaction currency for each payment gateway.

Choosing Which Payment Gateways to Display Based on Customer Location

This feature requires a WPML Multilingual CMS or Agency account

Some payment gateways are only available in specific countries. If you have geolocation set up to display currencies per customer location, you can determine which payment gateways to display.

To adjust which countries a certain payment gateway appears in, go to WooCommerce → Settings and click the Payments tab. Click the payment method you would like to adjust, and you will see the option to change the Country Availability.

Choosing for which countries your payment gateway will show
Choosing for which countries your payment gateway will show

Using Other Payment Gateway Plugins

If you want to use a different payment gateway plugin, please check our list of Recommended Plugins for compatibility information and available documentation.

Setting an Automatic Exchange Rate

This feature can be used with or without WPML.

WooCommerce Multilingual allows you to set up automatic exchange rates for your store by going to WooCommerceWooCommerce Multilingual & Multicurrency and clicking the Multicurrency tab. Check the box to enable automatic exchange rates.

Automatic exchange rate options
Settings for the automatic exchange rates

There are three settings for this feature:

  1. Exchange rates source – Select the source of the exchange rates data. You can choose from four renowned services: Fixer.io, currencylayer, Exchange Rates API, and Open Exchange Rates.
  2. Lifting charge – You can set an additional percentage to adjust the final, effective exchange rate. This is useful for international transactions that may add additional charges.

    This is how the effective rate is calculated, based on the set lifting charge:

    Effective Rate = Service Rate x (1 + Lifting Charge / 100)

  3. Update frequency – Set how frequently the automatic exchange rates check and update the exchange rates for your store. This can be hourly, daily, weekly, or monthly. By default, this is set to manual update. Please note: Updating the exchange rates on an hourly basis generates around 744 API calls a month. Please check that your exchange rates source can accommodate this higher usage.

Currency Options and Rounding Rules

Currency formatting varies across different countries and languages. For example, while some countries use a comma to separate thousands, others use a decimal point.

When you add a secondary currency, WooCommerce Multilingual automatically handles currency formatting for you. It sets locale-specific details such as the currency position, decimal separator, and number of decimals. If you want to change these presets, you can independently edit each currency and configure its settings. 

On the same currency edit screen, WooCommerce Multilingual lets you set specific pricing for each currency, ensuring that the prices look “neat”. Prices that are determined automatically can be rounded to the nearest integer. 

Here’s how rounding to the nearest integer works:

  • If the increment value is set to 1, a price like 1454.07 will be rounded to 1454.
  • If the increment value is set to 10, the same price of 1454.07 will be rounded down to 1450.
  • If the increment value is set to 100, then 1454.07 becomes 1500.

Autosubtract amount:  lets you subtract a certain value from the previously rounded amount.

For 1454.07, when the increment for the nearest integer is 100 and the auto-subtract amount is 1, the final amount is 1499.

Setting currency rounding rules

Configure Custom Prices for Different Currencies

This feature can be used with or without WPML. 

Configuring Product Prices By Currency

WooCommerce Multilingual allows you to set custom prices in different currencies.

You can set custom prices in different currencies on the product editing screen, under the fields for Regular Price and Sale Price (for the default currency).

These are fixed and will override prices that are automatically determined by the exchange rate. To revert to using the automatic prices, you need to remove the custom prices and update the product.

Setting Custom Prices

A similar interface exists on the variable products editing screen.

Setting Shipping Rates By Currency

You can also configure distinct shipping rates per currency for the following standard WooCommerce shipping methods:

  • Flat rate – Set the main flat rate and rate for shipping class (if any are defined)
  • Free shipping – Set the minimum amount
  • Local pickup – Set the handling fee

To set custom shipping rates:

  1. Go to WooCommerce → Settings and click the Shipping tab.
  2. Set up your shipping zones, and add the shipping methods you want to use.
  3. Click Edit under the shipping method you would like to customize, and a pop-up dialog will appear.
Editing a shipping method on the WooCommerce Settings page
  1. Use the Cost field to define the shipping cost in your default currency.
  2. From the Enable costs in custom currencies dropdown, select Set shipping costs in other currencies manually.
  3. Enter the custom prices for the rest of your currencies in the fields that appear.
Setting the custom flat-rate costs in secondary currencies

Viewing Orders and Analytics by Currency

This feature can be used with or without WPML. 

Orders have a specific currency associated with them. It is the currency that the user was using when placing the order. You can view the totals of each order in the corresponding currency on the WooCommerceOrders page. On this page, it is also possible to filter the orders by currency.

Orders Filtered By Currency

Since all created orders have a currency associated, WooCommerce Analytics can be broken out by currency.

WooCommerce Analytics Filtered By Currency

Developer Information – Using Low-Level Hooks to Set Up Your Own Multi-Currency Logic

WooCommerce Multilingual defines a set of filters and hooks that can be used by 3rd party plugins to implement multicurrency logic when WooCommerce and WooCommerce Multilingual are set up and running. With this, users can see prices in their preferred currency (the price amounts are being determined based on the currency’s exchange rate). Orders are placed in the currency that the user selects on the front-end.

Updated
June 21, 2023