Price Based on Country for WooCommerce


Price Based on Country for WooCommerce allows you to sell the same product in multiple currencies based on the country of the customer.

How it works

The plugin detects automatically the country of the website visitor throught the geolocation feature included in WooCommerce (2.3.0 or later) and display the currency and price you have defined previously for this country.

You have two ways to set product’s price for each country:

  • Calculate price by applying the exchange rate.
  • Set price manually.

When country changes on checkout page, the cart, the order preview and all shop are updated to display the correct currency and pricing.


Sell and receive payments in different currencies, reducing the costs of currency conversions.

Country Switcher

The extension include a country switcher widget to allow your customer change the country from the frontend of your website.

Shipping currency conversion

Apply currency conversion to Flat and International Flat Rate Shipping.

Compatible with WPML

WooCommerce Product Price Based on Countries is officially compatible with WPML.

Upgrade to Pro

This plugin offers a Pro addon which adds the following features:

  • Guaranteed support by private ticket system.
  • Automatic updates of exchange rates.
  • Add an exchange rate fee.
  • Round to nearest.
  • Display the currency code next to price.
  • Compatible with the WooCommerce built-in CSV importer and exporter.
  • Thousand separator, decimal separator and number of decimals by pricing zone.
  • Currency switcher widget.
  • Support to WooCommerce Subscriptions by Prospress .
  • Support to WooCommerce Product Bundles by SomewhereWarm .
  • Support to WooCommerce Product Add-ons by WooCommerce .
  • Support to WooCommerce Bookings by WooCommerce .
  • Support to WooCommerce Composite Product by SomewhereWarm.
  • Bulk editing of variations princing.
  • Support for manual orders.
  • More features and integrations is coming.

Get Price Based on Country Pro now


WooCommerce 2.6.0 or later.


  • /assets/screenshot-1.png
  • /assets/screenshot-2.png
  • /assets/screenshot-3.png
  • /assets/screenshot-4.png
  • /assets/screenshot-5.png
  • /assets/screenshot-6.png


  1. Download, install and activate the plugin.
  2. Go to WooCommerce -> Settings -> Product Price Based on Country and configure as required.
  3. Go to the product page and sets the price for the countries you have configured avobe.

Adding a country selector to the front-end

Once you’ve added support for multiple country and their currencies, you could display a country selector in the theme. You can display the country selector with a shortcode or as a hook.


[wcpbc_country_selector other_countries_text=”Other countries”]

PHP Code

do_action(‘wcpbc_manual_country_selector’, ‘Other countries’);

Customize country selector (only for developers)

  1. Add action “wcpbc_manual_country_selector” to your theme.
  2. To customize the country selector:
    1. Create a directory named “woocommerce-product-price-based-on-countries” in your theme directory.
    2. Copy to the directory created avobe the file “country-selector.php” included in the plugin.
    3. Work with this file.


How might I test if the prices are displayed correctly for a given country?

If you are in a test environment, you can configure the test mode in the setting page.

In a production environment you can use a privacy VPN tools like TunnelBear or ZenMate

You should do the test in a private browsing window to prevent data stored in the session. Open a private window on Firefox or on Chrome


Great Plugin and service

After installing the plugin, it was a little bit tricky to understand the instructions, but after contacting the service, I got the needed help. Fast and quick. Now it works great and I use it across several shops and countries.

Para birimi seçeneği akıllıca kullanılabiliyor

Gönderim yapacağınız ülkeye göre fiyat belirleyebiliyorsunuz. Mesela Yunanistan'a ürün satarken 50 TL olan fiyatı 1,4 ile çarp ve yine TL sat diyorsunuz Yunanistan'dan sipariş verildiğinde 70 TL oluyor. Yada EUR üzerinden fiyatlayabiliyorsunuz. Ücretsiz versiyonunda bu yapılabiliyor. Gayet iyi

Works exactly as I want

We have used this on a few website and am really happy. After a year or so of use we hit our first issue. The support helped me put it right quickly. I can not fault the plugin or the support.
Read all 139 reviews

Contributors & Developers

“Price Based on Country for WooCommerce” is open source software. The following people have contributed to this plugin.



1.7.21 (2019-02-21)

  • Fixed: Bug with WooCommerce 3.5.5 that prevented saving zones.

1.7.20 (2019-01-23)

  • Fixed: “Hide notice” button only works in WooCommerce admin pages.

1.7.19 (2019-01-03)

  • Tweak: AJAX geolocation javascript improve to better compatibility with customizations of the price HTML.
  • Tweak: Check wc_admin_screen before load admin javascript.

1.7.18 (2018-11-27)

  • Fixed: Order by price does not work.

1.7.17 (2018-11-20)

  • Tweak: Frontend Javascript compatible with JQuery versions prior to 1.12.

1.7.16 (2018-11-15)

  • Fixed: Javascript error on AJAX pricing geolocation.
  • Fixed: Error on loading coupons of type percent.
  • Tweak: Code improvements.

1.7.15 (2018-10-12)

  • Added: New core functions.

1.7.14 (2018-10-04)

  • Fixed: Bug on “is_exchange_rate” function that affects to round to nearest.
  • Fixed: Bulk delete zones action does not work.
  • Tweak: Add tax info to to WooCommerce System Report.

1.7.13 (2018-10-02)

  • Added: WooCommerce tested up to 3.5
  • Fixed: The get_price function return a wrong price for variable products.
  • Tweak: Improvements on AJAX geolocate function.

1.7.12 (2018-09-06)

  • Fixed: Check the correct WC version before get cart content total.
  • Fixed: Some errors do not display after zone update.
  • Tweak: Improvements on AJAX geolocate script.
  • Tweak: Removed URL parameter after update GeoIP database action.
  • Tweak: Added ‘Dismiss’ text to dismissible notices.

1.7.11 (2018-08-23)

  • Fixed: Uncaught Error: Call to a member function get_billing_country() on null.
  • Fixed: Action button messages move down in the settings page.
  • Fixed: Get real IP fail on the wooocommerce status report.
  • Tweak: New hook to allow filter “is admin AJAX”.

1.7.10 (2018-07-02)

  • Fixed: Change AJAX Geolocation method to POST to prevent cache issues.
  • Tweak: Call AJAX pricing geolocation on each AJAX request to improve compatibility with plugins and themes.
  • Tweak: Add Geolocation debug info to WooCommerce System Report.

1.7.9 (2018-06-19)

  • Added: Spinner to AJAX Geolocation.
  • Tweak: Re-style setting zone page.
  • Fixed: Bug on get_zone function.

1.7.8 (2018-06-04)

  • Fixed: Set the correct country when the customer lands on the order payment page.
  • Fixed: Warning: Non-static method be called statically on tracker class.

1.7.7 (2018-06-01)

  • Fixed: Ajax geolocation does not refresh the widgets when the cache date is before the widget update.
  • Tweak: Don’t display the “MaxMind database does not exists” alert when Cloudflare Geolocation is enabled.
  • Added: An easy way to update to MaxMind Geolocation database when it does not exists.
  • Added: Improvements on country switcher template.
  • Added: Tax settings in the WooCommerce status report.

1.7.6 (2018-05-24)

  • Fixed: Change country on cart shipping calculator does not update product pricing.

1.7.5 (2018-05-15)

  • Fixed: Product variations with a wrong ‘product type’ taxonomy are updated with ‘nothing’ as price method.
  • Tweak: Set public get_zone_from_order method.

1.7.4 (2018-05-08)

  • Fixed: PHP Parse error on class-admin-notices.
  • Fixed: Ajax geolocation support does not work on homepage for some page builders.
  • Tweak: Update order meta with zone pricing data.
  • Tweak: WooCommerce tested up to 3.4

1.7.3 (2018-04-17)

  • Fixed: Notice dismissible button does not work.
  • Fixed: Compatible with WC2.5.
  • Tweak: Upgrade notice.

1.7.2 (2018-04-13)

  • Fixed: Bug on front-end pricing class.
  • Fixed: Error on admin-notices module on WC version older than 2.6.
  • Fixed: Refresh mini cart totals after country/currency switch.
  • Fixed: Problems with order review refresh on checkout page.
  • Added: Support for “Dynamic Pricing” fixed price and price discount by the exchange rate.
  • Tweak: New admin notices.

1.7.1 (2018-03-27)

  • Fixed: Error “Can’t use function return value in write context” on old PHP versions.

1.7.0 (2018-03-27)

  • Added: New option: Load product price in the background via AJAX to solve the problem with cache and Geolocation.
  • Added: No unnecessary WooCommerce user sessions.
  • Added: “Admin notices” to help users to solve most common problems.
  • Added: Delegate “Cart refresh” to WooCommerce after the country change by Country switcher.
  • Added: Security improvements.
  • Tweak: Style improvements in the back-end.

1.6.25 (2018-03-01)

  • Fixed: Front-end pricing loaded on built-in Woocommerce products export/import.

1.6.24 (2018-02-16)

  • Fixed: Break admin styles.

1.6.23 (2018-02-06)

  • Tweak: Check compatibility with WC 3.3

1.6.22 (2017-12-09)

  • Fixed: Quick edit compatible with WC 3.0+
  • Fixed: On sale dates does not set product on sale.
  • Fixed: Upgrade to pro notice display for variable products.

1.6.21 (2017-11-21)

  • Added: Improvements to manage zones.
  • Added: Improvements to status report.
  • Tweak: Retesting compatibility with WPML
  • Fixed: PHP Notice – Array to string conversion in status report.

1.6.20 (2017-10-13)

  • Fixed: Warning message on WC 3.2 “Indirect modification of overloaded property WC_Shipping_Rate::$taxes”.
  • Tweak: WC version check.

1.6.19 (2017-09-19)

  • Fixed: All product are on sale.

1.6.18 (2017-09-19)

  • Fixed: Error on WooCommerce Reports message when only exists one currency.
  • Tweak: Improvements in frontend pricing core function.
  • Tweak: Deprecated hook “wc_price_based_country_stop_princing” replaced with “wc_price_based_country_stop_pricing”.
  • Tweak: Improvements in system report.
  • Added: “Select Eurozone” button to settings page.

1.6.17 (2017-07-22)

  • Fixed: Error on edit product when WooCommerce Multilingual is active.
  • Tweak: Add “other countries text” param to “wcpbc_country_selector” shortcode.

1.6.15 (2017-07-20)

  • Fixed: file not found.

1.6.14 (2017-07-19)

  • Fixed: Hide product data ads in default product types.
  • Fixed: Front-end prices for manual orders are deactivated, so manual orders does discrepancies between prices and currencies.

1.6.13 (2017-06-26)

  • Fixed: No round price set manually.
  • Fixed: Round shipping cost after apply currency conversion.
  • Fixed: Do not echo selected() in country-selector.php.
  • Fixed: Check if class WC_Widget exists before load Country selector widget.

1.6.12 (2017-06-10)

  • Fixed: No round empty prices.

1.6.11 (2017-06-10)

  • Fixed: Wrong subtotal calculation with price by exchange rates and more of 10 items in cart.
  • Added: Code improvements.
  • Added: Integration with Pro Addon.

1.6.10 (2017-05-07)

  • Fixed: Deprecated WooCommerce functions and backward compatibility to 2.6

1.6.9 (2017-04-24)

  • Fixed: Deprecated WooCommerce functions and backward compatibility to 2.6
  • Fixed: Break styles on variations downloadable products.
  • Fixed: Bug on coupons with PHP 7

1.6.8 (2017-04-10)

  • Added: Support for deprecated WooCommerce functions and backward compatibility to 2.6.
  • Fixed: Bug on array with locale-sensitive sort function.
  • Tweak: Apply exchange rates to min order amount on free shipping method. Thanks @mariankadanka.

1.6.7 (2017-03-10)

  • Fixed: Broken Dependencies on script wc-price-based-country-frontend.
  • Tweak: Improvements on WooCommerce report support.

1.6.6 (2017-02-25)

  • Fixed: Error when editing a draft variable product.
  • Fixed: Post object isn’t instance.
  • Tweak: Apply exchange rates to coupon minimum and max amounts.
  • Tweak: Load files code improvements.

1.6.5 (2016-12-30)

  • Fixed: Set customer session cookie after headers has been send.
  • Fixed: Sync the variable product prices with it’s children when “Hide out of stock items from the catalog” option is enabled.

1.6.4 (2016-12-18)

  • Fixed: Bug with paypal express checkout by AngellEYE.
  • Fixed: Enabled paypal standard in WooCommerce checkout settings when exists a supported country in Zone Pricing.

1.6.3 (2016-11-26)

  • Fixed: ‘added_to_cart’ javascript event causes a issue with some themes, replace by ‘wcpbc_cart_refreshed’.
  • Fixed: Undefined index HTTP_USER_AGENT.
  • Fixed: Exchange rate to minimum and maximum spend of coupon usage restriction.
  • Tweak: Add plugin info to WooCommerce System Status Report.
  • Added: WooCommerce 2Checkout Gateway by Krokedil Integration
  • Added: Spanish Translation.
  • Added: French Translation.
  • Added: Netherlands translation.

1.6.2 (2016-09-24)

  • Fixed: Price missing for variable products with all variation with manual price.
  • Fixed: Mini Cart not is refreshed on country switcher changes.
  • Tweak: $_SERVER instead of $_POST in check_manual_country_widget function.

1.6.1 (2016-09-17)

  • Fixed: Bug in reports by exchane rate.

1.6.0 (2016-09-17)

  • Added: New core front-end pricing.
  • Added: Schecule sale prices.
  • Added: Currency conversion to all shipping methods.
  • Added: Currency conversion to coupons.
  • Added: Reports support by exchange rate.
  • Fixed: Bulk remove zones not works in settings page.
  • Fixed: Quick edit required reload page.
  • Fixed: Currency Switcher with appropriate locale-sensitive sort orderings.
  • Fixed: Wrong shipping tax

1.5.12 (2016-07-12)

  • Fixed: Cart prices not updated after calculate shipping
  • Fixed: Country switcher not works fine when the country is changed in shipping calculator.

1.5.11 (2016-06-28)

  • Fixed: Mysql Database error on WooCommerce free shipping conversion
  • Fixed: Incompatibility with non-latin chars in region name.

1.5.10 (2016-06-25)

  • Fixed: Bug with shippings methods of WooCommerce 2.6
  • Fixed: Bug on price filter of WooCommerce 2.6
  • Fixed: Check if customer has been initialized in woocommerce_currency hook
  • Fixed: Wrong price for variation products when price included tax.

1.5.9 (2016-05-17)

  • Fixed: PHP Fatal error in country switcher template
  • Fixed: Not apply currency conversion to free shipping min amount
  • Tweak: Add “select all” and “select none” tool buttons to region setting page.

1.5.8 (2016-04-17)

  • Fixed: On sale shortcode display a worng price

1.5.7 (2016-03-21)

  • Fixed: Currency not change on check-out page

1.5.6 (2016-03-19)

  • Fixed: Cart refresh when Country switcher widget change.
  • Tweak: Remove select button on Country switcher widget.

1.5.5 (2016-02-20)

  • Fixed: Bug in Country switcher widget.
  • Added: Country switcher widget title.

1.5.4 (2016-02-14)

  • Fixed: Non-static method be called statically.
  • Added: Code improvements.

1.5.3 (2016-02-05)

  • Fixed: Wrong name in callback function.

1.5.2 (2016-02-03)

  • Fixed: Anonymous functions caused a syntax error in settings page.

1.5.1 (2016-01-17)

  • Fixed: Anonymous functions caused a syntax error.

1.5.0 (2016-01-14)

  • Added: Country Selector Widget.
  • Added: Support to WooCommerce Products on Sale Widget.
  • Added: Code improvements.
  • Added: Option Price based on Billing or Shipping Country.
  • Added: Flat and International Flar Rate Shipping currency conversion.
  • Fixed: Incorrect value for price included tax.
  • Fixed: Country selector Shortcode not works properly.


  • Added: Multicurrency support for WooCommerce Status dashboard Widget.
  • Added: Improved performance for variable product.
  • Fixed: WPML compatiblity – Fields of variable products are not blocked.


  • Added: Ready for WPML.
  • Fixed: Max And Min Values in Price Filter Widget not works.


  • Added: Ready for WooCommerce 2.4


  • Fixed: Country of Base Location not in list of countries.
  • Added: Improved settings page.


  • Fixed: The manual price is not saved in external/affiliate products.
  • Fixed: The exchange rate only supports dot as decimal separator.
  • Added: Support for WooCommerce Price Filter Widget (beta).


  • Required: WooCommerce 2.3.0 or or later!
  • Fixed: Incorrect currency conversion for variable products.
  • Added: Integrate with WooCommerce geolocation function.
  • Added: Improved test mode.
  • Added: Radio button to select the price method (calculate by exchange rate or manually) for each product.


  • Fixed: Price before discount not show for variable products with sale price.


  • Added: Exchange rate to apply when price leave blank.
  • Added: Hook and template to add a country selector.
  • Fixed minor bugs.


  • Fixed bug that breaks execution of cron jobs when run from wp-cron.php.
  • Fixed bug: Error in uninstall procedure.


  • Fixed bug that break style in variable products.
  • Fixed bug: prices not show in variable products.


  • Added: Sale price by groups of countries.
  • Added: Refresh prices and currency when user changes billing country on checkout page.
  • Fixed minor bugs.


  • Fixed bug that not show prices per countries group when added a new variation using the “add variation” button.
  • Fixed bug: product variation currency label is wrong.


  • Fixed bug that not allow set prices in variable products.


  • Added: REST service is replaced by GEOIP Database.
  • Added: Improvements in the plugin settings page.
  • Added: Debug mode


  • Added: currency identifier per group of countries.
  • Fixed bug in settings page.


  • Fixed a bug that did not allow to add more than one group of countries.


  • Initial release!