Flat Rate Shipping

Flat Rate Shipping is a shipping method that can be added to Shipping Zones. Please see our Shipping Zones guide and create zones to begin using.

Flat Rate Shipping is a free shipping method in WooCommerce that allows you define a standard rate per item, per shipping class or per order.

Flat Rate Shipping works with Product Shipping Classes, adding more power and flexibility.

Setup and Configuration

To use this method it must be added to a Shipping Zone.

1/ Go toWooCommerce > Settings > Shipping.

2/ Hover over the Shipping Zone location that Flat Rate should be added to and select Edit. This will open up a new page where the Flat Rate settings will be set.


3/ In the Shipping Methods box, select Add Shipping Method.


4/ Select Flat Rate from the dropdown.


6/ Select Add shipping method.

7/ Select Edit for each row that you wish to define. Each Shipping Zone can have different (and multiple) Flat Rates if you wish. For example:


This takes you to a different screen.


6/ Enter a Title that displays to customers in checkout.

7/Select Tax Status – Define whether or not tax is applied to the shipping amount.

8/ Enter Cost – This is applied to the entire cart. Add additional costs per item to this field. See Advanced Costs below. This can be left blank to disable Flat Rate except where costs are added for Shipping Classes. Note that what you enter here may factor into the overall cost in the Shipping Classes section (see below), unless you leave it blank.

9/ Save changes.

Advanced Costs

The Cost field allows you to charge a flat rate per item, a percentage based cost or a minimum fee.

Available placeholders:

  • [qty] – Number of products in the cart
  • [fee] – An additional fee. This fee has two optional arguments.
    • percent – A percentage based on total order cost.
    • min_fee – A minimum amount. Useful when using percentages.
    • max_fee – A maximum amount. Useful when using percentages.


  • 10 + ( 2 * [qty] ) – A base shipping cost of $10 plus $2 for each item in the cart.
  • 20 + [fee percent="10" min_fee="4"] – A base shipping cost of $20 plus 10% of the order total, which is at least $4.

Shipping Classes

If you have shipping classes, the interface adds a few more fields:

There is one cost field for each shipping class.

  • No Shipping Class Cost – Useful if you use the Per Class option below. Otherwise, use the Cost field.
  • Calculation Type – Two options:
    • Per Order – Picks the most expensive option based on shipping costs in the cart.
    • Per Class – Charges shipping for each shipping class.

How to set up Free Shipping for some products and Flat Rate for the rest

If you would like to offer Free Shipping on some products but charge a Flat Rate for others, the best way to set this up is using Shipping Classes.

In this use case, we have set up three shipping classes: Free Shipping, Regular Shipping, and Expedited Shipping.

Once we have all the products added to their respective shipping classes, we can use the following settings to allow for the products in the Free Shipping class to not charge for shipping, while all the other products do.


By setting the Free Shipping class cost to use 0 * [qty], no matter how many products from that class are added to the cart, the shipping cost will not increase.

However, products in the Expedited Shipping class will cost $20 per product from that class (because we’re using 20 * [qty]) while Regular Shipping class products and products that have no shipping class will cost $10 per product to ship (as we’re using 10 * [qty] for each of those options).

This means that if you have one product from each of our three shipping classes, the total Flat Rate cost will be $30 ($20 for one Expedited Shipping product, $10 for one Regular Shipping product, and $0 for one Free Shipping product).

Note: For this to work as described above, it is important to set the Calculation Type to “Per Class: Charge shipping for each shipping class individually” and that the Cost field is left blank.

Was this article helpful?
Dislike 0
Views: 20