Bundle Discount Floor When MOQ And SKU Mix Change The Margin Math

Bundle pricing isn't a sitewide percentage. When SKUs in the bundle carry different COGS and MOQ obligations distort what's "free" stock, the true discount floor sits higher than most bundle apps compute.
Quick answer
The bundle's discount floor is set by the weighted COGS of every SKU in the mix, not by an average margin. Compute total bundle COGS (including the lowest-margin SKU and any MOQ-locked units you're effectively giving away), add fulfilment and payment fees, and the floor is the price at which contribution margin hits your minimum target — usually 15-25% for bundles, not zero.
Bundle Discount Floor (Mixed-COGS, MOQ-Aware)
The lowest bundle price that still clears target contribution margin once each SKU's COGS, MOQ obligations, and fulfilment costs are counted.
A bundle discount floor is the deepest price you can offer on a multi-SKU bundle before contribution margin collapses. It differs from a sitewide discount floor because each SKU in the bundle has its own COGS and its own margin — a bundle of a high-margin serum and a low-margin applicator brush behaves nothing like a bundle of two serums. MOQ commitments make it worse: if you had to buy 5,000 units of a filler SKU to unlock supplier pricing, the units sitting in the warehouse carry a real, allocated cost even when the bundle math treats them as promotional. The floor is the price where those realities plus fulfilment and payment fees still leave the contribution margin you need.
Most bundle-pricing mistakes start with one number: an average margin across the store. That average hides the SKU that actually breaks the bundle.
If your store's blended margin is 62% but the filler SKU in a three-item bundle lands at 28%, a 40%-off bundle promo is already underwater on that unit. The bundle's floor is set by the constraint, not the average — the parent concept here is the Minimum Discount Floor From Contribution Margin, applied per SKU and then rolled up.
Why bundle margin math breaks
Three forces distort the floor: mixed COGS across SKUs, MOQ-locked inventory the P&L already paid for, and shipping weight that quietly eats margin on heavier items. Any one of them can push the true floor 8-15 points higher than a Shopify bundle app suggests.
The mechanism is a weighted-COGS calculation. You sum the COGS of every unit in the bundle, add allocated fulfilment (pick, pack, box, label) and payment processing on the bundle price, then subtract from revenue. The Weighted-COGS Method For Mixed-Margin Bundle Floors is the specific technique — it's what most bundle apps get wrong.
The Shopify bundle app trap
Apps like Shopify Bundles, Bold Bundles, and Fast Bundle apply a single percentage discount to the bundle price. They don't reweight by per-SKU COGS. If your bundle contains one hero SKU at 70% margin and two filler SKUs at 30% margin, the app happily lets you set a 45% discount — which is profitable on the hero and loss-making on the fillers, and the app can't tell you which.
How to detect a broken bundle floor
The tell is easy to miss because gross revenue looks healthy. Check contribution margin at the bundle-SKU level, not at the store level. Segment orders that contain the bundle and pull the per-order gross margin from your finance system.
If the bundle's contribution margin is more than 10 points below your blended store margin, the floor is set too low. If it's negative on days when you layer a sitewide code on top of the bundle discount — very common — the Lowest-Margin SKU is the binding constraint, and the code stack is exposing it.
The other signal is inventory: MOQ-locked SKUs that never sell outside bundles. If a filler unit only moves when bundled, its allocated COGS is functionally part of the bundle's cost, not a separate line item. That's the case MOQ-Locked Inventory Forcing A Higher Bundle Floor Than Margin Suggests handles specifically.
Bundle floor benchmarks by structure
Typical bundle discount floors by structure — where the deepest safe discount actually sits before contribution margin turns negative
| Bundle structure | Typical blended COGS | Max safe discount | Contribution margin at floor |
|---|---|---|---|
| Two-SKU hero + accessory (apparel) | 34% | 38% | 18% |
| Three-SKU beauty routine (mixed margin) | 28% | 42% | 20% |
| Buy-more-save-more tier 3 (5 units, same SKU) | 31% | 35% | 22% |
| Hero + filler bundle (60/40 revenue split) | 36% | 32% | 17% |
| GWP: paid SKU + 'free' gift | 41% | 22% | 15% |
| Subscription starter box (first cycle) | 45% | 55% | -8% (recouped cycle 2) |
| Weight-heavy 3-pack (>2kg total) | 38% | 24% | 14% |
The subscription row is the exception that proves the rule: you can price below contribution margin on cycle one if cycle-two retention pays it back. Every other row assumes a single-purchase bundle, and the floor is genuinely a floor.
How to set the floor correctly
Start with per-SKU contribution margin, not the bundle SRP. For each SKU in the bundle, calculate unit revenue minus unit COGS minus allocated fulfilment. Sum those to a bundle contribution number. The floor is the bundle price where that number equals your target — 15% for high-velocity SKUs, 25% for slower movers.
Then apply the constraint check: identify the lowest-margin SKU in the mix and confirm the bundle discount doesn't push its individual contribution below zero. If it does, restructure — swap the filler, raise the bundle price, or accept the SKU as a loss-leader with a documented reason (subscription hook, MOQ liquidation, category launch). Hero-Plus-Filler Bundles have a specific pricing pattern for this: price the filler at its own break-even and take all the discount on the hero.
Experiment ideas that stress-test the floor
Test bundle price at floor vs floor + 10%. If AOV lift and attach rate at floor don't beat the higher-margin variant on total contribution dollars, you're discounting for volume you'd have won anyway. Run it for at least two weeks so weekend / weekday mix doesn't skew results.
The second experiment worth running: hero-only discount vs blended bundle discount, holding total off-invoice equal. This tests whether customers respond to bundle depth or hero depth. Most apparel and beauty stores find hero-only wins on contribution — the Tiered Buy-More-Save-More Bundle pattern is a variant of the same idea applied across quantity tiers. GWP bundles need their own variant test because the 'free' SKU silently reprices the floor in a way customers don't perceive.
Bundle discount floor: common questions
Sum the COGS of every SKU in the bundle, add allocated fulfilment and payment fees, then solve for the price that leaves your target contribution margin (typically 15-25%). Don't use blended store margin — the lowest-margin SKU in the bundle is the binding constraint and it sets the floor.
Most bundle apps apply one discount percentage to the bundle total without reweighting by per-SKU COGS. If the bundle mixes high- and low-margin SKUs, the app can't detect that the discount pushes the low-margin SKU below zero contribution. You need a weighted-COGS calculation done outside the app.
Yes. Units you had to buy in bulk to unlock supplier pricing still carry allocated COGS on your P&L. If a filler SKU only sells inside bundles, its cost is functionally part of the bundle's cost — and ignoring it makes the floor look 8-12 points lower than it really is.
15-20% for high-velocity SKUs where you're buying attach rate, and 22-28% for slower movers where the bundle needs to stand on its own. Anything under 12% is fragile — one stacked discount code or a fulfilment cost increase turns it negative.
Discount the hero. Price the filler at or near its individual break-even and apply the visible discount to the item customers care about. This preserves total bundle contribution while still creating the perceived saving — the hero-plus-filler pattern most apparel and beauty stores land on.
GWPs raise the floor by the full COGS and fulfilment cost of the 'free' SKU. If the gift costs €6 to source and ship, your effective floor on the paid SKU is €6 higher than a non-GWP promo. Many stores under-price GWP triggers because they treat the gift as marketing spend rather than bundle cost.
Yes. Once bundle weight crosses shipping-tier thresholds (typically 1kg, 2kg, 5kg), fulfilment cost jumps discontinuously and can overtake per-unit margin. Recompute the floor at the actual shipping tier the bundled weight lands in, not the average shipping cost per order.
Only if cycle-two retention pays it back. If your cohort retention from starter box to second box is above 55-60%, a negative first-box contribution can be recovered by month three. Below that, you're subsidising churn and the starter bundle needs to hit the same floor as one-time bundles.
Bundle discount plus sitewide code is multiplicative on revenue but not on cost. A bundle at 35% off plus a 15% welcome code is effectively 44.75% off — well past the floor for most mixed-margin bundles. Either block code stacking on bundle SKUs or price the bundle assuming stacking will happen.
Every time COGS moves more than 3%, every time shipping rates change, and quarterly regardless. Bundle floors drift silently — you don't notice until the P&L shows margin compression in a category you thought was healthy. Set a recurring review tied to supplier invoice updates.
Get an AI expert review of your site
Paste your URL — Metricuno's AI runs the same heuristic checks a senior CRO consultant would, scoring your page and prioritising the fixes that'll move conversion fastest.