Custom Table Rate Configuration


Table Rates enables you to define your rates according to any combination of destination, product, price, quantity, weight and customer group rules.

Screen Shot 2016-01-19 at 12.57.26 PM

You can also create ‘shipping groups’ to categorize your products and define shipping rates. For example, you could assign one rate for books, another for CDs and yet another for DVDs.


The First thing you will need to do is create a Custom Rule Based Carrier.

  • Carriers —> Add New + —> Carrier Type: Custom Carrier—>Carrier:Table Rate —> Name Your Carrier (Shipping)


The CSV File

While you could manually add each table rate, ShipperHQ also provides the capability of uploading a CSV file with your table rates entries.

The CSV file must contain certain fields to be valid for import.To obtain a sample CSV, click export and you should receive a blank one. An example CSV would look something like this:

Screen Shot 2016-01-19 at 12.59.29 PM

Below you will find a description of the fields.  Note: All of these headers must be present:

Field Description
Include Zones Comma separated list of zone names to match on, leave as ‘*’ for all zones
Exclude Zones Comma separated list of zone names that should not match, if empty/* no zones are excluded
Shipping Group Comma separated list of shipping groups, use ‘UNDEFINED’ to specify rates where products do not have a shipping group assigned, ‘*’ to cover all items
SKU Advanced Feature.SKU to match on, only used with SKU Based totalling. When used Shipping Groups are ignored.
Customer Group Used to filter dependent on customer group at checkout (e.g. General/Retailer). If you do not need to change shipping prices based on customer group leave this field blank
Weight > Minimum weight that must be greater than of combined products in cart with the package id above
Weight <= Maximum weight of combined products in cart with package id above
Price > Minimum price that must be greater than of combined products in cart with the package id above
Price <= Maximum total price of products of package id identified above
Qty > Minimum quantity of items that must be greater than of combined products in cart with package id above.
Qty <= Maximum number of combined products in cart assigned to shipping group above. For example you can say I’d like upto 10 BIKES to have price X, over 10 to have price Y
Shipping Price Price of shipping
Algorithm Rate Algorithm. Unless you are doing something complex you can often leave this column empty
Delivery Type This is the label that will tell the end user the shipping
option, e.g. 1st Class, Courier, UPS Ground.When multiple shipping groups are in the cart then the prices are combined based on the Delivery Type field. If unable to match delivery types across shipping groups then the rate is discarded

Importing CSV File

To import a CSV file: in the “Table Rates” section of your custom carrier, simply click the CSV button, then choose “Import”.

Screen Shot 2016-01-19 at 12.57.57 PM

Price Range Filtering

Price’s range are defined with the following parameters:

Price > Price <=

This verbally translates to “price is greater than X and price is less than or equal to Y
Lets use this commonly misconfigured 3 rows as an example:

Price > Price <= Qty > Qty <= Shipping Price
0.01 29.99 * * 6.95
30 49.99 * * 7.95
50 59.99 * * 0

If I were to checkout with a subtotal of $30.00 then this would actually not be covered by the three rows above and fall into a gap that would not return a rate. Notice the value of 30 is greater than and not greater than or equal to. This means this price range would start at 30.01 for that row.
To fix this, this just change the 29.99 and any ##.99 rates in the “Price <=” column to a penny higher to show something like the following:

Price > Price <= Qty > Qty <= Shipping Price
0.01 30 * * 6.95
30 50 * * 7.95
50 60 * * 0

In the example above, if my item cost $30; then my shipping cost would be $7.95.

Totalling Algorithm

The totalling algorithm defines how the rates are totalled when there are multiple shipping groups in the cart.

Totalling Algorithm


For every shipping group present (and the rates covering all products) the rates are totalled together.


The highest price shipping group shipping rate is taken to be the rate.

Per Item

For every SKU in the cart (and every qty of that sku) the rates are totalled together. In addition when searching for rates each item is searched for separately, i.e. if I have 2*5lb items it will search for weight =5lb rules, not weight ==10lb rules.

SKU Based

Each SKU requires a row in the table. For every SKU the price is taking and totalled together. If there are multiples of one SKU the price is multiplied e.g. 2*SKU BIKE where shipping price = $5 would be $10 total.


Example Rates
Weight From Weight To Shipping Group Price
0 5 * 10
5 10 * 15
10 35 * 25
10 50 BEDS 50
Example Carts
Items Cumulative Shipping Price Highest Shipping Price Per Item Shipping Price Notes
1*5lb $10 $10 $10
2*5lb $15 $10 $20
1*BIKES 5lb $10 $10 $10 Even tho no group specified the ALL group provides rates
1*BEDS 5lb $10 $10 $10 Gets rates as ALL is a catch all
1*BEDS 35lb $50 $50 $50
2*BEDS 35lb No Rates No Rates $100 No rates as total for group is 70lb
1*BEDS 35lb&1*5lb No Rates No Rates $55 No rates as can’t find for ALL


Advanced Options

This section details the algorithm column. Unless you have a specific need then suggest you leave this column empty.

Use ‘&’ if you need multiple switches e.g. perUnitWeight=5@8&perUnitQty=3

Algorithm Switch Description Syntax
perUnitWeight Weight rounded to the next highest full measurement. Adds the specified amount for every unit to the next rounded to the next whole number of weight above the “weight >” field perUnitWeight=<weight threshold> @ <price>to add $1.50 per 1lb use:perUnitWeight=1@1.5 surcharge for 0.5lb would be 1 * 1.5 = 1.5
perUnitQty Unit based price increase. Used to specify an additional per item rate perUnitQty=<price> Increase per unit added E.g. to add $5 for every item added use:perUnitQty=5
perUnitDistance Adds to shipping price based on distance from the destination.  Note: You must have Google API Key set for this to work perUnitDistance=<unit of distance> @ <price>to add $5 per 100 miles use:perUnitDistance=100@5 surcharge for 300 miles would be 3 * 5 = $15 shipping price
perUnitPrice Price rounded to the next highest full measurement. Adds the specified amount for every unit to the next rounded to the next whole number of cart/group/item price above the “price >” field perUnitPrice=<price threshold> @ <shipping price>to add $1.50 per $10 use:perUnitPrice=10@1.5 surcharge for $20 cart price would be 2 * 1.5 = 3
addPercentage Calculate shipping as a Percentage surcharge of the group subtotal addPercentage=10 will add 10% of the group subtotal to the shipping price e.g. 10% of 20 will add $2 to shipping price set
perBox Box based price increase. Used to specify additional per box rate perBox=<price> Increate per box added E.g. to add $5 for each box use perBox=5