Skip to content

Customer groups and price rules

How B2B Suite decides what a customer pays — rule scopes, quantity bands, precedence and the interaction with sale prices and coupons.

Every price on your storefront is decided by one resolver. Nothing else in the plugin is allowed to change a price, which is why the shop, the cart and the block checkout can never disagree.

Rule anatomy

A price rule has:

PartOptions
GroupThe customer group the rule applies to
ScopeWhole shop, or a product (free) · category, tag, or a single customer (Pro)
TypePercentage off, amount off, or fixed price
Quantity bandOptional minimum and maximum quantity
PriorityBreaks ties inside a level

Precedence

Resolution walks seven levels and stops at the first match:

  1. An accepted quote (Pro)
  2. A customer-specific rule (Pro)
  3. A company rule (Pro)
  4. A group rule
  5. A category or tag rule (Pro)
  6. The WooCommerce sale price
  7. The regular price

Within a level, the higher priority wins. If priority ties, the larger discount wins. Rules are read fresh on every resolution, so a product added to a category tomorrow is covered by today’s category rule.

Quantity bands

Give a rule a minimum and maximum quantity to create tiers:

  • 1–9 → 10% off
  • 10–49 → 18% off
  • 50+ → 25% off

Bands are evaluated against the quantity being priced, and the cart re-resolves as the quantity changes. Pro adds a tier table on the product page so buyers can see the ladder.

Sale prices

If a B2B rule matches, it wins — even when the WooCommerce sale price happens to be lower. This is deliberate: precedence is absolute, so a temporary retail sale never silently overrides a contract price. The Price Explainer records the sale price it beat, which is the answer to “why isn’t my sale price showing for wholesale customers?”.

Coupons

Coupons are applied by WooCommerce after B2B resolution and never re-enter the pricing walk. A 10% coupon takes 10% of the resolved trade subtotal — discounts cannot compound by accident. You can also restrict coupons per group.

Performance

Rules live in the plugin’s own indexed tables, not in postmeta, and are loaded in bulk once per request. A 300-variation product resolves in a handful of queries cold and none at all warm.

  • Quantity rules — minimums, maximums and pack sizes, which are separate from pricing
  • REST API — resolve a price for any customer from outside WordPress

Was this page missing something?

Documentation gaps are treated as bugs here. Tell us →