Coupon Redemption

You can restrict coupon redemptions by customer, time, or order configurable redemption limits (such as redemption limit per coupon code, redemption limit per customer or redemption limit per time frame). If the customer provides a coupon code that has not reached its redemption limits, the customer qualifies for any promotion associated with that coupon.

Coupons must be redeemed in the shopping cart: this is the only way coupons can be used to qualify for associated promotions. Customers are limited by default to redeeming one coupon code per item in the cart, even though they can enter multiple coupon codes. There can be additional coupon redemption opportunities for shipping and per order.

For a rolling redemption, where the customer can redeem a coupon once every 7 days, for example, Salesforce B2C Commerce looks at the date and time to determine when the coupon can be next applied. For example, for an order on Monday at 11:00 AM, the customer can't redeem the coupon before the next Monday at 11:00 AM. So, a redemption limit of 7 equals 7 x 24 hours after the last usage.

Coupon redemptions can be imported and exported.

Coupon Redemption Processing

B2C Commerce evaluates redemption limits each time a customer adds a coupon to the basket and each time the basket is recalculated, including checkout.

  1. If the coupon code doesn't exist, it returns Invalid Coupon Code. All messages can be customized and translated.
  2. If the coupon code is already in the basket, it returns Coupon Code already applied.
  3. If another coupon code of the same coupon is already in the basket, it returns Coupon Code already applied.
  4. If the coupon has been disabled, it returns Coupon code not redeemable.
  5. For single use single code coupon codes, if the customer has already redeemed the code, it returns Coupon Code already redeemed. See the Single-use coupons section
  6. For single use multi-code coupons:
    • If the redemption limit has been reached, it returns You can only redeem X coupon codes.
    • If the redemption limit per time period has been reached, it returns You can only redeem X coupon codes per day.
  7. For multi-use coupon codes:
    • If the overall quantity redemption limit has been reached, it returns Sorry, too many customers have redeemed the code.
    • If the per customer quantity redemption limit has been reached, it returns You can only redeem X coupon codes.
    • If the per customer per time period redemption limit has been reached, it returns You can only redeem X coupon codes per day.
  8. Otherwise, it redeems the coupon.

Single-Use Coupons

When a coupon is limited to one use by a customer, if the customer tries to use the coupon twice via guest checkout, B2C Commerce uses the customer's email address to verify coupon usage. The difference between a registered and unregistered customer is that for a registered customer, B2C Commerce validates the redemption limit when the customer adds the coupon to the cart. For an unregistered customer, B2C Commerce validates the redemption limit after the customer has entered their email address, which occurs on the SiteGenesis billing page.

Multiple Applications of a Coupon to the Same Basket (Beta)

You can specify the number of redemptions per order as follows:

  • One (default): only a single code for a specific coupon can be added to a basket
  • Multiple (beta): the coupon can be added to a basket multiple times, once for each distinct coupon code.

When an order is placed from such a basket, all the coupon codes are marked redeemed. A multiple coupon codes coupon simply extends the number of times the promotion applies, but doesn't cause discounts to stack on the same product.

For multiple coupon codes, product promotions qualified by the coupon can apply more times than they normally would. For example, a merchant creates a coupon qualified product promotion, 10% off Discounted Products, with a maximum applications of two. The basket includes three distinct codes for the coupon. In this case, the promotion can apply up to six times (2 * 3) times.

Important:

Order level discounts are not supported with the multi-use coupon code feature because there is a strong potential for fraudulent usage. Repeated applications of coupon codes could be used to get the entire order for free if the coupons are not sufficiently limited, configured coupon codes are not sufficiently random, or through another form of attack. Product level monetary discounts are allowed because B2C Commerce enforces one financial discount per promotion per product line item.

Developer Considerations

If multiple codes from the same coupon are in a basket, they appear as separate CouponLineItems.

In a special case, B2C Commerce tracks which coupon code triggers a Choice Of Bonus Product discounts. If a coupon code is removed from a basket, B2C Commerce removes the corresponding BonusDiscountLineItem originally triggered by the code, and all related bonus products. In general, the relationship between coupon codes and discounted products isn't persisted in B2C Commerce for other types of promotions, and doesn't affect future applications of B2C Commerce.