How to Charge Extra Fees Based on Product Price and Quantity Limits in WooCommerce

This helps you apply targeted charges only when the product and quantity criteria are met, offering greater control over pricing. It’s ideal for managing fees on high-value or bulk orders with flexible and rule-based conditions.

This fee is calculated product quantity range, making it useful for covering packaging, handling, or other item costs.

How it works

When you create a fee rule with Apply Fee On → Cost on Product, the plugin checks how many products are in the cart and applies fees based on the selected product range.

You can set a minimum and maximum quantity condition to control when the fee applies:

Minimum Quantity: The fee will only apply if the customer buys at least this many units.

Maximum Quantity: The fee will not apply if the customer exceeds this number of units.

👉 Example: If you set the Minimum Quantity = 5, Maximum Quantity = 10 and the Fee = $1

➡️ A customer buying 4 products → No fee will apply.

➡️ A customer buying 6 products → Fee = $1.

➡️ A customer buying 12 products → No fee will apply (because it exceeds the maximum quantity).

Steps to configure the rules

Step 1: Enable the extra fee rules

  1. Go to WooCommerce → Extra Fees Plugin → Add New Fee Rule.
  2. Enter a title/name for your fee (example: Packaging Fee).
  3. Under Apply Fee On, select “Cost on Product” from the dropdown.

Step 2: Set quantity-based extra fee limits

  1. Go to the “Cost on Product” section.
  2. Set the Minimum Quantity (example: 5 → fee applies only if customer buys at least 5 units).
  3. Set the Maximum Quantity (optional → leave blank if no upper limit).

Step 3: Set the fee amount

  1. Enter the Fee Type: choose Fixed or Percentage.
  2. Enter the Fee Amount (example: $1 for a specific product range).

Step 4: Save and test

  1. Click Save Rule.
  2. Go to your store and add products to the cart.
  3. Check that the fee is applied once the product quantity meets the set limit.
Get the extra fee

Example 1: Packaging extra fee based on quantity range

Quantity Range Fee Applied
1 to 6 units $0 (No extra fee)
7 to 12 units $5 Package Fee
13 to 18 units $10 Package Fee
19 units and above $21 Package Fee

How it works:

When a customer buys between 7 and 12 units, a $5 package fee is added automatically. If they buy 13 to 18 units, the fee increases to $10. For orders of 19 or more units, the package fee is set at $21. No fee is applied for orders of 1 to 6 units.

Example 2: Apply a 2% processing extra fee on special products (If less than 5 units)

Condition Fee Applied
Purchasing fewer than 5 special product units 2% Processing Fee
Purchasing 5 or more special product units No extra fee

How it works:

This rule applies only to selected “special products.” If a customer purchases fewer than 5 units of these products, a 2% processing fee is added to the order total. If they buy 5 units or more, no extra fee is applied.

Get the extra fee

FAQs

1. What happens if I set both product price and quantity conditions?

Both conditions must match for the fee to apply. If either the product price or quantity range doesn't meet the rule, the fee won’t trigger.


2. Can I create multiple rules for different price ranges?

Yes, you can set up multiple rules for different product price brackets. Just make sure there’s no overlap to avoid conflicts.


3. What if the fee is not showing on the checkout page?

Check if the rule is enabled, published, and all conditions (product, price, quantity) match the cart. Also, verify that no other rule is overriding it.


4. Can I use this with variable products?

Yes, you can apply cost-on-product rules to variations. Ensure each variation has its price and the correct product ID or category is selected in the rule.


5. How are fees calculated if the customer adds more than one product?

The rule will only apply to the products that match the defined price and quantity conditions.

Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.