1. Documentation /
  2. Flat Rate Shipping

Flat Rate Shipping

This video provides an overview on how to configure basic flat rates and a brief introduction on combining flat rates with shipping classes

Flat Rate Shipping is a shipping method included in WooCommerce that allows you to define a standard shipping rate per item, per shipping class, or per order. On this page you’ll learn how to: 

  • Create and Configure standard flat rates
  • Combine Flat Rates with Shipping Classes
  • Configure advanced Flat Rates

Standard Flat Rates: 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.
  1. Go to WooCommerce > Settings > Shipping > Shipping zones.

2. Click the Edit button on the shipping zone where you want to offer this method.

3. Inside the shipping zone, click the Add shipping method button.

4. Then, select the shipping method and click the Continue button.

5. Enter a Name that displays to customers in the cart and checkout pages.

6. Select the Tax Status to determine whether tax is applied to the Cost.

7. 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).

8. Click the Create button to finish.

Combine Flat Rates with Shipping Classes

↑ Back to top

Flat Rates can combine with Shipping Classes to offer customers more dynamic shipping rates. If Shipping Classes are configured, additional fields for “shipping class costs” will appear in the flat rate configuration form: 

Each shipping class has a cost field associated with it. For products that aren’t assigned to any category, there’s a cost field called “no shipping class cost”. The costs entered into these fields are an additional cost added to the cost field at the top of the Flat Rate shipping configuration form. To charge shipping costs based only on shipping classes, deactivate the cost field at the top of the form by setting it to $0.00.

The Calculation Type in the last dropdown of the form determines the shipping costs when products from multiple shipping classes are in a customer’s cart.  You can calculate them in two different ways: 

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

Here are two examples to show how these two calculations differ from each other: 

Example: Flat Rate calculated per shipping class: 

RatesCosts
Cost Field$0.00
Heavy Shipping Class x1$10.00 
Small Shipping Class x1$1.00 
Total Shipping Costs$11.00 

The customer pays $11.00 for shipping in this example because shipping is calculated per shipping class (Cost Field $0.00 + Heavy Shipping Class $10.00+ Small Shipping Class $1.00 = $11.00)

Example: Flat Rate calculated per order:

RatesCosts
Cost Field$0.00
Heavy Shipping Class x1$10.00 
Small Shipping Class x1$1.00 
Total Shipping Costs$ 10.00 

The customer pays  $10.00 for shipping in this example because shipping is calculated per order and only the heavy shipping class is added to the cart flat rate (Cost Field $0.00 + Heavy Shipping Class (most expensive) $10.00= $10.00)

Advanced Flat Rate Shipping

↑ Back to top

You can configure Flat Rates based on the quantity of items in a cart or a percentage of the total order costs. Additionally, when you use percentage-based shipping fees, you can set minimum and maximum shipping costs to ensure that you never charge too little or too much for shipping.Configuring advanced flat rates requires writing a shipping formula. Here are the components/placeholders available for these formulas: 

  • [qty] — This is the number of products in the cart
  • [fee percent=”numeric value”] – This is a shipping fee calculated as a percentage of an order’s total. To ensure you’re always charge enough shipping you can add a minimum or maximum fee to a percent fee using the following:
    • min_fee=”numeric value”
    • max_fee=”numeric value”

Below are a few examples of how to set up advanced flat rates: 

  • Example: Quantity Based Flat Rate – You want to charge your customers a $10 standard flat rate + $2 for each item in their cart. In the cost field write this formula: 


10 + ( 2 * [qty] )

Quantity of itemsShipping Costs
1$12.00
2$14.00
3$16.00
Example quantity-based flat rates
  • Example: Percentage-Based Flat Rate – You want to charge your customers a $10 flat rate + a 10% shipping fee on their order total. In the cost field write the following formula: 

10 + [fee percent="10"]

Order Total Shipping Costs
$10.00$11.00 
$20.00$12.00
$30.00$13.00
Example percentage-based flat rates
  • Example: Percentage-Based Flat Rate with Min Fee Applied: You want to charge your customers a $10 flat rate + 10% shipping fee on their total order. Additionally, you want to make sure that your customers are never charged less than $4.00 for shipping. In the cost field write this formula: 

10 + [fee percent="10" min_fee=”4”]

Order Total Shipping Costs
$20.00$14.00 
$26.00$14.00 
$42.00$14.20 
$54.00$15.40 
Example percentage-based flat rates with minimum fee applied

Flat Rate Use Case: How to Offer Free Shipping for Some Products and a Flat Rate for Others

↑ Back to top

Setting up a combination of free shipping for some products and a flat rate for others requires the use of Shipping Classes

In this use case, we set up three shipping classes: Free Shipping, Regular Shipping, and Expedited Shipping. We then assigned them to the appropriate products. Now, we’ll use the following settings to offer free shipping for the products in the “free shipping” class and flat rates based on quantity for the products in the “regular” and “expedited” shipping classes (Note: customers will only see the general name of the flat rate that is entered at the top of the settings, not the shipping class names):

  1. Set the base cost (top of the page) to $0.00 or leave it blank.
  2. Add the cost of the Expedited Shipping Class Cost field. For our example, we use 20 * [qty] or $20.00 per product of that class in the cart.
  3. Add the cost of the Regular Shipping Class Cost field. For our example,  we use 10 * [qty] or $10.00 per product of that class in the cart.
  4. Add the cost of the Free Shipping Class to $0.00.
  5. Select Per Class: Charge shipping for each shipping class individually from the Calculation Type dropdown menu at the bottom of the page. 
Settings for configuring free shipping on some products and flat rates on others using shipping classes.

Here is an example of a customer cart and total shipping costs based on the configuration above. Notice that shipping fees are only charged to products in the regular and expedited shipping classes, while the four products from the free shipping class have no shipping fee charged to them:

ProductsQtyShipping Cost
Free Shipping Class products 4$0.00
Regular Shipping Class products3$30.00
Expedited Shipping Class products1$20.00
Total Shipping Costs$50.00

Note: If you want to offer free shipping based on order totals or coupons, head to the core shipping methods guide for configuring Free Shipping.

Questions and Support

↑ Back to top

Do you still have questions and need assistance? 

This documentation is about the free, core WooCommerce plugin for which support is provided in our community forums on WordPress.org. Searching there you’ll often find that your question has been asked and answered before.

If you haven’t created a WordPress.org account to use the forums, here’s how.

  • If you’re looking to extend the core functionality shown here, we recommend reviewing available extensions in the Woo Marketplace.
  • Need ongoing advanced support, or a customization built for WooCommerce? Hire a WooExpert agency.
  • Are you a developer building your own WooCommerce integration or extension? Check our Developer Resources.

If you weren’t able to find the information you need, please use the feedback thumbs below to let us know! 🙏