1. Documentation /
  2. Flat Rate Shipping

Flat Rate Shipping

Flat Rate Shipping is a shipping method included in WooCommerce that allows you to 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

↑ Back to top
This shipping method has to be added to a Shipping zone. If you haven’t configured your Shipping zones yet, please check our Setting up Shipping Zones guide before proceeding.
  • Go to WooCommerce > Settings > Shipping > Shipping zones.
  • Click the Edit button on the shipping zone where you want to offer this method.
  • Inside the shipping zone, click the Add shipping method button.
  • Then, select the shipping method and click the Continue button.
  • Enter a Name that displays to customers in the cart and checkout pages.
  • Select the Tax Status to determine whether tax is applied to the Cost.
  • Enter the Cost for this option, to be applied to the entire cart.
    • You can add additional costs per item to this field. See Advanced Costs below.
    • You can keep the cost at $0.00 to disable Flat Rate, which can be useful if you configured Shipping Classes (see below).
  • Click the Create button to finish.

Shipping Classes

↑ Back to top

If you configure Shipping classes, you will see additional fields:

You will find one Shipping class cost for products belonging to each of the shipping classes you created, and a No shipping class cost for products that don’t belong to any shipping class. These costs are always added on top of the amount from the Cost field (which can optionally be $0.00).

You will also find the Calculation Type selector, where you can determine how the shipping class costs will be applied:

  • Per Class: Charge shipping for each shipping class individually.
  • Per Order: Charge shipping for the most expensive shipping class.

Advanced Costs

↑ Back to top

The Cost field allows you to charge a flat rate per item, a percentage based cost or a minimum fee. These are the 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.


↑ Back to top
  • 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.

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

↑ Back to top

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.