I need to configure country wise shipping rates by weight. So each country has different shipping rates for different weights. So I have divided countries in different zones. The countries in each zone have same shipping rates. So what I have done is created several flat rates services like following.

Zone 1 - 0.5KG, Zone 1 - 1.0KG, Zone 1 - 1.5KG, Zone 1 - 1.5KG, Zone 1 - 2.0KG and so on ...
Similarly Set for each Zone
Zone 2 - 0.5KG, Zone 2 - 1.0KG, Zone 2 - 1.5KG, Zone 2 - 1.5KG, Zone 2 - 2.0KG

Defined respective rates for each flat rate service. And configured like following.

Order total weight comparison
Parameter: Order: [commerce_order], Operator: <=, Value: 0.5


Order address component comparison
Parameter: Order: [commerce_order], Address: Address, Address component: Country, Operator: is one of, Value: AL ...

This works for me well, but I have to configure 91 flat rate service and define the conditions manually again and again.

Though at the end I am getting my desired result, I feel there must be a better way to achieve this task, but I am not aware of that.

Please guide me to do it properly.

  • Did you find a better solution @Fahad? Same problem here... Commented Nov 1, 2015 at 22:12

2 Answers 2


Have you looked at these two modules?

  1. Commerce Shipping Postal Code Weight
  2. Commerce Shipping Weight Tariff
  • I did try those but unable to configure. Can you please advise how to use these modules. Commented Nov 6, 2015 at 7:25

Shamelessly taken from here drupal.org/node/2352837

Be sure that the "Shipping", "Shipping UI", and "Commerce Shipping Postal Code Weight" modules are enabled.

Be sure to configure all the countries you support for shipping in the address field of the customer's shipping profile under Store > Customer profiles > Profile types > "manage fields" next to "Shipping information" (admin/commerce/customer-profiles/types/shipping/fields/commerce_customer_address). You must select at least one country under the "Available countries" section of that page.

Visit the shipping method edit screen under Store > Configuration > Shipping > Shipping Methods > "edit" next to "Postcode weight shipping method" (admin/commerce/config/shipping/methods/postal-code-weight-shipping-method/edit).

You will see one fieldset with shipping options for each country you selected.

For each country, specify all the weight ranges you support in the "weights" field and indicate the units of measurement you're using.

For each country, specify the groupings of postal codes for which you need to specify rates using commas to separate postal codes in the same category and semicolons to separate categories. For example, let's say I want the following: 14586 and 14623 (West Henrietta, NY and Rochester, NY, respectively) have all of the same rates 06468 (Monroe, CT) has a different set of rates

Then I'd enter "14586,14623;06468" into the "Postal Codes" box.

Click the "Save" button at the bottom of the page to rebuild all of the postal tables based on the new weights and postal codes.

For each country, click the "Edit" link below each rate table to edit the table of values.

Each range of weights is specified as "Min weight" exclusive to "Max weight" inclusive, so 0-5 would mean "greater than 0 and 5 or less" and 5-10 would mean "greater than 5 and 10 or less".

After you've specified the rates, the customer will see them appear during the Shipping step of checkout. It's calculated based on the total order weight and the country and postal code that the customer enters for his or her shipping address.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.