Country Based Prices

Show every visitor prices in their own currency, correct on a fully cached store

Show every visitor prices in their own currency, with rounding rules that keep your prices looking deliberate. An add-on for Super Speedy AJAX Prices, correct on a fully page-cached store: the shop page stays cached and each visitor still gets their own money. Set up zones, watch what happens to your real products, and switch it on when you are happy.

Country Based Prices product icon

Every visitor sees prices in their own currency, on a fully cached store

An add-on for Super Speedy AJAX Prices

7
rounding rules, or set the three knobs yourself
0
extra database rows when you price by rule
5
ways to keep a product on your own prices
3
countries served their own currency from one cached page

Country pricing on a cached store is harder than it looks. A cached page is shared by everyone who visits it, so a price baked into that HTML is one visitor’s price served to the next thousand. The usual answer is to stop caching the pages that matter most.

Country Based Prices takes the other route. It works with Super Speedy AJAX Prices’ per-visitor price request, which is the one place it is safe to resolve where somebody is. The shop page stays fully cached and every visitor still gets their own currency.

Rounding is the point. Converting 49 euros at 1.2 gives 58.80, which looks like what it is: a conversion. This turns it into 59. Or 59.95, or 58.99, or 60. You pick from named rules and watch what happens to your real products before you save anything.

What Country Based Prices gives you back

  • Full page caching and correct prices at the same time. No page has to be excluded from the cache for pricing to work.
  • Prices that look chosen, not converted. A shop full of 58.80s tells every visitor they are seeing a machine translation of somebody else’s price list.
  • The option not to take foreign money at all. Show local prices and charge in your own currency, so you skip the multi-currency fees and the extra accounts.
  • One currency for your accountant. Every order line records what it was worth in your own currency at the moment of sale.
  • Nothing changes until you tick the box. Build your zones, test them against your real catalogue, and switch conversion on when you are happy.
  • No catalogue to re-tag. Products that should keep your own prices are picked out by how you already organise your shop.
  • Your other plugins keep working. Conversion happens at the earliest point WooCommerce reads a price, so a discount rule discounts the price your customer can actually see.
  • Never a checkout a customer cannot complete. If a visitor’s currency would leave them with no way to pay, they get your own prices instead.

What it does

Rounding that looks deliberate
Seven named rules: ends in 9 to the nearest 10, ends in 9 to the nearest 100, ends in 95, ends in 99, whole numbers, nearest 5 always up, and nearest 10 up or down. Or set the three knobs yourself: round to nearest N, up or down or nearest, and a charm amount taken off afterwards. Rounding is monotonic, so sorting your shop by price stays correct while prices are converted at runtime.
See it before you save it
A Test button showing your real catalogue, your currency on the left and any other country on the right, with the working behind every price: 49 x 1.2 = 58.80 -> 60.00 -> -1.00. It reflects what you have typed rather than what you last saved, so a rounding rule is chosen by looking. Paste any shop URL to preview that page.
Correct on a cached page
Geolocation never runs during a page render that could be cached, and the zone goes into WooCommerce’s variation price cache key so one country’s price range can never be served to another. Proven end to end: one frozen cached document, visitors from three countries, each ending up on their own currency, including add to cart and the header cart total.
Show local prices, charge in yours
Visitors browse in their own currency and pay in yours. The product page, the cart and the checkout all say so plainly, quoting the exact figure they already saw. That figure sits above the live rate, so their bank charges a little less than quoted rather than a little more.
One currency for your accounts
Every order line records its value in your own currency at the moment of sale, alongside what the customer actually paid in theirs. Recorded rather than reconstructed, so it survives you changing the multiplier, deleting the zone, or switching country pricing off entirely.
Products that keep your prices
Services, gift cards, affiliate products and anything else priced in your own money. Choose by how you fulfil it, by product type, by category, by tag or by tax class, whichever matches how your shop is already organised. Each option shows how many of your products it would catch before you save it.
Payment methods that keep your currency
Bank transfer, cheque and cash on delivery start set to your own currency, because that money lands in whatever accounts you actually hold. Pick a method that must not take foreign currency and the whole checkout switches to your prices, symbol included.
Each currency in its own units
A yen zone prices in whole yen and a Kuwaiti dinar zone in three decimal places, from the ISO 4217 list rather than your shop’s single decimal-places setting. Payment providers take zero-decimal amounts as whole units and drop the fraction without asking, so this is the difference between recording 7766.50 and charging 7766.
It refuses rather than guesses
Ask what a past order line was worth in your currency and you get a straight “cannot tell” when it cannot be worked out honestly, instead of a plausible wrong number. That matters most for upgrade credit, where a guessed figure can exceed the price and hand over a free product. You are emailed and it is logged; the customer is shown full price and asked to get in touch.

Key features

  • Unlimited zones, each with any number of countries, matched in order
  • Enable or disable a zone without deleting it
  • Per-zone currency, price format, decimal places and zero trimming
  • Per-product and per-variation prices for when a rule is not enough
  • Exchange rate advice showing the margin your multiplier carries, refreshed only when you ask
  • Rates never move your prices, deliberately
  • Preview any page of your shop by pasting its URL
  • The cart, the checkout, the block checkout and the mini cart all agree
  • Shipping and fixed-amount coupons convert; percentage coupons never do
  • Subscriptions renew in the currency they were sold in
  • Orders record the zone, the multiplier and the base-currency value of every line
  • wp ssapcbp backfill values order lines from before you installed it
  • A one-click import from WooCommerce Price Based on Country that never writes to its data
  • An integration API so other plugins can do price arithmetic without mixing two currencies
  • A panel listing every other plugin on your site that changes prices, and which ones run before conversion
  • Switch the add-on off from the Add-ons panel without losing your zones

Why choose Country Based Prices

Built for a cached shop, not adapted to one
Most currency plugins resolve the visitor during the page render, which is exactly what a page cache makes unsafe. This resolves in the per-visitor price request instead, so the shop page, the category pages and the product pages all stay cached.
Rounding with a direction
Round up, round down or round to whichever is nearest, then take a charm amount off. Rounding down is what turns 101 into 99, and it is the direction most converted price lists cannot express. The guard rails hold either way: a price is never rounded to or below zero, and a higher base price can never produce a lower shown price, so your shop still sorts correctly by price.
Honest about money it cannot work out
Currency plugins are usually judged on the prices they show. The ones that cost you money are the sums done behind them, by whatever else on your site credits a customer for a past purchase. This records the figure at the time of sale, hands it over on request, and says “cannot tell” rather than guessing when the record is not there.
Reversible
Nothing is converted until you switch it on. The Price Based on Country importer never writes to that plugin’s own settings or meta, so you can go back. Deleting the add-on keeps your order records, because they are accounting history rather than plugin settings.

Documentation and development

What's new in Country Based Prices?

View full changelog →
1.13.10 (22nd August 2026)
  • Updated super-speedy-settings to the latest version
1.13.9 (21st August 2026)
  • Hardened the shared settings module and removed its Jetpack Autoloader dependency
1.13.8 (18th August 2026)
  • Updated super-speedy-settings to 1.8.0, restoring the official WordPress MCP Adapter
1.13.7 (15th August 2026)
  • Fixed Advanced Dynamic Pricing replacing converted cart amounts with base-currency numbers, which could produce a USD basket and order containing the EUR amount
1.13.6 (14th August 2026)
  • Added 9 MCP abilities for status, global configuration, zone inspection, real-product price previews, catalogue rule summaries, refusal evidence and confirmed zone writes
  • Replaced the bundled MCP Adapter and AI Engine integration with the shared site bridge and separate manage and apply permissions

Questions

Do I need Super Speedy AJAX Prices as well?
Yes. This is an add-on to it and needs version 1.9.3 or newer. The add-on tells you in the admin if the parent needs updating, and it will not convert any prices until it is.
Does my payment gateway have to support the currency?
In “charge in the local currency” mode, yes. In “show local prices, charge in yours” mode, no, because you only ever take money in your own currency. The settings screen warns you about any zone whose currency none of your active gateways say they accept, and customers in that situation are shown your own prices so they can still check out.
Will my old orders change?
No. An order is priced when it is placed and never repriced, whoever is looking at it. wp-admin is never converted either, so you see your orders in the currency they were taken in.
Do prices move when exchange rates move?
No, and that is deliberate. You set a multiplier. The live rate is fetched only to show you what margin that multiplier carries, so you can pick one you are happy to leave alone. Your customers never see a rate.
What happens if a customer changes their country at checkout?
Prices follow them. Enter a US billing address and the totals move to your USA zone immediately, in the classic checkout and the block checkout alike.
Does it work with my other pricing plugins?
Usually, and the settings screen tells you where it might not. Conversion happens at the earliest point WooCommerce reads a price, so a percentage discount from another plugin applies to the price your customer can see. The two things worth checking are plugins that hook prices even earlier, and plugins that do arithmetic with amounts already recorded in your currency, such as upgrade credit or store credit. Both are listed for you, and there is an API their developer can use to fix the second in a line.
Does it work with the block checkout and HPOS?
Yes to both, and both are declared to WooCommerce so it does not list the add-on as uncertain. Order data is read and written through WooCommerce’s own API rather than by touching the database, and the block checkout is supported through the Store API. The test suite runs against a store with High Performance Order Storage switched on.
Can visitors pick their own currency?
Not yet. The zone follows the customer’s country, taken from the address they have given, or the address saved on their account, or geolocation. A switcher is designed and not built.
What about price range filters?
Sorting a shop by price is correct, because a multiplier preserves the order. Range filters are not: they compare against your stored prices, so “under $100” filters on the base figure rather than the converted one. Designed and not built.
Does it work with WPML or Polylang?
Polylang and TranslatePress are untested, and there is a design for both. WPML is out of scope and will not be supported.
Can I try it without risk?
Every Super Speedy plugin carries a 60-day money-back guarantee. See the refund policy.

Invest in Speed

Choose your licence below.

Days
Hours
Mins
Secs

Country Based Prices is nearly ready. It is an add-on for Super Speedy AJAX Prices that shows every visitor prices in their own currency, with rounding rules that keep your prices looking deliberate, and it stays correct on a fully page-cached store.

Leave your email and you will hear the moment it is released.

Enter your email address below for early access.

Agency or host? Get in touch for custom pricing

Reviews

There are no reviews yet.

Be the first to review “Country Based Prices”
▲
▼
1/1