A Shopify order discount and a shipping discount in one cart

An order discount lowers the cart's merchandise. A shipping discount lowers the delivery rate. These carts hold one of each, set three ways, and then add a product discount.

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 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.

An order code and a free-shipping code that allow each otherVerified 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-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

The cart Shopify returned: An order code and a free-shipping code that allow each other
LineQuantityPriceDiscounts on the lineLine total
Single Bag1$40.00none$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-ORDER10 applicable: true
  • VERIFY-SHIPFREE applicable: 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.

An order code that combines with nothing, and a free-shipping codeVerified 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-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

The cart Shopify returned: An order code that combines with nothing, and a free-shipping code
LineQuantityPriceDiscounts on the lineLine total
Single Bag1$40.00none$40.00
Discounts on the cart−$4.00 code VERIFY-ORDER10-SOLO
Delivery: Standard selectedQuoted: Standard $8.00, Express $15.00none$8.00
Cart total$44.00
  • VERIFY-ORDER10-SOLO applicable: true
  • VERIFY-SHIPFREE applicable: 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.
An order code, and a free-shipping code that combines with nothingVerified 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-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

The cart Shopify returned: An order code, and a free-shipping code that combines with nothing
LineQuantityPriceDiscounts on the lineLine total
Single Bag1$40.00none$40.00
Discounts on the cart−$4.00 code VERIFY-ORDER10
Delivery: Standard selectedQuoted: Standard $8.00, Express $15.00none$8.00
Cart total$44.00
  • VERIFY-ORDER10 applicable: true
  • VERIFY-SHIPFREE-SOLO applicable: 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.

An automatic product and shipping discount, and an order codeVerified 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-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

The cart Shopify returned: An automatic product and shipping discount, and an order code
LineQuantityPriceDiscounts on the lineLine total
Single Bag1$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-ORDER10 applicable: 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.

The other discounts in these carts, as they are set on the store
DiscountClassGivesCombination setting
Code VERIFY-ORDER10Order10% off the order, one-time purchases onlycombines with product and shipping discounts
Code VERIFY-SHIPFREEShippingfree shipping, one-time purchases onlycombines with product and order discounts
Code VERIFY-ORDER10-SOLOOrder10% off the order, one-time purchases onlycombines with nothing
Code VERIFY-SHIPFREE-SOLOShippingfree shipping, 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.