Multi Currency for WooCommerce
Ціни у валюті покупця за курсом НБУ; замовлення і платіж завжди в одній валюті. Безкоштовно — 1 додаткова валюта, Pro — без обмежень.
What each licence includes
| Feature | Free | Pro |
|---|---|---|
| Prices in the buyer's currency at the NBU rate, refreshed automatically twice a day | ✔ | ✔ |
| The order's currency is pinned at checkout — the payment takes the amount and currency from the order itself | ✔ | ✔ |
| Currency switcher via shortcode, as a list or a dropdown | ✔ | ✔ |
| WooCommerce reports and Analytics convert to the base currency at the rate from the time of the order | ✔ | ✔ |
| Cache-friendly: the currency is added to the vary cookies (LiteSpeed Cache, WP Super Cache) | ✔ | ✔ |
| Pro: unlimited additional currencies instead of one | ✔ | ✔ |
| Pro: a percentage markup on the NBU rate for each currency | ✔ | ✔ |
| Pro: a manual (fixed) rate instead of the automatic NBU one | ✔ | ✔ |
| Pro: currency based on the visitor's country | ✔ | ✔ |
Multi Currency for WooCommerce shows your shop’s prices in the buyer’s own currency at the National Bank of Ukraine rate, while the order and the payment always run in a single currency: swapping the amount or the currency at the payment step is structurally impossible.
What the buyer sees

The order and the payment are always one currency
The most common way multi-currency plugins break: the page shows a price in one currency while the payment gateway charges the amount in another, or the payment signature is computed from the wrong currency. This module pins the currency at the exact moment the order is placed — the rate at that moment is stored on the order, and the WooCommerce order and the payment gateway then take the amount and the currency from the order itself. A mismatch between what the buyer saw and what went to the gateway cannot happen here.
The switcher and currency detection
The [catcode_currency_switcher] shortcode goes into a menu, the header or the footer and renders as a list or a dropdown. The buyer’s currency is remembered for a month. The Pro version can also suggest a currency based on the visitor’s country — the buyer’s own choice always wins over auto-detection.
Admin settings

WooCommerce reports stay correct
Orders in a foreign currency are converted to the shop’s base currency for WooCommerce Analytics and reports at the rate that applied at the time of the order itself — not at today’s rate, which may well have moved since.
Compatibility
WooCommerce 6.0+, WordPress 5.6+, PHP 7.4+, HPOS and the block checkout.
Why a shop needs this
A Ukrainian shop selling abroad runs into something simple: a buyer in Poland or Germany sees a price in hryvnia and has no idea whether that is expensive or not. They will not go and work out the exchange rate — they will leave. Showing the price in a currency they know removes that step.
The second half of the job is harder than the switcher: the order and the payment must be in the same currency. If the storefront showed euro and the gateway charged hryvnia at a different rate, the shop ends up with a reconciliation gap and a complaint from the buyer.
Where the rate comes from
The rate is pulled from the National Bank of Ukraine and refreshes automatically twice a day. It is the official rate, not an exchange one — the same rate accounting uses, so the reports add up.
In Pro the rate can be set manually, or a markup can be added on top of the NBU rate — which is what shops usually do, to cover the acquiring fee and a day’s fluctuation.
What the admin gets
The shop’s base currency does not change — it stays hryvnia. Additional currencies are only layered on top as a storefront, so there is nothing to migrate and rolling back is painless.
Rounding is configurable: how many decimal places, and whether to tidy the result into a nice number so that 27.43 € comes out as 27.50 €.
Cache compatibility
The second classic failure of currency modules is caching. A page generated for a buyer in euro gets served to the next visitor, who sees somebody else’s currency.
The module adds the currency to the cache vary key, so each currency is cached separately. Caching stays switched on — you do not have to disable it for the sake of multi-currency.
Free version and Pro
The free version gives you one additional currency, the NBU rate with auto-refresh, the switcher, currency pinning on the order, correct reports and cache handling. There is no time limit and no advertising in the admin.
Pro lifts the limit on the number of currencies and adds a manual rate and a markup on top of the NBU rate.
What it costs
A Pro licence is 990 UAH for one site. The licence is annual: once it ends the module keeps working, only updates and support stop. We do not promise “forever” — the NBU changes its API format, and a module without updates will one day stop pulling the rate.
Technical requirements
WordPress 6.2 or newer, WooCommerce, PHP 7.4 or newer. Compatible with HPOS, the classic checkout and the block checkout. Refreshing the rate needs outgoing HTTPS to api.bank.gov.ua and a working WP-Cron (or a system cron).
What is under the hood
The order’s currency and rate are stored in the order’s own meta fields. That is exactly why the payment and the reporting agree: any module that later reads the order sees the same “amount + currency” pair the buyer saw at checkout.
The rate is cached, so the NBU is queried twice a day rather than on every page load. If the API does not answer, the module runs on the last known rate instead of showing the buyer an empty price.
How to install it
1. Upload the archive in “Plugins → Add New → Upload Plugin” and activate it.
2. In the settings, switch on the currencies you need and hit the rate refresh.
3. Place the switcher with the shortcode wherever you need it — usually in the header.
4. Place a test order in a non-base currency and check that the gateway received the same amount and currency.
5. If you run a cache, warm the pages in both currencies and make sure they have not got mixed up.
Frequently asked questions
Can a buyer pay in a currency other than the one they saw on the page?
No. The currency is pinned on the order at checkout and the payment gateway takes the amount and currency from the order itself — there is simply no separate conversion step where they could diverge.
Where do the rates come from?
The public exchange rate service of the National Bank of Ukraine, refreshed automatically twice a day. A manual (fixed) rate for an individual currency is available in Pro.
Does this break WooCommerce reports?
No. Orders in a foreign currency are converted to the shop's base currency for Analytics and reports at the rate that applied at the time of the order itself.
How many currencies can I add for free?
The shop's base currency plus one additional one. Any others you have already configured are kept and switch on the moment you go Pro.
How many sites can one key activate?
One. The licence is annual: once the term ends the module keeps working, only updates and support stop.
Questions about the module?
Message us on Telegram — we reply within the working day. We will help with setup, compatibility and key activation.
No reviews yet. Be the first — right below.
Leave a review
Reviews are moderated before publication, which usually takes up to 24 hours.
No questions yet. Ask one — we answer within 24 hours.
Ask a question
We usually reply within 24 hours during working hours.
Buying the module
—