HomeDev GuideAPI Reference
Dev GuideAPI ReferenceUser GuideGitHubNuGetDev CommunityDoc feedbackLog In
GitHubNuGetDev CommunityDoc feedback

You can determine which promotions cannot be combined with other promotions. For example, you are running a 20% off automotive supplies sale. Customers should not be able to combine this promotion with the Get cheapest item 50% off promotion on the same item.

## Use order and unit-level exclusions

The Commerce API supports both order-level and unit (item)-level exclusions. Components mentioned here are available in the EPiServer.Commerce.Marketing namespace.

Set the desired action via the ExclusionLevel property on the PromotionEngineSettings passed when running the PromotionEngine. Here are examples of using exclusion levels with the PromotionEngine.

### Call the PromotionEngine directly

###  Use the ApplyDiscounts extension method

You can find another sample implementation in the [Optimizely QuickSilver sample site](🔗), in the CartService class.

## Order level exclusion

ExclusionLevel.Order, the default setting, insures that two promotions that exclude each other do not get applied within the same OrderGroup. If they are both applied, the higher priority promotion is used, while the other promotion is ignored.

To exclude promotions, set a list of ContentReference to the ExcludedItems property of the PromotionData. The following samples illustrate this.

Three types of ContentReference can be added to the ExcludedItems property:

  • The SalesCampaign.CampaignRoot – This promotion cannot be combined with _any_ other promotions.

  • A campaign's ContentLink – This promotion cannot be combined with any promotions _in that campaign_.

  • A promotion's ContentLink – promotion cannot be combined with _that specific promotion_.

## Unit level exclusion

Use ExclusionLevel.Unit with promotions whose DiscountType value is LineItem.


If you use ExclusionLevel.Unit with any promotion type other than LineItem, its behavior is the same as ExlusionLevel.Order.

Unit level exclusion mean that two promotions that exclude each other are both applied as long as they do not affect the same units of an item in an OrderGroup.

As with Orders, you exclude promotions by adding ContentReferences to the ExcludedItems list.



  • Promotion **P1 **is “Buy 3 of product **A** and get a 10% discount on 1 product A”.

  • Promotion **P2** is “Get 5% off product **A**”.

  • ** P1** has a higher priority than **P2**.

  • An order group has the following line item: SKU = **A**, quantity = 10.

If either P1 or P2 excludes the other

  • P1 gives one unit a 10% discount.

  • The 2 other units used in the P1 promotion are charged full price.

  • The remaining 7 units are available for P2, so they each receive a 5% discount.


The sequence in which promotions are executed is determined by their priority.