A B2B-native loyalty system built for wholesale buyers. Award points for purchases, account actions, and spend milestones. Sub-accounts can earn points that benefit the parent company. Customers redeem them as store credit at checkout โ on all page types including WooCommerce Blocks, FunnelKit, and CartFlows.
Configurable points per $1 spent. Different earning rates per role โ Gold tier earns 2x, Silver earns 1.5x, standard earns 1x. Role multipliers are applied automatically.
Award points for account registration, first order, sub-account approval. Welcome bonuses and one-time rewards handled separately from ongoing purchase earning.
Bonus points when customers hit thresholds: 10th order, $10,000 cumulative spend, or 1,000 total points earned. Unlimited milestones, each tracked per user.
When a sub-account places an order, the parent account earns a configurable percentage of those points. Encourages teams to centralise purchasing.
Redemption widget shown on cart, checkout, WooCommerce Blocks, FunnelKit, and CartFlows checkouts. Customers choose how many points to apply. Converts to a cart discount at a configurable rate.
Optional expiry period per point batch. Customers receive reminder emails before expiry. Expired points are deducted via the daily cleanup routine.
Set minimum balance before redemption is available. Set maximum redemption percentage of cart. Block redemption when sale items or B2B discounts are in cart. All configurable independently.
Points widget renders correctly on WooCommerce Cart and Checkout Blocks, not just the classic shortcode checkout. Also supports FunnelKit and CartFlows via universal wp_footer injection.
Go to B2B Commerce Kit โ Settings โ Features โ Points & Rewards and toggle it on.
Go to Settings โ Points & Rewards. Change the label from "Points" to your brand name (e.g. "Trade Credits," "Reward Stars"). The label appears throughout the front-end.
Under Earning, set points per $1 spent (base rate). Optionally set per-role multipliers so Gold customers earn faster than Bronze.
Under Redemption, set how many points equal $1 store credit (e.g. 100 points = $1). Set minimum points balance required before redemption is unlocked.
Under Sub-Accounts, enable "Parent earns from sub-account orders" and set the percentage (e.g. 50% โ the parent earns half what the sub-account earns).
Under Milestones, add rules. Each milestone has a trigger (total spend, order count, or total points earned) and a bonus points amount. Milestones are awarded once per customer.
Under Expiry, enter the number of days before earned points expire (0 = never). Set reminder email timing (e.g. 14 days before expiry).
Points are awarded after an order reaches the configured status (default: "completed"). The earnlable total is calculated from the order subtotal. You can optionally include tax and shipping in the earnable total, or exclude sale items from earning.
These are one-time awards configured in Settings โ Points & Rewards โ Account Bonuses:
Milestone triggers check after every point award event:
Each milestone is awarded once per customer. Awarded milestones are tracked per user so they can't be earned twice.
When a sub-account places an order, their points are calculated normally. If "Parent Earns from Sub" is enabled, the parent account also receives a percentage of those points as a separate transaction. Both transactions appear in the respective account's points history.
A redemption widget appears on cart and checkout pages. It shows the customer's current balance (in points and equivalent currency value), and lets them enter how many points to apply as a discount. The discount updates the cart total in real time.
woocommerce_before_cart and cart collaterals hookswoocommerce_before_checkout_form hookwoocommerce_blocks_enqueue_cart_block_scripts_afterYou can configure these restrictions independently:
The simplest setup. A customer spending $500 earns 500 points = $5 off a future order.
A customer reaches 1,000 lifetime points and is automatically promoted to your Gold wholesale tier.
For one week only, every order earns 2ร points.
$points * 2. Customers see "2ร points week" in the earn banner on the cart page.A company has 8 purchasing agents. Each agent earns their own points, AND the company account earns 50% of every agent's points too.
| Setting | What it does | Default |
|---|---|---|
Points Per $1 Spent | Base earning rate. All customers earn this rate unless a role multiplier overrides it. | 1 |
Redemption Rate | Points required to redeem $1 store credit. | 100 |
Min Points to Redeem | Minimum balance before the redemption widget appears at checkout. | 0 |
Max Redeem Percentage | Maximum percentage of the cart total that can be covered by points redemption. | 100% |
Point Expiry Days | Days after earning before points expire. 0 = never. | 0 |
Sub-Accounts Earn Points | Whether sub-accounts earn points on their own orders. | On |
Parent Earns from Sub | If on, parent account earns a percentage of every sub-account's points. | Off |
Parent Earn Percentage | Percentage of sub-account points the parent receives (e.g. 50). | 100% |
Allow with Coupons | Let points and coupon codes be used on the same order. | On |
Allow with Sale Items | Let points be redeemed when sale items are in the cart. | On |
By default, points are earned on the order subtotal only (excluding tax and shipping). You can enable "Earn on Tax" and "Earn on Shipping" separately in Settings โ Points & Rewards โ Earning. You can also exclude sale-priced items from earning if you don't want to reward discounted purchases.
Points are a separate system from Company Credit. They're redeemed as a cart discount (fee line), not deducted from a credit balance. If a customer uses both Company Credit and points on the same order, the points discount reduces the cart total before the remaining amount is charged to their credit account.
Yes. The redemption widget is injected into Blocks-based checkouts via the woocommerce_blocks_enqueue_cart_block_scripts_after hook. A universal fallback also runs on wp_footer to catch FunnelKit, CartFlows, and other custom checkout implementations. The widget won't show on the order-received (thank-you) page.
Use the woob2b_points_awarded action hook. It fires every time points are added to any user's balance, with parameters for user ID, points amount, reason string, and order ID. Use woob2b_points_to_award (filter) to modify the number of points before they're awarded โ e.g. to apply a time-limited 2ร bonus. See the Hooks reference for full code examples.