MHM Currency Switcher — Multi-currency WooCommerce, done right.
Real-time exchange rates, 283 country flags, and a checkout that actually follows through. Free and complete — no paid edition, no locked features.
Your Cart
How cache compatibility mode works
A page cache stores the HTML your server produced for whoever asked first. When prices are converted on the server, that means the first visitor’s currency is what every later visitor is served. Cache compatibility mode, on by default, avoids this: anonymous shop, archive and product pages render in your base currency, so one cached page is correct for everyone, and the browser converts the prices it can see afterwards.
The split is deliberate. Only displayed prices are converted in the browser. Cart, checkout, order totals, order emails and the WooCommerce REST API are always calculated on the server in the currency the customer actually chose, so the amount charged cannot be altered from the browser.
Why Currency Switcher is different
Most multi-currency plugins convert the product page and call it done. Visitors reach checkout, the currency flips back to the store default, and they bounce.
Currency Switcher keeps the selected currency through the entire flow — product → cart → shipping → coupons → checkout → order. Cookie-based, persistent for 30 days, swappable from any page.
Built for global commerce
Every piece that gets tangled in other plugins — rates, flags, and pricing — handled.
Real-time exchange rates
Rates come from ExchangeRate-API, with the Fawaz Ahmed currency API (served over jsDelivr) as a fallback when it is unreachable. A rate you set by hand always wins over both. Sync on demand or on a schedule you configure — hourly, twice daily, or daily.
4 delivery modes
Shortcode, WordPress nav menu item, Elementor widget, and multi-currency price grid on product pages. Drop anywhere.
Use case: Switcher in the header menu; price grid in product descriptions.
283 country flags
SVG icons at 640×480 — not the 20×15 postage stamps you see in other plugins. Retina-crisp, every ISO 3166-1 country covered.
Use case: A global store selling to Vietnam, Nigeria, Peru — every flag renders sharp.
Per-product fixed pricing
Override live rates per product per currency. Variation support included. Escape rate-converted awkwardness.
Use case: Psychologically-priced SaaS: $49 / €49 / £49 — not “€108.37 converted from $119.99”.
Geolocation detection
CloudFlare country header → WC MaxMind cascade. Auto-selects visitor’s currency on first visit — no extra API calls, no latency penalty.
Use case: French visitor lands on your US store, sees EUR immediately, never touches the switcher.
WooCommerce HPOS
Full High-Performance Order Storage support. Prices convert across listings, cart, shipping, coupons, confirmation emails, admin reconciliation.
Use case: Admin sees €49.99 (converted from $54.99 base) with rate recorded at purchase time.
Free forever · GPLv2 or later · no paid tier, no locked features
Everything below is in the plugin you download. No upsell, nothing to unlock.
Free, complete, no catch
- check_circle Unlimited currencies
- check_circle Scheduled automatic rate updates (WP-Cron)
- check_circle Geolocation-based currency detection
- check_circle Per-product fixed pricing + variations
- check_circle All four switcher delivery modes (shortcode, nav menu, Elementor widget, price grid)
- check_circle 283 country flag SVGs
- check_circle WP-CLI commands
- check_circle Cache compatibility mode
- check_circle Community support
