Two Shopify product discounts on the same line

Setting two product discounts to combine with product discounts does not make them stack on one line. These carts aim an automatic product discount and a product code at the same unit.

Verified 3 November 2026 on Shopify’s 2026-10 API, in carts built on a real store. Each statement marked with a tick is checked against the cart Shopify returned.

Both allow product discounts, and only one applied

The automatic discount takes $10.00 off the bag. The code takes $5.00 off the same bag. Each is set to combine with product discounts.

The line got one of them. The second cart shows the code alone, to rule out a code that simply does not work.

Two product discounts on one line, each allowing product discountsVerified 3 November 2026 · API 2026-10

Into the cart

  • 1 × Single Bag at $40.00, bought once
  • The cart attribute the app discount's function reads
  • Code VERIFY-BAG5: $5.00 off the bag, one-time purchases only, combines with product, order and shipping discounts

What Shopify returned

The cart Shopify returned: Two product discounts on one line, each allowing product discounts
LineQuantityPriceDiscounts on the lineLine total
Single Bag1$40.00−$10.00 automatic, “Offer Suite”$30.00
Discounts on the cartnone
Cart total$30.00
  • VERIFY-BAG5 applicable: false
  • warning DISCOUNT_CODE_NOT_HONOURED “The VERIFY-BAG5 discount code is not honoured”

What that shows

  • They did not stack: the line cost $30.00, the automatic discount's price, not $25.00.
  • The $5.00 code was listed as not applicable, with the warning DISCOUNT_CODE_NOT_HONOURED.
The same product code with no automatic discountVerified 3 November 2026 · API 2026-10

Into the cart

  • 1 × Single Bag at $40.00, bought once
  • No cart attribute, so the app's functions return no operations
  • Code VERIFY-BAG5: $5.00 off the bag, one-time purchases only, combines with product, order and shipping discounts

What Shopify returned

The cart Shopify returned: The same product code with no automatic discount
LineQuantityPriceDiscounts on the lineLine total
Single Bag1$40.00−$5.00 code VERIFY-BAG5$35.00
Discounts on the cartnone
Cart total$35.00
  • VERIFY-BAG5 applicable: true

What that shows

  • Alone, the code applied on the line: $5.00 off, a cart total of $35.00.

A larger code that combines with nothing replaced the automatic discount

This code takes 50% off the bag and is set to combine with nothing. The automatic discount is the same as above.

The code won the line and the automatic discount disappeared without a word. In the cart above, the smaller code lost and the cart warned about it; here the automatic discount lost and nothing in the cart says it was ever there.

An automatic product discount and a larger product code that combines with nothingVerified 3 November 2026 · API 2026-10

Into the cart

  • 1 × Single Bag at $40.00, bought once
  • The cart attribute the app discount's function reads
  • Code VERIFY-BAG50PCT: 50% off the bag, one-time purchases only, combines with nothing

What Shopify returned

The cart Shopify returned: An automatic product discount and a larger product code that combines with nothing
LineQuantityPriceDiscounts on the lineLine total
Single Bag1$40.00−$20.00 code VERIFY-BAG50PCT$20.00
Discounts on the cartnone
Cart total$20.00
  • VERIFY-BAG50PCT applicable: true

What that shows

  • The code applied: $20.00 off, a cart total of $20.00.
  • The automatic discount's $10.00 was gone from the line, and the cart returned no warning about it.

How this was verified

Every cart on this page was built through the Storefront API on a Shopify Plus development store we keep for this, on API version 2026-10, and read back as Shopify priced it. The store sells one product in these carts: Single Bag, at $40.00, also sold on a selling plan named “Every 30 days” that has no pricing policy. It quotes two delivery rates to a US address.

It has one automatic app discount, titled “Offer Suite”, with a product class and a shipping class, set to combine with product, order and shipping discounts. Its function reads a cart attribute: with it, the function takes 25% off one unit of Single Bag bought once, or $8.00 off the unit on its selling plan, and makes the cheapest delivery rate free. Without it, the function returns no operations.

The other discounts in these carts, as they are set on the store
DiscountClassGivesCombination setting
Code VERIFY-BAG5Product$5.00 off the bag, one-time purchases onlycombines with product, order and shipping discounts
Code VERIFY-BAG50PCTProduct50% off the bag, one-time purchases onlycombines with nothing

A suite builds these carts again and reads the discount settings from the store before it does. A statement that no longer matches the cart takes this page down until it is corrected, and no cart stands for more than 90 days without being built again. This is what one store returned on one API version: your store’s plan, markets and other apps can change the result, so build the cart.

Seen something different on your store? Write to privacy@offersuite.io with the cart and we’ll run it.