Both apply when each allows the other's class
The automatic discount here is a product discount set to combine with order discounts. The code is an order discount set to combine with product discounts.
The order of the arithmetic matters for anyone forecasting a margin: the order discount's percentage was taken from what was left after the product discount.
Into the cart
- 1 × Single Bag at $40.00, bought once
- The cart attribute the app discount's function reads
- Code VERIFY-ORDER10: 10% off the order, one-time purchases only, combines with product and shipping discounts
What Shopify returned
| Line | Quantity | Price | Discounts on the line | Line total |
|---|---|---|---|---|
| Single Bag | 1 | $40.00 | −$10.00 automatic, “Offer Suite” | $30.00 |
| Discounts on the cart | −$3.00 code VERIFY-ORDER10 | |||
| Cart total | $27.00 | |||
VERIFY-ORDER10applicable: true
What that shows
- Both applied: the line cost $30.00 after the automatic discount, and the cart total was $27.00.
- The order code took 10% of the discounted $30.00, not of the $40.00 price: $3.00.
- The order discount was in the cart's own list of allocations and not on the line.
The same holds for two codes
A product code and an order code, each allowing the other's class, with no automatic discount in the cart.
Into the cart
- 1 × Single Bag at $40.00, bought once
- No cart attribute, so the app's functions return no operations
- Code VERIFY-ORDER10: 10% off the order, one-time purchases only, combines with product and shipping discounts
- Code VERIFY-BAG5: $5.00 off the bag, one-time purchases only, combines with product, order and shipping discounts
What Shopify returned
| Line | Quantity | Price | Discounts on the line | Line total |
|---|---|---|---|---|
| Single Bag | 1 | $40.00 | −$5.00 code VERIFY-BAG5 | $35.00 |
| Discounts on the cart | −$3.50 code VERIFY-ORDER10 | |||
| Cart total | $31.50 | |||
VERIFY-BAG5applicable: trueVERIFY-ORDER10applicable: true
What that shows
- Both codes applied: $5.00 off the line, then 10% of the remaining $35.00.
- The cart total was $31.50.
One side that combines with nothing is enough to stop it
The automatic discount still allows order discounts. The code is the same 10% order discount, now set to combine with nothing.
The code was not applied, and the cart said so. The second cart shows the code is otherwise valid: alone, it applies.
Into the cart
- 1 × Single Bag at $40.00, bought once
- The cart attribute the app discount's function reads
- Code VERIFY-ORDER10-SOLO: 10% off the order, one-time purchases only, combines with nothing
What Shopify returned
| Line | Quantity | Price | Discounts on the line | Line total |
|---|---|---|---|---|
| Single Bag | 1 | $40.00 | −$10.00 automatic, “Offer Suite” | $30.00 |
| Discounts on the cart | none | |||
| Cart total | $30.00 | |||
VERIFY-ORDER10-SOLOapplicable: false- warning
DISCOUNT_CODE_NOT_HONOURED“The VERIFY-ORDER10-SOLO discount code is not honoured”
What that shows
- The automatic discount stayed: the line cost $30.00 and so did the cart.
- The code was listed as not applicable, with the warning DISCOUNT_CODE_NOT_HONOURED.
Into the cart
- 1 × Single Bag at $40.00, bought once
- No cart attribute, so the app's functions return no operations
- Code VERIFY-ORDER10-SOLO: 10% off the order, one-time purchases only, combines with nothing
What Shopify returned
| Line | Quantity | Price | Discounts on the line | Line total |
|---|---|---|---|---|
| Single Bag | 1 | $40.00 | none | $40.00 |
| Discounts on the cart | −$4.00 code VERIFY-ORDER10-SOLO | |||
| Cart total | $36.00 | |||
VERIFY-ORDER10-SOLOapplicable: true
What that shows
- Alone, the code applied: $4.00 off, a cart total of $36.00.
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.
| Discount | Class | Gives | Combination setting |
|---|---|---|---|
| Code VERIFY-ORDER10 | Order | 10% off the order, one-time purchases only | combines with product and shipping discounts |
| Code VERIFY-BAG5 | Product | $5.00 off the bag, one-time purchases only | combines with product, order and shipping discounts |
| Code VERIFY-ORDER10-SOLO | Order | 10% off the order, one-time purchases only | combines 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.