Friday, 29 November 2013

Simple Opencart tutorial - shipping rate based on percentage of order

I was looking all over the internet for a free module to allow me set the shipping cost by a percentage if the order total was within a certain range; but to no avail :(
So I decided to do it myself.

Here's what I needed...

So for example:
  • If we set the shipping cost to be 10% of the order total, for an order total of £158.00, the shipping cost will be £15.80.
This is how I did it:

First of all,
  1. You have to download this free module -> Total Based Shipping ( )
  2. Follow the instructions on how to install the module (it's really easy)
  3. When you are done with that, navigate to catalog\model\shipping\standard_cost.php
    • NB: the standard_cost.php file will be a file from the module you just downloaded.
  4. Scroll to where you see, it should be around line 38 - 50
    • if ($cart_subtotal <= $data[0]) {
      if (isset($data[1])) {
      $cost = $data[1];}
  5. Then insert this
    • elseif ($cart_subtotal <= 200.00 ){
      $cost = $cart_subtotal*0.1;
      break; }

Simple! You just needed to add 3 lines of code.

The Module you downloaded in step 1 allows you to set specific shipping cost based on the order total. So we just included that code to calculate shipping cost based on a set percentage (in the above example, it's 10%. To calculate for a different percentage, just change the '0.1' in the code to whatever you want).

This was a quick fix and unfortunately, it's hard-coded. I'll try and improve on it so it can be modified from Opencart's back-end and update this post.

Please feel free to make suggestions or comments below. Thanks


    1. Jimmy, provided me with services to ship all my belongings from New York to his store. He offered to even deliver my belongings 12 large boxes to my apartment in the Sunset district.

    2. Any chance you could tell me how to change this Module so that if I put my rates in the GST tab, I can actually have it say something other than GST? like Shipping??

      1. Hey Taleen, sorry for the late reply. Apologies, but I can't help with that unfortunately :(