Minimum Discount Floor From Contribution Margin

Metricuno
June 1, 2026
7 min read
Minimum Discount Floor From Contribution Margin — Calculate the maximum discount a SKU can absorb before contribution margin goes negative. The Black Friday and welcome-offer guardrail, in writing.
Quick answer

Reverse-solve your contribution margin to find the deepest discount a SKU can take before each order starts losing money — the guardrail to set before sitewide codes go live.

Quick answer

Your minimum discount floor equals your contribution margin percentage minus the buffer you want to keep. If a SKU has a 55% contribution margin and you want to preserve 10 points of margin after the promo, the maximum discount is 45% off list. Anything deeper puts that order into negative contribution territory before you've paid a cent of overhead, CAC, or returns.

Definition
Pricing & Promotions

Minimum Discount Floor From Contribution Margin

The deepest promo discount a SKU can absorb before its per-order contribution margin turns negative.

The minimum discount floor is the percentage-off ceiling you derive by reverse-solving the contribution margin formula. You take revenue per unit, subtract COGS, payment fees, fulfilment, expected returns, and any variable shipping subsidy — what's left is the room a discount has to live in. Push the discount past that room and every additional order destroys cash rather than creating it.

Heads of E-commerce use this number as a written guardrail before approving Black Friday codes, welcome offers, or stacked promotions. It is not a marketing target; it is a hard stop.

Also known as
maximum safe discount
margin-preserving discount ceiling
promo floor

Most store owners set discount depth by feel — 20% for newsletter, 30% for Black Friday, 40% if last year's revenue target is slipping. Feel is fine until a SKU with thin margin gets caught in a sitewide code.

The floor exists because contribution margin is what's left after every variable cost that scales with the order. Discount the price and you don't reduce COGS, payment fees, or pick-and-pack — you only reduce the revenue side of the equation. The gap closes fast.

Why contribution margin goes negative faster than you expect

Take a €60 apparel SKU at 55% contribution margin. That €33 of margin has to cover Shopify payment fees (~2.5%), pick-and-pack (~€3.50), and an expected return rate (~8% on apparel). After those variable costs, the true margin sitting on top of COGS is closer to 42%, not 55%.

Apply a 40% sitewide code and you've burned through almost everything. One return on that order — at full reverse-logistics cost — and the order is negative. This is the mechanism behind the post-BFCM P&L surprise that finance flags in January.

The number on your gross margin report is not your floor

Gross margin in Shopify reports = (price − COGS) / price. That number ignores payment fees, fulfilment, returns, and any free-shipping subsidy. Use it as your discount floor and you will routinely sell at a loss during promotions. Always compute the floor from contribution margin, not gross margin — pull the full per-order variable cost stack into the calculation.

How to detect SKUs that are already below the floor

Run a post-promo cohort report on every SKU that moved during the last sitewide event. Group orders by the discount code applied, then compute realised contribution margin per order (not per SKU sold) including returns booked in the 30-day window after the order date.

Three signals tell you a SKU breached its floor: realised CM% sits below your target threshold, return-adjusted CM is negative on a non-trivial share of orders, or repeat-order rate from that cohort underperforms full-price cohorts by more than 15 points.

The third signal matters because deep discounts attract one-time discount hunters. If your welcome-offer cohort never repurchases at margin, the floor question expands — see the welcome-offer ceiling spoke for the CAC-payback variant of this calculation.

Safe discount floors by category

Benchmark

Indicative maximum discount before per-order contribution margin turns negative, by vertical

CategoryTypical CM%Variable cost dragFloor (margin-positive)Floor (15% CM preserved)
Beauty / skincare70-78%~6%62-70%47-55%
Apparel (full price)55-65%~13% (returns heavy)42-52%27-37%
Footwear50-58%~15%35-43%20-28%
Consumer electronics25-35%~5%20-30%5-15%
Home & kitchen45-55%~9%36-46%21-31%
Supplements / consumables65-75%~7%58-68%43-53%

Use the right-hand column when you want to actually make money on the promo order, not just break even. Electronics is the sharpest example: a 20% Black Friday code on a SKU with 30% CM and 5% variable drag leaves roughly 5 points to absorb returns and any paid-acquisition cost on the order.

How to enforce the floor before codes go live

Tag every SKU in Shopify (or your PIM) with its computed floor. Then exclude any SKU whose floor is below the planned sitewide depth from the promotion entirely — either via collection-based code restrictions or by raising the list price ahead of the sale so the effective discount lands above the floor.

Watch for stacking. A 15% welcome code on top of a 30% sitewide code is a 40.5% combined discount, not 45% — but it still breaches most apparel floors. The stacked-code floor spoke covers the compounding math and the Shopify Functions rule that prevents it at checkout.

Experiments worth running once the floor is set

Test discount depth, not just discount existence. A common BFCM experiment: 30% sitewide vs 20% sitewide + free shipping on orders over €75. The second variant often holds revenue while protecting CM by 6-9 points because the free-shipping threshold lifts AOV. Pair this with the free-shipping threshold spoke.

Also test anchor framing. A 25% code framed as "€15 off your first order" on a €60 AOV converts within 2-3 points of the percentage framing but causes less reference-price damage long-term — the anchoring-damage spoke documents why a 40% code keeps depressing full-price conversion for 6-8 weeks after the promo window closes.

Frequently asked

Frequently asked questions

A discount floor protects margin on a promotional sale of an actively-selling SKU; a markdown floor is for clearing slow-moving or end-of-life inventory where the goal is recovering cash, not margin. The math is different — markdowns can legitimately go below contribution margin if the alternative is write-off. See the discount-floor vs markdown-floor spoke for the decision rule.

SKU level for any product that represents more than ~5% of revenue or has unusual variable costs (heavy returns, oversized shipping, fragile packaging). Category-level averages are fine for the long tail, but a sitewide code applied to a category average will still breach the floor on the lowest-margin SKUs inside it.

Yes. If you normally charge €6.90 shipping and absorb it during a promo, that's a real per-order variable cost addition. On a €50 order, free shipping is the equivalent of a ~14% additional discount on top of any code applied. Build it into the floor calculation explicitly.

If the promo is targeted to acquire new customers via paid channels, CAC has to come out of the same order's contribution margin unless you're underwriting it against expected LTV. That dramatically tightens the floor — often by 15-25 points. The paid-acquisition discount floor spoke walks through the same-order vs LTV-payback math.

Welcome offers are a separate case because first-order CM has to repay (a share of) CAC. A typical rule: the welcome discount cannot exceed contribution margin minus your blended new-customer CAC expressed as a percentage of AOV. For most stores in the €1-15M band that lands at 10-20%, not the 25-30% you'll see on competitor sites.

Only if you have hard data on cohort LTV by acquisition channel and discount tier. Subscription brands legitimately operate below the floor on first box because predictable recurring revenue repays the loss in months 2-4 — see the subscription first-box spoke. For one-shot products without strong repeat behaviour, going below the floor is a structural cash leak, not an acquisition strategy.

Bundles pool margin across SKUs, so the floor depends on the mix, not the headline price. A bundle pairing a high-CM hero SKU with a low-CM accessory can absorb a deeper discount than either SKU alone — but only if the bundle is enforced (no "add to bundle" loophole that strips out the high-margin item). The bundle floor spoke covers MOQ and mix mechanics.

Yes — at 2.5-3% they're worth roughly 3 points of discount room. Klarna, Afterpay, and other BNPL options run 3.5-6%, which can shave another 1-3 points. If your BFCM traffic skews toward BNPL (it usually does on apparel and electronics), model the blended payment mix you actually expect, not your annual average.

Always. A 12% return rate on apparel means roughly 12% of orders generate zero revenue but still incur outbound fulfilment, inbound logistics, restocking, and sometimes refurbishment. Spread across all orders, that's typically 4-7 points of additional margin drag. Categories with low return rates (consumables, beauty) need less buffer.

Quarterly at minimum, and any time COGS moves by more than 5% — which during the current freight environment is often. Many heads of e-commerce tie the recompute to their quarterly contribution-margin review, then re-publish the SKU floor table to marketing before each major promo window.

Test ideas before you ship them

Run unlimited A/B tests, attach hypotheses to outcomes, and build a searchable archive of what works — and what doesn't.