Both apply when each allows the other's class
The order code is set to combine with shipping discounts, and the free-shipping code with order discounts.
The two do not touch the same money. The order code's percentage is taken from the merchandise, and the shipping code takes the rate.
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-SHIPFREE: free shipping, one-time purchases only, combines with product and order discounts
- A US delivery address, with the cheapest rate selected
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 | |||
| Delivery: Standard selectedQuoted: Standard $8.00, Express $15.00 | −$8.00 code VERIFY-SHIPFREE | $0.00 | ||
| Cart total | $36.00 | |||
VERIFY-ORDER10applicable: trueVERIFY-SHIPFREEapplicable: true
What that shows
- Both codes applied: $4.00 off in the cart's list of allocations, and the $8.00 Standard rate free on the delivery group.
- The order code's 10% was taken from the $40.00 of merchandise and not from the rate: the cart total was $36.00.
With either side set to combine with nothing, the shipping code was the one refused
The first cart sets the order code to combine with nothing. The second puts the setting on the free-shipping code and leaves the order code open.
Both carts came out the same: the order code applied and the free-shipping code did not, though free shipping was worth twice as much here. Which side holds the setting did not decide which discount stayed, and neither did the size of the saving.
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
- Code VERIFY-SHIPFREE: free shipping, one-time purchases only, combines with product and order discounts
- A US delivery address, with the cheapest rate selected
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 | |||
| Delivery: Standard selectedQuoted: Standard $8.00, Express $15.00 | none | $8.00 | ||
| Cart total | $44.00 | |||
VERIFY-ORDER10-SOLOapplicable: trueVERIFY-SHIPFREEapplicable: false- warning
DISCOUNT_CODE_NOT_HONOURED“The VERIFY-SHIPFREE discount code is not honoured”
What that shows
- Only the order code applied: $4.00 off, shipping charged at $8.00, a cart total of $44.00.
- The free-shipping code was listed as not applicable, with the warning DISCOUNT_CODE_NOT_HONOURED. The saving kept was the smaller one: $4.00 against the $8.00 rate.
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-SHIPFREE-SOLO: free shipping, one-time purchases only, combines with nothing
- A US delivery address, with the cheapest rate selected
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 | |||
| Delivery: Standard selectedQuoted: Standard $8.00, Express $15.00 | none | $8.00 | ||
| Cart total | $44.00 | |||
VERIFY-ORDER10applicable: trueVERIFY-SHIPFREE-SOLOapplicable: false- warning
DISCOUNT_CODE_NOT_HONOURED“The VERIFY-SHIPFREE-SOLO discount code is not honoured”
What that shows
- With the setting on the other side the cart came out the same: the order code's $4.00 applied, shipping was charged at $8.00, and the cart total was $44.00.
- The free-shipping code was listed as not applicable, with the warning DISCOUNT_CODE_NOT_HONOURED.
A product, an order and a shipping discount in one cart
The automatic discount on this store carries a product class and a shipping class and combines with all three classes. The order code combines with product and shipping discounts.
The order code's percentage was taken from the line after the product discount, as it is without shipping in the cart.
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
- A US delivery address, with the cheapest rate selected
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 | |||
| Delivery: Standard selectedQuoted: Standard $8.00, Express $15.00 | −$8.00 automatic, “Free shipping” | $0.00 | ||
| Cart total | $27.00 | |||
VERIFY-ORDER10applicable: true
What that shows
- All three classes applied in one cart: $10.00 off the line and the $8.00 rate free from the automatic discount, and the order code.
- The order code took 10% of the discounted $30.00: $3.00, a cart total of $27.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-SHIPFREE | Shipping | free shipping, one-time purchases only | combines with product and order discounts |
| Code VERIFY-ORDER10-SOLO | Order | 10% off the order, one-time purchases only | combines with nothing |
| Code VERIFY-SHIPFREE-SOLO | Shipping | free shipping, 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.