Prices at checkout

How the discount is applied at checkout

Each published deal is one automatic discount in Shopify. What the checkout counts, the label shoppers see, which checkout routes apply it, and how to check a price yourself.

Applies to: TreStack Bundles, every plan
Updated: 11 October 2026

At a glance
  • Discount: One automatic discount per published deal
  • Priced from: What is in the cart, not the bar clicked
  • Buy it now: Hidden unless the offer is one plain line of the page's variant

One automatic discount per deal

When you publish a deal, the app creates one automatic app discount for it in Shopify. A Shopify Function runs that discount at checkout and works out the price from the cart. The app never creates discount codes, so shoppers have nothing to type.

You find the discount in Shopify admin under Discounts, titled TreStack Bundles - followed by the deal's Name (only visible for you). Its start and end follow the deal's Active dates. It discounts cart lines, and a free shipping gift discounts shipping; the app makes no order discounts. It applies to one-time purchases and to subscription purchases, on every renewal.

Change the deal in the app, not the discount in Shopify admin: the app writes the discount from the deal each time you Save or Publish. Unpublishing a deal, saving it as a draft, removing it, or a paused plan removes its discount. If you delete the discount in Shopify admin yourself, the deal goes back to draft and Home shows A deal was unpublished. Publish the deal again to create a new discount.

The label shoppers see

Each discounted line shows a label in the cart and at checkout. It is the deal's Discount name (shown in cart/checkout) when you filled it in, otherwise the title of the bar that priced the line. The variables {{quantity}}, {{buy_quantity}} and {{get_quantity}} are filled in with the bar's numbers; any other variable is removed, because the checkout has no prices or titles to put there. A label longer than 255 characters is shortened.

The label shows in the shopper's language only when you translated the discount name or the bar title on the Translations page, and only in languages other than your store's primary language. Everywhere else the original text shows. See Translations, currencies and markets.

The cart decides, not the bar clicked

The checkout prices what is in the cart when the shopper pays. What they clicked in the widget does not matter once the items are in the cart.

  • Quantity breaks and Buy X, get Y: every unit of a targeted product in the cart counts, and different variants of the same product add up. The bar with the largest quantity the cart reaches applies. A shopper who adds 3 and then changes the cart to 2 gets the 2-item price, and below the lowest bar there is no discount. A percentage or an amount off applies to every unit. A fixed price bar is scaled to the units in the cart: with 5 units and a 3-item bar at $30, the 5 units cost $50. On a Buy X, get Y bar, each whole buy-and-get set in the cart earns its "get" quantity at the "get" price, given to the cheapest units; the other units pay the "buy" price.
  • Items added outside the widget: the theme's own Add to cart counts too, unless Apply discount only via bundle widget is on in Settings, Visibility. With it on, items added through POS, pages without the widget or other apps get no deal discount.
  • Bundles and Mix & Match: the cart needs the full set. A missing item means no discount for that set, and units beyond the set pay full price.
  • Volume discount with other products: only items added through the widget's product picker count across products, and the page's product must stay in the cart.
  • Gifts and upsells: they are free or discounted only while the cart still reaches the bar that owns them. If the shopper drops below it, they stay in the cart at full price; nothing removes them.
  • Rounding: a percentage price rounds each unit up to the cent. Price rounding from Settings, Pricing applies in the shopper's currency.
  • Currencies: amounts you enter are in your store currency and converted with Shopify's rate for the shopper's currency. A deal set to one market can use that market's currency instead. If no usable rate exists, the shopper gets no discount, never a wrong one.
  • Markets and B2B: Shopify applies the discount only in the deal's markets. With Exclude B2B customers on, Shopify B2B buyers get neither the widget nor the discount.
  • A/B tests: each variant charges its own price at checkout. See A/B testing a deal.

Checkout routes

The normal cart checkout, Shop Pay and express checkout buttons in the cart all run the discount.

Buy it now buys only the variant shown in the product form. So the widget hides the theme's Buy it now button whenever the chosen offer is more than that one plain line: a bundle, a Mix & Match set, gifts, upsells, different variants per item, or an Alternative product bar. It is also hidden for a multi-unit bar when the theme's product form has no quantity box. Those offers go through the cart. A quantity break or Buy X, get Y bar of one variant keeps Buy it now.

Skip cart and go to checkout directly, in Settings, Cart, sends the shopper from the widget's Add to cart straight to checkout. It first takes out this deal's earlier lines for the same product, so pressing Add to cart twice does not double the offer. Other items in the cart stay.

The app does nothing special for draft orders or POS. With Apply discount only via bundle widget on, items added there get no deal discount.

Checking a price, in four steps.

Publish a deal on one product

Pick a product only you are testing with, or use a development store. See Development stores and testing safely.

Add each bar from the widget

Note the price the widget shows for each bar, then open the cart. The cart total should match.

Go to checkout

Check the label next to the discount and the total. Use the cart checkout, not Buy it now, for offers of more than one line.

Change the cart

Lower a quantity or remove one item of a set and check the price again. It follows the cart, as described above.

Settings reference

Discount
One automatic app discount per published deal, titled TreStack Bundles - deal name in Shopify admin, Discounts. No codes.
Discount name (shown in cart/checkout)
Settings section. The checkout label. Empty means the bar title is used.
Label variables
{{quantity}}, {{buy_quantity}} and {{get_quantity}} are filled in. Other variables are removed.
Label translation
Translations page. Applies only in languages other than the primary one.
Active dates
Settings section. The discount starts and ends with the deal.
Apply discount only via bundle widget
Settings, Visibility. Off by default. On, only items added through the widget get the discount.
Skip cart and go to checkout directly
Settings, Cart. The widget's Add to cart opens checkout instead of the cart.
Buy it now
Hidden by the widget for offers that are not one plain line of the page's variant, including Alternative product bars, and for multi-unit bars when the form has no quantity box.
Draft orders and POS
No special handling. Excluded when Apply discount only via bundle widget is on.

If this does not work

The failures most likely on this page, with the check that resolves each one.

Copyright © 2026