About this plugin
U2Code Product Multicurrency lets your WooCommerce store display prices and accept payments in any number of currencies.
Currencies & rates
- Unlimited currencies, ordered the way you want them in the switcher
- Automatic exchange rates from ECB, Frankfurter, FloatRates (free, no key), Open Exchange Rates or Fixer
- Hourly to weekly update schedule, or manual-only, with an “Update now” button
- Manual rate override per currency — automatic updates never touch it
- Percentage fee (markup) and fixed fee per currency
- Price rounding per currency: to the nearest/up/down step (0.01 … 100) plus charm endings (19.99) — with a live preview while you configure
- Per-currency symbol, symbol position, decimals and separators — zero-decimal currencies like JPY handled correctly
- If a rate is ever missing or broken, prices fall back to the base currency — never to zero
Detection & switching
- Currency switcher everywhere you need it: Gutenberg block (works in Site Editor headers), shortcode [u2code_currency_switcher], classic widget, floating panel, navigation menu items (any number of menus, with a currency submenu), under the price on product pages, and an Elementor widget — five styles (dropdown, buttons, native select, flags only, text links), with flag emojis (no image sprites)
- Geolocation: map countries to currencies and first-time visitors see their local one (crawlers always get the base currency)
- The visitor’s choice is remembered in a cookie;?currency=EUR links switch too
- Cache compatibility mode: prices are re-drawn in the browser on cached pages; WP Rocket cookie registration built in
Checkout & orders
- Choose: customers pay in the selected currency, or the checkout always charges the base currency (display-only switching)
- Every order stores the currency, the exchange rate at purchase time and the total in your base currency
- WooCommerce Analytics reads coherent base-currency numbers — reports never mix currencies
- The order-pay page always charges the order’s own currency
Compatible by design
- HPOS and Cart/Checkout Blocks compatible, Store API aware
- Shipping costs, fixed-amount coupons, coupon limits and free-shipping thresholds are all converted
- Ships integrations for Tiered Pricing Table, U2Code Product Addons, Elementor and WP Rocket — each can be toggled off
- Extensive hooks for developers (see DEVELOPERS.md in the plugin folder)
Premium
- Fixed per-product prices per currency (simple products and variations) that replace the calculated conversion
- Restrict payment gateways per currency
External services
This plugin can fetch currency exchange rates from an external service. It only contacts the one provider you select under WooCommerce → Settings → Multicurrency → Exchange Rates, on the schedule you choose there (or when you press “Update rates now”). The request is made from your server and contains only the currency codes you configured — plus your own API key for the providers that require one.
No visitor data and no personal data is ever sent.
Available rate providers:
- European Central Bank (ECB) — free daily reference rates, no account needed. Disclaimer and copyright
- Frankfurter — free open-source exchange-rate API, no key and no account needed. Website and documentation
- FloatRates — free exchange-rate feeds, no account needed. FloatRates does not publish separate terms or privacy pages; see About FloatRates
- Open Exchange Rates — requires an App ID that you create with them. Terms of service, Privacy policy
- Fixer — requires an access key that you create with them. Terms of service, Privacy policy
If “Detect currency by visitor location” is enabled, the visitor’s country is determined by WooCommerce’s built-in geolocation on your own server. This plugin does not send visitor data to any external geolocation service.
Source code & build
The admin app in assets/admin/ is compiled with @wordpress/scripts (webpack) from the human-readable sources shipped in js-source/. To rebuild it:
cd js-source && npm install && npm run build
min files are generated from the adjacent source file of the same name.