Why 25% off could be a 0% profit sale (and how to spot it before launch)

A 25% discount can deliver 0% profit once fulfillment, ads, refunds, and fees stack up. Pre-launch discount modeling is the 15-minute habit that catches it before you press go. Not after the damage is done.

This article is best viewed on desktop

 

The Problem with Discounting on Instinct

Most ecommerce sellers run discounts on instinct. The logic is simple. Cut the price. Sell more. Make more total profit.

The logic works in retail. It does not work online. A retail store has two real costs per sale: the product and a small payment fee. The store, the staff, the lights are fixed. They do not move when you discount.

An ecommerce store has six costs per sale. Every one of them moves when you discount. That is the gap.

If you do not model the six before you launch, you can run a campaign that sells more units and still loses money.

In this article we will show you the numbers and how to model a discount before launch to make sure you make a profit and not just sales.

What to Avoid
  • Copying retail discount math without checking the per-order numbers.
  • Assuming higher volume always covers a smaller margin.
  • Leaving 3PL, ad spend, returns, and processor fees out of the model.
  • Running a promotion before you build the spreadsheet.
  • Scaling a campaign because revenue looks good while contribution is negative.
What You Should Do
  • Model your discount before any campaign
  • Use all 6 cost items: Cost of Goods (COGS), Discounts, Refunds, 3PL & Outbound Shipping, Channel Fees and Commissions, Ad Spend
  • Make sure you do this for every SKU you want to promote
  • Get the data from your accountant
  • Always look at discounts in conjunction with ad-spend
Definitions
  • Gross Profit = Sell Price minus Cost of Goods Sold.
  • Contribution per Order = Sell Price minus all six direct variable costs (cost of goods, 3PL and shipping, ad spend, baseline returns, baseline discount, payment processor). Contribution is what is left to cover fixed costs like rent, salaries, and software.
  • Cost of Goods Sold (COGS) = the landed unit cost of the product itself, including freight in and import duties — the cost line that scales one-to-one with units sold.
Modeling notes
  • All costs in the tables below are stated per order (one customer checkout), not per unit.
  • The 38 percent gross profit benchmark in the story is a premium skincare profile; adjust to your own gross profit when modeling.
  • Ad spend rises under deeper discounts because the platform's auction spends more aggressively when conversion improves.
Rate-basis disclosures
  • Channel Fees / Payment Processor: typically 2.9% + $0.30 per transaction on Shopify Payments / Stripe; calculated on the full captured amount.
  • Baseline Returns: 3% of revenue at full price; rises modestly under deeper discounts (discount-driven shoppers return more).
  • Ad Spend: $6.50 per order at full price, climbing to $12 per order at 25% off as the auction tightens.

Fatima's Black Friday Math

Fatima runs a premium skincare brand on Shopify. Average sell price $50. Average cost of goods $31. In a normal month she ships about 1,000 units and earns $4.80 of contribution per order — roughly $4,800 a month after the variable costs.

Last Black Friday she ran 25 percent off. Her thinking: cost of goods is $31, so cutting the price to $37.50 still leaves $6.50 of gross profit per order. Run hard on ads, push 2,000 units, walk away with $13,000.

The weekend hit. She shipped 2,100 units. Revenue $78,750. She felt good.

On Monday her accountant ran the contribution numbers. Per order: minus $13.15. Across 2,100 units: a $27,615 hole. Not earned. Cost.

What Fatima had forgotten: 3PL pick-and-pack and shipping at $4.50 per order. Ad spend that doubled because the discount fed the platform's auction. Refund handling. Payment processor fees. A small baseline platform discount. Five lines, all per order, all variable. The 25 percent cut took contribution from plus $4.80 to minus $13.15.

If Fatima had simply not run the campaign and shipped her usual 1,000 units at full price, she would have earned $4,800 of contribution. The Black Friday "win" had cost her $32,415 of profit she could have kept.

The Six Profit Levers Behind Every Order

Every ecommerce sale moves six cost lines. Some are fixed per unit. Some scale with the discount. All six have to be in the model. The chart below shows how the six split up on Fatima's full-price $50 order.

Fatima's Full-Price Cost Stack on a $50 Order

The cost of goods is fixed per unit. The 3PL pick-and-pack and outbound shipping is also fixed per unit — the box still has to ship at $50 or at $37.50. Ad spend, returns, baseline discount, and processor fees scale with the sale. What is left over after all six is the contribution slice. At full price for Fatima, that slice is just under 10 percent of revenue. There is not much room for a discount to live inside.

Brick and Mortar vs Ecommerce: Same Discount, Different Result

To see why retail discount math does not transfer, line up the same four price points side by side. Both stores sell the same product at $50. Both pay $31 for it. Both carry a small baseline returns and discount allowance. The retail store has no 3PL fee and no ad spend per order. The ecommerce store carries both on every unit.

Brick and Mortar Store — per order economics
ScenarioCamp. Disc.SellCOGSBase Disc.Base Returns3PL+ShipAd SpendPaymentContributionFixed CostBreak Even
Full price$0$50.00$31.00$1.50$1.50$0.00$0.00$0.20$15.80$60,0003,797
10% off$5.00$45.00$31.00$1.50$1.50$0.00$0.00$0.18$10.82$60,0005,545
20% off$10.00$40.00$31.00$1.50$1.50$0.00$0.00$0.16$5.84$60,00010,274
25% off$12.50$37.50$31.00$1.50$1.50$0.00$0.00$0.15$3.35$60,00017,910
Ecommerce Store — per order economics (same product, same price)
ScenarioCamp. Disc.SellCOGSBase Disc.Base Returns3PL+ShipAd SpendPaymentContributionFixed CostBreak Even
Full price$0$50.00$31.00$1.50$1.50$4.50$6.50$0.20$4.80$20,0004,167
10% off$5.00$45.00$31.00$1.50$1.50$4.50$7.00$0.18-$0.68$20,000impossible
20% off$10.00$40.00$31.00$1.50$1.50$4.50$9.00$0.16-$7.66$20,000impossible
25% off$12.50$37.50$31.00$1.50$1.50$4.50$12.00$0.15-$13.15$20,000impossible

At full price, the retail store earns $15.80 of contribution per unit. The ecommerce store earns $4.80. That is the baseline gap, and it widens at every discount tier. At 25 percent off, the retail store still earns $3.35 per unit and can keep running. The ecommerce store loses $13.15 per unit. The harder it sells, the more it bleeds.

How Discounts Break at Each Tier

The chart below shows how the $50 sale is divided up at each tier for the ecommerce store. Each bar still totals $50 — the original sell price. What changes is how the slices stack inside. The green slice at the top is what is left over for the business: contribution. At full price it is positive. At 10 percent off it goes negative. At 25 percent off, the contribution slice is buried below the x-axis as a $13.15 loss per unit.

Ecommerce Cost Stack at Each Discount Tier

Notice two things. The campaign discount itself is the biggest single line added. The less obvious one is ad spend, which almost doubles between full price and 25 percent off. The platform's algorithm spends more aggressively when conversion improves, and the discount makes conversion improve. Two cost lines move sharply, not just one. That is why the math runs off the cliff faster than people expect.

How to Model Before You Launch

Two practical things to do before your next promotion.

Build a one-page model. Excel or Google Sheets. The inputs are the six cost lines for your business at your current channel. The output is contribution per order at each discount tier. Most teams build this in a half hour.

Run every promotion through the model first. If contribution per order at the proposed discount is negative, do not run the campaign. The campaign should be killed at the model stage, not after the books close.

But Will More Volume Make Up the Difference?

"The discount is going to drive 50 percent more volume. Surely that makes up for a smaller margin per unit?"

Look at Fatima. At 25 percent off she shifted 2,100 units instead of her usual 1,000 — more than double normal volume. Contribution per order went from $4.80 to minus $13.15. The volume lift made the loss bigger, not smaller, because every additional unit added to the loss.

The rule: if contribution per order is negative, volume makes the loss worse, not better.

Key Principle

You cannot discount your way out of a six-lever cost stack with a two-lever discount strategy. Either lift the price, lower the costs, or model carefully before you cut.

By the Numbers

  • A typical 38 percent gross profit ecommerce brand earns about 10 percent contribution per order at full price.
  • The same brand moves to negative contribution at just 10 percent campaign discount once ad spend scales.
  • Brick-and-mortar stores typically carry two variable cost lines per sale. Ecommerce stores carry six.