Role Based Pricing for WooCommerce – Wholesale & B2B Discounts
Set a custom price per user role for wholesale and B2B customers: lightweight, no bloated membership features, with variable product support.
How to create WooCommerce coupons, set restrictions and usage limits, add free shipping and expiry dates, schedule sale prices, understand tax, prevent abuse and check coupon reports.
To create WooCommerce coupons, switch on coupon codes under WooCommerce > Settings > General, open Marketing > Coupons, select Add new coupon, choose a discount type, enter the amount and publish. Restrictions and limits then decide who can use the code, on what and how often, and they are your main protection against abuse. Menu paths were checked against the WooCommerce documentation as of October 2026; labels can differ in older versions.
In short
A coupon is a code the customer types at the cart or checkout, so setup is short and the thinking goes into the conditions.
| Discount type | What it does |
|---|---|
| Percentage discount | Applies a percentage to eligible products |
| Fixed cart discount | Applies one total amount to the whole cart |
| Fixed product discount | Applies the amount to each eligible item |
The Usage restrictions tab, as the WooCommerce documentation describes it:
| Setting | What it does |
|---|---|
| Minimum spend, Maximum spend | The cart subtotal range allowed. The minimum includes tax when prices are displayed with tax |
| Individual use only | The coupon cannot be used with other coupons |
| Exclude sale items | Keeps the discount off sale-priced items. A fixed cart discount can still apply when the cart has eligible items that are not on sale |
| Products, categories, brands | Limits the coupon to the listed ones, or requires them in the cart |
| Exclude products, categories, brands | Blocks the coupon for the listed ones |
| Allowed emails | Restricts use to listed addresses, checked against the billing email. A wildcard can match a whole domain, such as *@gmail.com |
The Usage limits tab has three settings:
Tick Allow Free Shipping on the coupon, then check the Free shipping method in the customer's shipping zone. Its Free shipping requires setting offers "A valid free shipping coupon", "A minimum order amount", "A minimum order amount OR a coupon" and "A minimum order amount AND a coupon". If a minimum applies, the checkbox "Apply minimum order rule before coupon discount" decides when it is tested. Unticked, the minimum is tested after the coupon discount. Zones and methods are in our WooCommerce shipping setup guide.
The optional Expiry date makes the coupon stop working on the date you set, and a short expiry limits how long a shared code can circulate. The documentation says core does not apply codes automatically: customers enter them at the cart or checkout, and you share them yourself. Store managers can add a coupon to an editable order with Apply coupon.
Link-based and auto-applied coupons need an extension. The Smart Coupons documentation describes coupon links that apply a code when clicked and can add products to the cart. Test that your restrictions and limits still hold when a code arrives through a link.
A sale price is public: everyone sees it and no code is needed. In the General tab of the Product data box, enter the Regular price and Sale price, then select Schedule to reveal the "Sale price dates" From and To fields. The documentation says the To date expires at 11:59 pm and gives no start time, so test a schedule on a draft product.
For variable products, each variation on the Variations tab has its own Regular Price and Sale Price, and a bulk action, "Set scheduled sale dates", sets dates for all variations at once.
If you do not want a coupon to stack on a sale, tick Exclude sale items, or the margin is cut twice. Keep the regular price honest: a crossed-out price should be one you really charged, and rules on advertising price reductions differ by country, so check with your authority.
WooCommerce applies coupons to product prices before it calculates tax, and splits the discount across the products to limit rounding errors, which you notice more with fixed cart discounts. Tax is therefore worked out on the discounted prices, and shipping is not discounted unless the coupon gives free shipping. Under WooCommerce > Settings > Tax you choose whether you enter prices with tax and whether shoppers see them including or excluding tax. For a Saudi store selling to consumers that normally means VAT-inclusive display, as our VAT guide explains. Follow WooCommerce tax and VAT setup, place a test order with each coupon and ask your accountant how discounts should appear on invoices.
Quantity tiers and prices by customer role are not among the coupon or sale price fields in the documentation, so they need an extension. WooCommerce's Dynamic Pricing extension, sold on woocommerce.com, documents quantity tiers, buy X get Y offers and rules that target user roles. For prices by role alone, Role Based Pricing for WooCommerce on DevMarket lets you enter a price per role on each product and variation. Its listing says customers with a configured role see that price in the shop, cart and checkout, and guests see the normal price. For the wider wholesale setup, see WooCommerce B2B and wholesale setup, and test any pricing plugin together with your coupons.
A code in a newsletter can end up on a discount site. Combine these settings:
None of these is airtight. An email restriction is checked against the billing email, so someone with several addresses can still redeem a welcome code more than once. Keep watching.
Open Analytics and choose Coupons. The report lists Coupon Code, Orders and Amount Discounted for the selected date range, and you can filter to one coupon, compare several or search by code. The Orders figure links to the Orders report filtered to that coupon, which also has Coupon Codes and Order Status filters. Review it after each campaign.
Example, with made-up numbers: a product sells for SAR 100 before VAT and costs you SAR 70 to buy and pack, leaving SAR 30. A fixed cart coupon of SAR 20 leaves SAR 10. If the code also removes a SAR 15 shipping charge that normally covers your courier cost, the order loses SAR 5. Judge discounts against the price before VAT, and ask your accountant.
State the conditions next to the offer: the amount, any minimum spend, exclusions, one use per customer and the end date. When a code fails, WooCommerce shows a message, and its documentation lists the usual causes: expiry date, spend range, product restrictions, billing email and usage limits. Make your wording match your settings. In Saudi Arabia the price details shown before an order are expected to include taxes and other costs: see our shipping and cash on delivery guide.
Before you announce a code, test it as a guest in a private window: a valid order, an order below the minimum, a sale item, an excluded product, a second use, and a different billing email if you restricted by email. Check the totals, tax and shipping each time.
Unless a coupon has Individual use only ticked, it can be used with other coupons, subject to their own settings. Test the combinations before you announce a generous code.
Check the expiry date, spend range, product and category restrictions, allowed emails and usage limits, the usual causes in the WooCommerce documentation.
Not unless it is a free shipping coupon. Other coupons reduce product prices only.
Yes, unless Exclude sale items is ticked. Decide per coupon whether sale and coupon discounts may stack.
Write a coupon's conditions down, set the restrictions and limits, then test it as a guest. Read WooCommerce tax and VAT setup before you rely on discounted totals, and how to reduce cart abandonment in WooCommerce for coupons in recovery emails. You can also browse WooCommerce plugins on DevMarket.
The software this guide talks about, ready to look at.
Set a custom price per user role for wholesale and B2B customers: lightweight, no bloated membership features, with variable product support.
Fix the WordPress critical error and white screen of death calmly: back up, read the logs, find the cause by elimination, then handle database, 500, memory, maintenance mode, 404 and login errors.
9 min read
Choose a WordPress theme by testing, not by demo. Compare block and classic themes, sources, speed, accessibility, RTL support, WooCommerce, builder lock-in and licence terms on a staging copy.
9 min read
Use this WordPress maintenance checklist to plan weekly, monthly and yearly tasks: updates, backups, users, plugins, security, speed, PHP, domain and SSL, plus Site Health and WooCommerce checks.
9 min read
Every item on DevMarket has a human-reviewed release, an instant licence key and clear update and support terms.