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
- Detection — a new visitor’s currency is detected automatically from their location.
- Conversion — product prices, cart, shipping, and totals are shown in that currency.
- Switching — a currency switcher lets customers choose a different currency.
- Checkout — the customer is charged in the currency they see.
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](orstyle="buttons") to any page or post. - Widget — add Khaime Currency Switcher under Appearance → Widgets.
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.
- Usually a stale cache or cookie. Clear your browser cookies and reload.
- Make sure your base currency matches your Khaime dashboard setting.
- 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.
