How to correctly calculate per-item shipping charges?

7 1 1

We charge shipping on a per item basis, with different charges depending on what type of item the customer buys and where it's being shipped.


To accomplish this, I have created one shipping profile per item type, which contains each country we ship to and the price we charge to ship that item type to that country.  When I upload products using the API, I add each product to the correct shipping profile.


If a customer adds two different item types to a cart it adds the shipping together correctly (e.g. a book costs £5.50 to ship to the UK, and a CD single costs £1.95, so a cart containing 1 x book and 1 x CD single will get a shipping charge of £7.45 [£5.50 + £1.95] which is what I would expect)  If, however, a customer adds two of the same type of item it only charges for one item (I would expect the shipping charge to be £3.90 for two CD singles [£1.95 + £1.95] but it only adds one charge of £1.95).


How do I get the shipping costs to be added correctly?  I imagine there is a setting that I have not set correctly - I'd be most grateful if somebody would point me in the right direction

Accepted Solution (1)

7 1 1

This is an accepted solution.

We actually ended up using the Bespoke Shipping app - it has a scripting tool that allowed us to offer the exact shipping charges we wanted to.

View solution in original post

Replies 8 (8)

Shopify Staff (Retired)
849 77 109

Hello @JediLofty!


I understand what you did there with the shipping profiles to set specific rates based on the actual product, however this method does not take into account the product quantity.


At the moment, there is not native way to assign shipping rates based on the amount of products ordered, but a common workaround to this is setting shipping rates by weight. This would involve first assigning a weight to each product on store. To make the setup of the rates easier, I recommend setting the same weight to every product on your store, i.e. 2kg.


Product weights can be set the following way:


  • Go to Products in your Shopify admin.
  • Select all using the selector checkbox on the top right:



  • Click Edit products on the top, which will then open them in the Bulk editor.
  • Make sure to add the Weight field, then select the whole column to add the weight to all products simultaneously:



  • Save changes when finished.

After this is setup, the next step is to create your new shipping rates.

For this to work, your rates will be setup in such a way that every time 2kg is added on (weight of every unit), the price goes up i.e. 2kg = $44kg = $8, 6kg = $12 etc.
In the settings, it will look like this:




Make sure that when you are creating the rates, you have the condition set to based on item weight:




Alternatively, you could look into using a third party app that would allow you to set the shipping rates based on product quantity. Please note that for the apps to work, you need to have Carrier Calculated Shipping enabled on your account (info on this here). Below I have some examples of apps that would work for you:


On a different note, you mentioned that you're selling books so I wanted to ask you a little bit more about this - are you running a bookstore, or is the literature specified to the kind of products you're selling i.e. if you're selling gardening supplies and you include a handbook?


If you are running a bookstore, I thought it might be helpful for you to take a look at this Shopify Blog article on some of the tips and advice on How to Sell Books Online offered by other experienced merchants in this same business. There are some great insights to be found here! 

Lana | Social Care @ Shopify
-Was my reply helpful? Click Like to let me know! 
 - Was your question answered? Mark it as an Accepted Solution
 - To learn more visit the Shopify Help Center or the Shopify Blog

4 0 5

I realize this thread is old but I wanted to try asking a question here rather than creating an entirely new thread.


I've been experiencing the same issue with my shipping charges. My situation is a bit different, however. I use Printify and Printful to fulfill orders, each of these production partners charge me for the cost of the item as well as for shipping per each item. Their each a bit different as far as shipping rates, but still work pretty similarly.


For instance, Printify uses different print providers and the shipping rates vary based on which print provider a specific item is manufactured and fulfilled by. Each provider does calculate rates based on which category a particular product is in. Printful has their own fulfillment centers and has only one set of rates per category.


Printful charges the full shipping rate when a product is ordered, then if a second product from the same category is ordered, the second is charged at a reduced rate. If customer orders two shirts, they will be charged full shipping rate for one item ($3.99) and a reduced rate for each additional item ($2.00). Printify uses some providers that calculate rates in this manner, but many charge the full shipping rate for each item ordered, and many of these rates are quite expensive.


With that being said, I would definitely lose money if I only charged shipping for one item as I will be charged shipping for each item purchased. I have tried finding a way around this. I'm just starting my store and don't have the capital to spend on an app, or to pay $20 a month extra to access the live rates through Shopify.


I experimented with the conditions on my shipping profile. I planned on making multiple shipping profiles for items in each category, but I haven't found a way to ensure the customer will be charged the correct amount for shipping.


I tried setting the condition based on price. Example, if they purchase one shirt it is $22.00 with $3.99 shipping. I tried adding a rate with the condition to charge $5.99 if the price was $44.00. This meant there were two different rates in my "shirts" profile. Then, I tested this by visiting my store in an incognito tab and adding two shirts to my cart. The price was $44.00, but when I viewed shipping charges in the cart, ir displayed both rates, the $3.99 and the $5.99 rate, and the customer is able to select either one.


So, obviously this condition will not work because the customer will definitely choose the cheaper rate if given the choice. Besides, this condition wouldn't account for a situation where more than 2 shirts would be purchased, they would still only be charged for $5.99 shipping no matter how many shirts they buy. I suppose I could have added different rates with different minimums, but apparently the customers can choose between these rates at checkout, so that kind of defeats the purpose.


My main question is, if I use the method explained in your reply to the original post, by setting the condition based on weight, will the customer still be able to choose between those rates at checkout? 


This whole situation is quite complicated and not what I was expecting. It seems like such a simple feature that should be available. At this time, the only way I've come up with is to have different shipping profiles for both Printify and Printful. For Printful, I will set rates based and category and increase the prices of the items to help reabsorb the lost profit from the additional shipping costs not being charged to the customer. For Printify, I've made shipping free for all items, but added the shipping cost for each item in each category into my listing price. As mentioned earlier, the shipping costs on Printify can be quite expensive, so this has caused my prices to soar above the ideal range. Is there any other advice you can offer? I may be able to pay for a service at one point to help me sort all of this out, but at this time, I'm unable to do this. 

1 0 2

I have a similar situation to yours. I have set up the weight based shipping to do the "per unit" charge like the original post this is referring to. And it does appear to calculate items correctly. But in order to set this up I had to edit the weight of each item. Then at checkout, it shows the shipping cost and says, "4 Items", but then after that it displays the weight in parentheses. so it will say (4 lbs.) too. Because I sell art prints, it looks bad if someone adds another item to their cart and then it increases the weight by another pound, for example. I edited weights to even numbers to make it easy to set up the classes. I would like to know how to remove the weight that is in parentheses, so it just displays the shipping class name that I have assigned. 

Did you get this figured out yet? When setting up the classes you need to make sure that all weights are covered. So 1 item would be 1 lb.  for example. So that shipping class would be 0-1 lb. Then for 2 items the shipping class would be 1.01 - 2 lbs. (And you would have to edit your product weights to each be 1 lb.)

Shopify Partner
675 34 95

Hi @JediLofty,


If you are looking for quantity-based packing then, unfortunately, Shopify only has weight-based packing. The only workaround to get accurate shipping rates based on the no. of items your customer adds, is via app/s. 

As @Lana mentioned you can do this easily using Multi Carrier Shipping Label app. This app allows you to do quantity-based packing along with weight, stack, and box packing. For more details, you can contact our support team. We will be happy to help you!

Customer Success @ PluginHive
Shipping Automation | FedEx shipping | Multi-carrier shipping | Shipment Tracking | Australia Post shipping
8 0 10

I cannot believe that despite all of the correspondences here, Shopify still does not include '' per-item shipping profile'' in the system. I have about 1000+ products and the weight all different.   There is no bulk editing either so when there is a change on shipping cost, I have to go one by one everything.. This is ridiculous. 

7 1 1

This is an accepted solution.

We actually ended up using the Bespoke Shipping app - it has a scripting tool that allowed us to offer the exact shipping charges we wanted to.

1 0 4

I figured out a workaround for this but it takes some time to setup and will only work if you don't already have product weight set on your products in Shopify. You can change the weight on each product to 1lb and then create a shipping table with multiple rates that scales up pricing based on each pound.


For example, you could create a rate that charges $25 with a condition of min/max weight of 1lb, then $50 for a rate with a condition of min/max 2lb, $75 for min/max 3lb, and so on.


It's a weird way to do it but it worked for us since we process and ship our orders through our ERP which has the actual product weights.


It blows my mind that a company as large as Shopify who is positioning themselves to be the leader in the ecommerce CMS market would not have a way to charge shipping by quantity by now. FAIL

1 0 0

What we ended up doing is to offer free shipping for all items, then to include the shipping price in the cost of the item. Not ideal because it raises the cost of the item so reduces add to cart, but it's great to advertise free shipping and increases conversions once the item is in the cart, so it balances out and works for us.