MHM Currency Switcher

Live · Free

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.

Test coverage
248 tests
Country flags
283 SVG
WooCommerce
HPOS ready

Your Cart

language EUR
Rentiva Pro Yearly
1 × license
€137.00
Compact Camera Tripod
1 × item
€72.50
Total €209.50
Currency persists across cart → shipping → checkout → order email.
Safe by default under a page cache

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.

public
Crawlers see your base prices
The page a crawler fetches has not been through a browser, so it carries base-currency prices, and so does the machine-readable product data in it.
swap_horiz
Base prices are visible for a moment
The page arrives with base-currency prices already on screen — nothing is hidden waiting for JavaScript — and the browser swaps in the converted ones as soon as its request comes back, each price fading over 200ms. Visitors who asked their system for reduced motion get the swap without the fade.
End-to-end currency persistence

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.

check_circle Product page
check_circle Cart & mini-cart
check_circle Shipping rates
check_circle Coupon values
check_circle Checkout
check_circle Order confirmation email

Built for global commerce

Every piece that gets tangled in other plugins — rates, flags, and pricing — handled.

swap_horiz

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.

widgets

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.

flag

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.

price_check

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”.

public

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.

verified

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.

Currency Switcher

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
Download free
Requirements
WordPress 6.6+
WooCommerce 7.4+
PHP 7.4+ (8.1+ recommended)

Ready for multi-currency that actually works?

lock SSL checkout
credit_card Stripe · PCI-DSS Level 1
verified Polar MoR · 14-day refund
Browse Plugins →
Scroll to Top