How to Add Multiple Currencies and Payment Gateways to a WooCommerce Store
Learn how to set up multi-currency in your WooCommerce store with WPML. This covers enabling multiple currencies, setting prices per currency (or using automatic exchange-rate conversion), displaying a currency switcher (block, widget, or shortcode), routing different payment gateways to different countries, and auto-switching currency by visitor location. Multi-currency works whether your store is single-language or multilingual.
For translating your store’s content, see How to translate WooCommerce in WordPress.
Before You Start
Install and activate:
- WooCommerce with your store’s default currency set at WooCommerce > Settings > General, and at least one product live.
- WPML core and the WPML Multilingual & Multicurrency for WooCommerce compatibility add-on. Download the add-on from your WPML account downloads page.
Multi-currency works without secondary languages. Your store doesn’t need to be multilingual to use it. If you only need multi-currency on a single-language store, the free WooCommerce Multilingual plugin from WordPress.org also handles it on its own.
Enable Multi-Currency for Your Store
To enable multi-currency in WooCommerce, open WPML > Settings > Multicurrency and switch the Enable the multicurrency mode toggle to on. Then add each currency you want to sell in. For each currency, set the symbol position, decimal separator, thousand separator, and number of decimal places. The price formatting matches what shoppers in that market expect.
Your default currency stays the one configured in WooCommerce’s own settings at WooCommerce > Settings > General. The additional currencies you add in the Multicurrency settings are the ones customers can switch to.
Set Prices per Currency or Use Automatic Conversion
To set prices in each currency on a multi-currency WooCommerce store, choose between manual prices per currency or automatic exchange-rate conversion. The two options work per currency. Mix manual prices for some currencies and automatic conversion for others, or use one approach throughout.
Manual Prices per Currency – Clean Numbers Customers Expect
Set the price for each product in each currency explicitly. A $20 product becomes €19.99 in euros and ¥3,000 in yen. Clean numbers customers recognize, not the result of dividing by a live exchange rate. You set manual prices on each product’s edit screen, in the multi-currency panel that appears alongside WooCommerce’s standard price fields.
Manual pricing is the right choice for most stores selling into established markets. It lets you price each market intentionally. Discount in some markets, premium-price in others. You don’t let yesterday’s exchange rate dictate everything.
Automatic Conversion From the Source Price
Set the source price once. The compatibility plugin applies an exchange rate and shows the converted price in each currency. Configure the rate in the Automatic Exchange Rates section on WPML > Settings > Multicurrency. Set rates manually, or fetch them live from a configured source on a schedule you choose.
Automatic conversion is the right choice for stores with rapidly changing catalogues or many currencies where setting each price manually would be impractical.
Display a Currency Switcher – Widget, Block, or Shortcode
To show a currency switcher on your WooCommerce store, you have three placement options. Pick whichever suits the spot you want the switcher to appear.
- Block. Drop the Currency Switcher block into any page or post via the WordPress block editor.
- Widget. Drag the Currency Switcher widget into any widget area via Appearance > Widgets.
- Shortcode. Paste
[currency_switcher]into any page, post, or template where you want the switcher to appear.
Configure switcher appearance in the Currency switcher options section on WPML > Settings > Multicurrency. You can choose dropdown, side-by-side, or list. You can also choose symbol-only, code-only, or both. The settings apply to every placement.
Currency Switcher Shortcode Reference
The [currency_switcher] shortcode accepts these attributes:
format. Controls how each currency renders. Tokens:%name(full currency name, e.g. Euro),%symbol(e.g. €),%code(e.g. EUR),%subtotal(cart subtotal in that currency). Example:[currency_switcher format="%name (%symbol)"]renders Euro (€).switcher_style. The visual style. Values:wcml-dropdown,wcml-dropdown-click,wcml-horizontal-list,wcml-vertical-list.
Example with both attributes:
[currency_switcher format="%code %symbol" switcher_style="wcml-dropdown"]
For deeper customisation, like building your own switcher template, there’s a separate template-files reference for developers.
Show Different Payment Gateways per Country and Currency
To route payment gateways per currency, open WPML > Settings > Multicurrency and click Edit on each currency in the Currencies table. Every currency lists the available payment gateways with checkboxes. Enable the gateways that work for that currency. Disable the ones that don’t. Customers see only the payment options that apply for the currency they’re paying in.
This is the right way to handle stores selling in multiple regions. Your default Stripe account might process dollars while a regional Stripe account or local gateway processes another currency. Customers paying in each currency see the gateway tied to that currency, not all of them at once.
Auto-Switch Currency Based on Visitor Location
To auto-switch currency by visitor location, open WPML > Settings > Multicurrency and in the Currencies section choose Client Location (instead of Site language) under Show currencies based on. This option requires a MaxMind license key for IP-based country detection. The plugin then detects the visitor’s country and shows that country’s currency by default. You map each country to a currency in the same settings panel.
Customers can still switch manually if you’ve added a currency switcher to the page. The two work together. The location detection sets the default. The switcher is available for overrides.
WooCommerce Subscriptions, Bookings, and Other Extension Product Types
Multi-currency works alongside the major WooCommerce extension product types. Each has its own behavior to confirm before going live.
- WooCommerce Subscriptions. Recurring subscription products honour multi-currency pricing. Set the subscription price in each currency the same way you set product prices. Renewal payments process in the currency the customer subscribed in.
- WooCommerce Bookings. Bookable product prices, deposit amounts, and per-resource costs all support per-currency pricing. The booking confirmation displays the customer’s currency throughout.
- Product Bundles, Composite Products, Mix and Match. Bundle and component products honour the parent product’s currency and price configuration.
For any extension product type, test a sample purchase end-to-end in each currency before launch. The multi-currency settings work consistently across extensions. Extension-specific pricing rules (deposits, payment plans, bundle discounts) can interact in ways you’ll want to verify.
Handle the Cart When the Currency or Language Changes
When a customer switches currency or language mid-session, their cart still holds items priced in the previous currency. WPML 5 lets you choose how the cart behaves for each case separately. Open WPML > Settings > WCML and scroll to the Cart section.
You’ll see two pairs of radio buttons:
- Switching languages when there are items in the cart. Pick Synchronize cart content when switching languages to keep the cart and re-price its items, or pick Prompt for a confirmation and reset the cart to ask the customer before resetting.
- Switching currencies when there are items in the cart. Same two options for currency changes.
Cart synchronization requires the WPML language cookie. If it’s disabled, the section shows an inline notice that links to WPML > Settings > Languages > Browser language redirect, where you enable the cookie.
Common Pitfalls
- Multicurrency enabled but no currencies appear. Add at least one currency beyond the default at WPML > Settings > Multicurrency > Currencies. Only the configured currencies show in the switcher.
- Currency switcher shortcode renders nothing. Confirm multicurrency is enabled and at least one currency is added. The shortcode renders an empty switcher when no alternative currencies exist.
- Wrong gateway shows up for a currency. Re-check the per-currency gateway settings (click Edit on each currency in the Currencies table). Every currency lists the available gateways and they need to be enabled explicitly per currency.
- Client Location returns the wrong currency. This option uses a MaxMind license key for IP-based detection. GeoIP databases occasionally misclassify. Your hosting provider may also cache IPs from a CDN edge. Test with a fresh browser session and confirm your host is passing the real visitor IP.
- Prices look right but tax is wrong. WooCommerce’s tax-by-location settings apply on top of the currency-based price. Configure tax classes at WooCommerce > Settings > Tax separately.
Written by Amir · Last updated July 2, 2026