Creating shipping cost by countries for Drupal Commerce

Shipping to different countries is a very common setup for most e-commece website. In this tutorial, we'll show you how to add shipping cost for certain countries using Commerce Kickstart distribution (though this can apply to the standard Drupal Commerce module, using shipping flat rate and addressfield module). To keep it short and simple, we will create 2 different standard shipping - one for UK and another one for rest of the world.

Let's begin:

1. Go to Menu --> Store Settings --> Shipping (admin path: /admin/commerce/config/shipping)

2. Click on 'add a flat rate service'. Fill out the fields like you see in the the screenshot below

shipping 1

3. Set you own base rate and currency

4. Drupal commerce already has a standard shipping flat rate so we will use that for UK. If you don't have this, repeat 1 to create another standard shipping but keep the Display title the same, ie, 'Standard shipping 3 - 5 days. This is to ensure that when the shipping rate is shown on the cart page, the description is the same to keep it seamless. Only the price should change based on which country is selected.

5. Once you have added the flat rates, you should have something like the screenshot below.

6. Click on 'edit component' for standard rate.

7. Under 'Conditions', click on 'Add OR' and then 'continue' button in the next page.

8. Under 'Conditions', click on 'Add condition'.

9. Select, 'order address component comparsion' in the dropdown list.

10. Under 'Address', select 'shipping information - address' in the dropdown list.

11. Under 'Address component', select 'country'

12. Leave 'operator' as 'equals'.

13. under 'value' textarea, add GB (for United Kingdom) and save the page. It uses ISO country code. You can get a list here:

14. Finally, drag the anchor for 'Order address component comparison' below the 'Or' and indented and save the page. See screenshot below:

Shipping 3


14. For 'Standard rate (rest of the world), repeat no #6 to #13. But the only changes here is to tick the box for 'negate'. This means for any shipping that is not GB, apply this rate.

That is the standard shipping rate done. If you want to add more different  rates based on countries, just repeat adding a new flat rate and then add another country code. You can also target a set of countries, for example all EU countries - just add a list of country code one after the other, like:

EU Countries


and so forth...

This tutorial uses the following modules for Drupal Commerce:

Umair (not verified), 04 Apr 2021 - 3:11pm
I want to create a site that will calculate freight cost between two ports or two airports. Cost will be added at the backend and total cost will be calculated depending on the distance. Obviously weight will be considered as well, but there will be no product or commerce on this site. Should I use drupal? What modules I should use? I want to depend as less as possible on external services.
The content of this field is kept private and will not be shown publicly.
Your email address will be kept private and will not be shown publicly.
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.