Issue with discounts

@mattbrailsford

In Umbraco Commerce, multiple discounts can be applied to the same order line.
Example scenario:

  • A product-specific discount (e.g., 50% on one product)

  • A category-wide discount (e.g., 25% on all products)

  • Additional account-level discounts (e.g., 10–30% depending on user group)

Currently, if several discounts apply to the same product, they stack, even when this is not desirable.
This results in a final price that is lower than intended.

I need a way to ensure:

  • A product only receives the highest applicable discount

  • Lower discounts should not apply if a higher discount is already applied to that order line

  • Other products in the cart should still receive their respective discounts

You need to order your discounts in the back office in order of preference. Then on each discount you need to toggle the option to block further discounts. This ensures only the most specific discount applies and no others.

Thanks for the quick answer, Matt!

Here’s my scenario:

Priority 1:
I have five specific products that each have a 50% discount.

Priority 2:
I also have a discount that gives 25% off every product (using a folder that contains all products).

The issue:
If I enable “Block further discounts from being applied” on the 50% discount, then the 25% discount is not applied to other products that only qualify for the 25% discount.
In other words, blocking the additional discounts on the 50% products also prevents the 25% discount from being applied to unrelated products in the cart.

I want the 50% discount to block further discounts only for those specific products, but still allow the 25% discount to apply to the rest of the cart.

What happens if you flip it and don’t use the “block further discounts” and instead on the 15% toggle the “block if previous discounts apply” toggle instead?

Hi Matt

Same scenario here — only one of the discounts will apply.
I think the core issue is that my first rule targets specific order lines, while the second rule targets an entire category.

Would it maybe be an idea for the future to have an “Exclude” rule?

Hmm, yea, possibly.

Feel free to add it as a feature request at umbraco/Umbraco.Commerce.Issues · Discussions · GitHub

Hi Matt.

FYI: I found a solution for this.

I do the calculations AFTER the discounts has been applied. I made a PriceAdjuster instead.

So if i have

50% Discount
25% Discount
10% Discount

My adjuster does this:

Finds order lines with multiple discounts
Calculates each discount’s percentage
Keeps only the highest discount
Adds counter-adjustments to cancel lower ones

So essentially it just cancels out the lower ones.

Clever. Glad you managed to find a workaround

1 Like

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.