Stackable Discounts

Stacking discounts enables you to apply multiple discounts to a line item/order.

Though this guide walks through the user interface for managing discounts, refer to the Discounts API resource for the requests that can be made to configure and manage discounts via API.

Use Cases

Apply Two Percentage Discounts to Same Product

You have a product with a sale price of $100 and want to apply two discounts to it—a 10% off discount and a 20% off discount. The system would apply the discounts in the following way:

  1. The item is discounted by 20% and becomes $80.
  2. The $80 amount is discounted by 10% and becomes $72.
  3. The product is now $72.

Apply Different Discount Types (Dollar and Percentage) to Same Product

You have a product with a sale price of $100 and want to apply a 10% off and a $5 off discount. The system would apply the discounts in the following way:

  1. The system evaluates different ways to apply the discount:
    1. If 10% off then $5 off applied, the price would become $85.
    2. If $5 off then 10% off applied, the price would become $85.50.
  2. The system selects the discount ordering that yields the lowest price for the shopper. The item becomes $85.


Assign Discounts

Each discount falls into one of three categories: line item, order, shipping. When setting a discount to stack, you must assign that discount to a layer (1, 2, or 3). Layers help the system determine which discounts can be stacked together.

Only one discount of each category can be assigned to each layer. If you assign two discounts of the same type to the same layer, the system uses the discount that yields the lowest price for the shopper. However, if you assign two discounts from different categories (for example a line item discount and order discount) to the same layer, the system applies both discounts.

Discounts assigned to a lower layer cannot stack onto discounts set to a higher layer. For example, a discount set to layer 1 cannot stack onto a discount set to layer 2 or 3.

Shipping Discounts

Kibo eCommerce does not currently support stacking shipping discounts. For example, when creating/editing a discount on the Discounts page in Admin, you can select Line Item or Order in the Applies To field, but not Shipping.

Enable Discount Stacking

To enable discount stacking, you must go to System > Settings > Discount Settings. From there, the below discount options will be displayed. Turn this feature on under the Stacking section by toggling the icon for Enable Discount Stacking.

The Discount Stacking page with options toggled on

Set Discount Layers

Before you can stack discounts, you must set stacking settings for the discounts you want to stack in the General section of the Discounts screen in Admin. To enable stacking for a discount:

  1. Select the discount that you want to edit.
  2. In the Discount Layering subsection, select the Stackable toggle option.
  3. Using the Assign to Discount Layer drop-down menu, select the discount layer to which you want to assign the discount.

Set Order Value Calculation

A condition setting will include line item discounts in the calculation of the order value for order minimum and maximum constraints. The order value is recalculated between stacking layers. In other words, the order total will be calculated after any item-level discounts have been applied when determining eligibility for order-level discounts. This is also set in the API as usePostDiscountedOrderValue.

If this setting is not enabled, order totals are calculated based on the pre-discounted item totals. Some orders may be eligible for discounts with minimum order total requirements even if the actual order total is less than the minimum after item-level discounts are used.

For example, when disabled, if an order total is $40 and then reduced to $30 with item-level discounts then the order could still receive an order-level discount with a minimum total requirement of $40. With the setting enabled, this order would not be able to take advantage of the order-level discount because it does not fit the minimum requirement after the item-level discounts are factored in.

To enable this behavior, go to System > Settings > Discount Settings and toggle the Condition Settings option that says to "include discounts for order min/max condition evaluation."

View/Filter Discounts by Stacking Settings

You can view/filter discounts on the Discounts grid page in Admin according to their stacking settings.

View Stacking Settings on Discounts Grid

To view stacking settings on the Discounts grid:

  1. Navigate to Main > Fulfillment > Orders.
  2. Select the options button (represented by three dots) on the right-hand end of the discount grid header to display the grid fields menu.
  3. In the grid fields menu, select the Stacking Layer checkbox to display the Stacking Layer column in the discount grid.
  4. In the grid fields menu, select the Stackable checkbox to display the Stackable column in the discount grid.

Filter Discounts by Stacking Settings

To filter discounts by stacking settings:

  1. From the discount grid page, select the filter button (represented by three lines) to the left of Create New Order.
  2. In the Stackable field, select the stackable setting by which you want to filter discounts.
  3. In the Stacking Layer field, select the stacking layer by which you want to filter discounts.