Skip to main content

WooCommerce Multicurrency

Intro

The plugin displays every WooCommerce price — products, cart, shipping, totals — in the customer’s own currency using live exchange rates, without ever changing what’s stored in your database.

Context

Multicurrency display sits between configuration (where you set your baseline currency and switcher placement) and the payment flow (where the customer is charged in whatever currency they’re viewing). Your product prices in the database are never rewritten — conversion happens only at display and charge time.

Hows

How it works

  1. Detection — a new visitor’s currency is detected automatically from their location.
  2. Conversion — product prices, cart, shipping, and totals are shown in that currency.
  3. Switching — a currency switcher lets customers choose a different currency.
  4. Checkout — the customer is charged in the currency they see.
Once a customer picks a currency, that choice is remembered on their next visit. Under the hood, the plugin uses a hybrid rendering approach: on cacheable pages (shop, product, home) prices render in your store’s baseline currency and a small script converts them client-side, so full-page caching still serves one cached variant per page. On cart, checkout, and account pages — where WooCommerce needs a real number for tax and totals — the plugin converts server-side instead.

What gets converted

  • Product prices (regular, sale, and variation prices)
  • Cart items, subtotals, and the mini-cart
  • Shipping rates
  • Order totals
  • Currency symbols

The currency switcher

Customers can change currency in three places:
  • Floating switcher — appears automatically on the pages you enable in settings, showing country flags and currency codes.
  • Shortcode — add [khaime_currency_switcher] (or style="buttons") to any page or post.
  • Widget — add Khaime Currency Switcher under Appearance → Widgets.
See Configuration → Currency Switcher Display to control where the floating switcher shows.

Supported currencies

The currencies offered to customers are the ones you enable in your Khaime dashboard — the switcher reflects that list automatically. There’s nothing to configure in the plugin itself.

Compatibility

  • Page caching — works with full-page caching (Varnish, WP Super Cache, and similar) — this is exactly what the cacheable/non-cacheable page split above is designed for.
  • Custom themes & page builders — if your theme shows prices in unusual markup, list its CSS selectors under Custom Price Selectors.
  • Product Add-Ons (WAPF) — add-on prices are converted along with the rest of the cart.

Troubleshooting

Prices not converting
  • Check the connection: WooCommerce → Khaime → Test API connection.
  • Confirm your store’s base currency matches your Khaime dashboard.
Prices showing very large or wrong numbers
  • Usually a stale cache or cookie. Clear your browser cookies and reload.
  • Make sure your base currency matches your Khaime dashboard setting.
Mini-cart shows the wrong currency symbol
  • The mini-cart can be cached in the browser. Switching currency reloads the page and refreshes it; if it persists, clear your browser cache.

Whys

Splitting conversion into a cacheable, client-side path and a non-cacheable, server-side path is what lets multicurrency coexist with full-page caching — a naive implementation that always converts server-side would force every shop and product page to be rendered per-currency, defeating page caching entirely (or forcing you to disable it). Converting from the raw stored price on every render — rather than mutating and re-saving a converted price — also avoids a double-conversion bug: WooCommerce sometimes recalculates totals more than once per request, and a value converted once already would get converted again on the second pass if the plugin worked from its own output instead of the source price.

Why nots

  • Doesn’t change your product prices in the database. Everything here is display- and charge-time conversion; your source-of-truth prices stay in your store’s baseline currency.
  • Doesn’t let customers negotiate or override the shown exchange rate. Rates come from Khaime and update on a cache cycle — there’s no manual rate override in the plugin.
  • Isn’t a translation or localization tool. It converts currency, not language, units, or tax rules beyond what WooCommerce itself already computes.
  • Checkout currency is not switchable mid-flow by design — see Configuration for why the switcher is disabled there by default.