> ## Documentation Index
> Fetch the complete documentation index at: https://discountkit.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Stacking discounts

> Control which discounts can apply together — across discount classes and on the same cart line

By default, Shopify allows **one discount per class** at checkout: one product discount, one order discount, and one shipping discount. Stacking lets multiple discounts apply to the same cart in two dimensions:

* **Across classes** — combine a product discount with an order discount, a shipping discount, or all three.
* **On the same cart line** — apply two product discounts to the same line item (e.g. seasonal sale + loyalty perk).

Both dimensions are configured in the **Combinations** card on the discount editor.

## Discount classes

Every discount belongs to one or more classes:

| Class        | What it discounts                                           |
| ------------ | ----------------------------------------------------------- |
| **Product**  | Specific cart line items (e.g. 20% off T-shirts)            |
| **Order**    | The whole order subtotal (e.g. $10 off any order over $100) |
| **Shipping** | Shipping rates (e.g. free shipping on orders over \$75)     |

A discount of class X can combine with discounts of any class — including its own — except shipping. Two shipping discounts can never apply to the same shipment.

## Combining across classes

In the **Combinations** card, check the classes this discount should combine with. The other discount also has to opt in: combining is only allowed when **both** discounts list each other's class.

<Tip>
  Combinations are mutual. If you add a 20% off Order discount and a Free Shipping discount, both must check the other's class for them to apply together.
</Tip>

## Combining on the same cart line

<Note>
  This feature is only available on **Shopify Plus** plans.
</Note>

By default, only one product discount applies to any given cart line. If a customer has both "20% off T-shirts" and "Buy 2, get 1 free" eligible for the same shirt, only the better-value discount wins.

To stack two product discounts on the same line, both discounts must:

1. **Be tagged** with one or more shared tag (e.g. `SEASONAL`).
2. **Opt in to combining on that tag** in the Combinations card.

When this discount and another product discount share a tag in their cart-line lists, both apply to the same line.

### Example — seasonal sale + loyalty bonus

You're running a seasonal 15% off sale on outerwear and want to layer a 5% loyalty bonus on top for VIP customers.

| Discount                                           | Tags                  | Cart-line combines with |
| -------------------------------------------------- | --------------------- | ----------------------- |
| **Seasonal sale** (15% off jackets)                | `SEASONAL`, `LOYALTY` | `LOYALTY`               |
| **VIP loyalty bonus** (5% off everything for VIPs) | `LOYALTY`             | `SEASONAL`              |

Both discounts list `LOYALTY` (or `SEASONAL`) on the other's tags, so they stack. A VIP customer who buys a jacket gets 15% + 5% on the same line.

### How tags work in cart-line stacking

* Tags are **set on the discount itself** (in the [Tags](/discounts/common-settings#tags) card in the editor).
* The cart-line list in **Combinations** says "I'll stack on a line with another product discount that has any of these tags."
* The match is **bidirectional** — both discounts must list a tag the other has.
* Up to **5 tags** per cart-line list.

## Stacking and Discount Kit Live

[Discount Kit Live](/live/introduction) writes scalar metafields like `max_reward_percent` that reflect the **best individual discount** for a product. Stacked discounts are not pre-computed in Live's metafields — the actual stacked total only resolves at checkout.

If your storefront badging or pricing copy depends on the post-stack total, render it from the cart object at runtime rather than from the product-level Live metafields.
