I'm trying to find a way to restrict a public coupon from being used by the same customer in more than one order. Eg: I have a public coupon "10DOLLAROFF2021" I need to make this coupon available for all the customers for single order. Once used, the same customer should get some error saying this has already been used when trying to use it again. Is this functionality available on Sitecore commerce already?

Any suggestions on how we can achieve if not available already.

Sitecore Version: 9.2
Commerce Version: 9.2
  • This doesn't come OOTB and needs to be customised. I haven't done this myself but just a thought. See the Customer Orders and check if any promotion copun already applied matches the coupons applied to cart. Explore the Qualification Condition "Current Customer Has Pruchased [specific]" you may have to make similar custom qualification condition to disallow the user from using the same coupon again. Commented Nov 29, 2021 at 16:14

1 Answer 1


Here's How I would do this:

  1. Create a Custom Block to be added to the customer (UsedCouponsComponent). this component would have the list of coupons already used
  2. Extend ICreateOrderPipeline with a Custom Block that would check if a coupon is part of the order. If yes add it to the UsedCouponsComponent then add UsedCouponsComponent to the current customer entity.
  3. Extend IDiscoverPromotionsPipeline with a custom block after FilterPromotionsByCouponBlock to filter and remove any coupons already used by the customer.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.