WooCommerce: How to add different shipping rates per country

WooCommerce shipping rates
WooCommerce is great and is the best plugin for most WordPress e-commerce websites. However its shipping options can be quite limited.

On the face of it, WooCommerce offers a good choice of delivery and shipping options - flat rate, free shipping, international flat rate, local delivery and local pickup.

Unfortunately this isn't as good as it looks for two reasons:

  • A lot of WordPress online shops need more granular control over their shipping rates - particularly if they ship to multiple countries or regions with different postage costs.
  • As it comes, WooCommerce only shows customers the shipping cost - or even whether you will ship to their country - on the checkout page. That's a disaster for WooCommerce stores that ship internationally! Customers get incredibly frustrated to add products to their cart and then discover that you either don't ship to their country, or that the shipping cost is too high.

Fortunately, there's an excellent solution to each of these problems:

  • Solution 1 - A lot of people add more flexible international shipping costs by using YITH's Product Shipping plugin
  • Solution 2 - The WooCommerce Shipping Calculator plugin lets customers check whether you ship to their country, and calculate the cost, directly on the product page. This is a super-simple way to avoid the frustration of getting bad news on the checkout. Either use it on its own or with YITH's plugin.

How to set up Flat Rate per State/Country/Region for WooCommerce

  1. Find the 'Flat Rate per State/Country/Region for WooCommerce 'plugin in the WordPress plugin repository. (Plugins → Add New in the WordPress admin for your website). Install and activate it as usual.
  2. Go to WooCommerce → Settings → Shipping in the WordPress admin. You will see that the plugin has added a new link to the right hand side of the list of shipping options: Flat Rate per State/Country/Region.
  3. Ignore all the information about which countries belong to different regions - you probably don't need this. Scroll down to the actual plugin settings and set up the plugin as required. It's pretty self-explanatory and you can hover over the question mark icons for an explanation of each option.

Note: If you use this plugin then it will control ALL your shipping options, replacing WooCommerce's built-in Flat Rate and International Flat Rate options. This means that you need to disable Flat Rate and International Flat Rate and use the 'Flat Rate per State/Country/Region' section to add ALL your postage costs, including your domestic shipping rate and the overseas shipping. If you forget to disable the other shipping options then they will appear as alternate shipping methods in the checkout.

Flat Rate per State/Country/Region for WooCommerce screenshotAn example of how to use the plugin

Although setting up this WooCommerce shipping plugin is fairly self-explanatory, here's a screenshot showing how to set it up to achieve the following scenario:

  • Shipping cost of $6.95 per order for the United States only (this example assumes that the website is based in the US).
  • Shipping cost of $15.00 for Canada.
  • Shipping cost of $22.50 for the rest of the world.

But what about shipping to individual countries within the UK?

TheFlat Rate per State/Country/Region for WooCommerce plugin is ideal for setting separate shipping rates for each country or region. However there are times when you want to break down your shipping zones further. For example you might want to charge different postage for England, Scotland and Wales - which WooCommerce treats as a single country (United Kingdom).

Since writing this post, WooCommerce has introduced shipping zones into its core plugin. This gives extra shipping options without needing any further plugins, so it's worth experimenting with. I've written a separate post about how to charge different shipping rates for each UK country.

Let customers calculate international shipping costs on the product page

Add shipping tab to WooCommerce product page

So far, you've learned how to solve the problem of not being able to add fine-grained shipping costs per country. The second problem was how to let customers check international shipping costs without having to add products to their cart first.

You can easily solve this by installing the WooCommerce Shipping Calculator plugin. This handy plugin adds a domestic or international shipping calculator to your chosen location on the product page. That way, customers can enter their country and see the shipping cost straight away. As a result, they can make an informed decision on whether to add it to their cart.

It's your turn

We've looked at two of the best WooCommerce shipping plugins:

I'd love to hear how you use them to improve how you charge for shipping per country. Please share your experiences in the comments below.


  1. Hi Katie, Thanks for the info - I really hope it helps. I had previously set up shipping rates to vary between the U.S., Europe and Canada for one item I sell. I had used WooCommerce’s built-in Flat Rate and International Flat Rate options and yet my orders from Europe have not charged the shipping fee (it ships free in the US.) Hopefully this plug in and your great tutorial on installing and setting will work. Having to eat those shipping costs myself is really eating into my profit in a big way.

    • Hi, Judith. I'm glad this is useful to you. Please let us know how it goes with the shipping costs to Europe, which hopefully are now included in the order so you'll no longer need to shoulder them. Thanks!

    • I have checked the article and I use the word 'Country' to indicate the country and 'Region' to indicate the county - it doesn't refer to 'County' at all because I use 'Region' for this instead. Hope that helps to clarify it.

  2. Hi katie
    Is there any way i can make one country which my site locates free of shipping and others charge shipping rate

    • Yes, you just need to create a shipping zone for your country and charge free shipping to this zone, and create other shipping zones for the other countries with paid shipping.

Please share your thoughts...

Your email address will not be published. Required fields are marked *