# What one Shopify discount code can't do

One Shopify discount code can't give a percentage off and free shipping because every Shopify discount is one kind of discount: a product discount, an order discount or a shipping discount. A percentage off is a product or order discount, and free shipping is a shipping discount, so Shopify needs a separate code for each. This is how Shopify discounts are built, not a setting you missed. [OneCode: Stackable Discounts](https://apps.shopify.com/rm-combo-discounts) is a Shopify app that puts both on one code, so the customer enters it once.

## What happens when you use two codes

Without an app, the usual setup is two codes: SUMMER20 for 20% off products and FREESHIP for free shipping. That works only when both of these are true:

- The customer knows about both codes and enters both at checkout.
- Each code is set to combine with the other's kind. SUMMER20 has to allow shipping discounts, and FREESHIP has to allow product discounts.

If either code doesn't allow the other, checkout keeps only one of them. The customer gets the 20% or the free shipping, not both.

## Other Shopify rules that limit stacking

These rules apply between separate discounts, even when they are allowed to combine:

- **Each item gets one product discount.** Shopify gives each item the product discount that saves the most. A 10% code and a 15% code on the same item give 15%, not 25%. During a 20% sitewide sale, a 10% product code adds nothing to items the sale already covers.
- **One shipping discount per order.** If a customer has two shipping discounts, Shopify uses the one that saves more.
- **Order discounts come off after product discounts.** They are taken from the subtotal that is left after product discounts. Separate order discounts can add together when they are allowed to combine.
- **A store can have at most 25 active automatic discounts.** That count includes Shopify's own automatic discounts and those from apps.

Because order discounts come off after product discounts, they give you a way to add a second saving on top of a product sale. Make the second code an order discount: a $100 item drops to $80 in a 20% sale, then a 10% order code takes $8 more, and the customer pays $72. See [an influencer code that works during a sale](/guides/influencer-code-during-a-sale.md). On Shopify Plus, OneCode can also let two tagged product discounts [stack on the same item](/for/shopify-plus.md).

## Put both on one code with OneCode

A OneCode discount can hold a product discount, an order discount and a shipping discount together, and each one can have its own conditions. The code BFCM20 gives 20% off every product, plus free shipping on carts of $50 or more.

A customer with a $50 shirt and a $30 tote enters BFCM20 once. The shirt drops to $40 and the tote to $24, a saving of $16, and shipping is free. They pay $64.

![Checkout with BFCM20 on a $50 shirt and a $30 tote: the shirt at $40, the tote at $24, free Economy shipping, total $64](/images/checkout-bfcm80.png)

The $50 rule sits on the shipping discount only. A $40 cart on the same code still gets 20% off, but pays for shipping. The steps are in [20% off and free shipping on one code](/guides/20-percent-off-and-free-shipping.md).

The discounts on one OneCode code always apply together, so you don't need to set them to combine with each other. If the code also has to work alongside another discount, both discounts still have to allow combining. A code with a product discount and a shipping discount counts as both kinds, so the other discount has to allow both. See [why only one discount applied](/guides/only-one-discount-applied.md).

OneCode costs $9.90 USD every 30 days after a 7-day free trial, billed by Shopify.

For everything one OneCode code can hold, see [one code for product, order and shipping discounts](/one-code.md). For the different meanings of "stacking", see [what stacking means on Shopify](/stacking.md).
