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.
Best viewed on desktop This article is built around full-width charts and data tables. On mobile they may appear truncated. For the complete picture, open this page on a desktop or tablet in landscape mode.

The Problem with Borrowing Retail Discount Math

When founders use discounts, they believe they can sell more units at a smaller profit margin and therefore make more money in total. In their minds, selling more units makes more money in total.

This belief is strengthened by watching how much money big-box retailers like Walmart and Costco make each year. If they do it, it must work, right?

The problem is that retail discount math is very different from ecommerce discount math. They are not the same.

In retail, sales often only have two variable cost line items: the product cost and the credit card fee. That is it. If you cut 25% off the price you still walk away with money.

In ecommerce, the same sale can have up to six variable cost line items. We call these the Six Profit Levers:

The Six Profit Levers in Ecommerce
  1. The product cost What you paid to have it made and shipped into your warehouse.
  2. Discounts Often used to convince strangers to buy from you because you do not have a big brand yet.
  3. Returns Not only the money the customer gets back, but also the cost of getting the item back into your warehouse and re-stocked.
  4. Warehousing and outbound shipping to the customer 3PL storage allocation, pick, pack, and the courier cost to the customer's door.
  5. Ad spend to drive traffic to the online store Google Ads, Meta, and the rest of your paid channels.
  6. Payment processor and channel fees Card fee plus any platform commission on the captured amount.

Since all six of these levers take a slice of the profit you make on each sale, you need to keep them all in mind before you run any promotion that uses a discount.

In this article, you will learn how to model your own discount campaign so you actually make more money.

1. Example showing you the numbers

Your Shopify skincare store

Imagine you own a Shopify store that sells skincare products. Your best product is a face cream you sell for $100 per jar.

For the last six months you have been using free shipping plus a 10% discount coupon to get new customers to buy from you. See the numbers on the adjacent table.

Your bank balance showed you that you were making money.

You get the idea of running a 25%-off Black Friday promotion. The assumption you are working on is that if you move more stock, you will make more money.

What you think happens on each sale

You apply retail math to your Black Friday sale: drop the price by 25%, pay for the product, keep the rest.

Selling price+$100
Campaign discount (25%)−$25
Product cost−$40
You think you keep$35

The promotion runs

Black Friday rolls around and you ramp up your Google Ads and Meta advertising. Since you are chasing volume to make more money, you make sure you drive enough traffic to your store.

What you don't realise is that you missed crucial costs in your profit calculations. Since you forgot to account for ad spend, shipping, baseline returns and your payment processing fees, you end up losing $10 per sale. Instead of making money you are now making a loss.

In reality, when you were running free shipping and giving a 10% discount, you were only making $5 per sale — but because you did not factor in all your costs, you were quietly running a thinner margin than your bank balance was suggesting.

What actually happens on each sale

Once you load all six profit levers into the math, the picture changes. The same Black Friday sale, with the lines underneath included.

Selling price+$100
Campaign discount (25%)−$25
Product cost−$40
Ad spend−$25
3PL and outbound shipping−$12
Baseline returns−$5
Payment processor−$3
You actually lose−$10

The Discount Model

Here is the same skincare order modelled at six discount tiers, holding every other lever flat. Read the contribution row at the bottom — that is the only number that matters.

Line Item 0% 5% 10% 15% 20% 25%
Selling price$100$100$100$100$100$100
Product (COGS)$40$40$40$40$40$40
Gross Profit$60$60$60$60$60$60
Discount$0$5$10$15$20$25
Ad spend$25$25$25$25$25$25
3PL and outbound shipping$12$12$12$12$12$12
Baseline returns$5$5$5$5$5$5
Payment processor$3$3$3$3$3$3
Contribution per order$15$10$5$0−$5−$10

How the costs stack

The cost stack at each discount tier — where the $100 goes

The dashed line marks the $100 selling price. When the cost stack rises above the dashed line, you are losing money on every sale. Notice the crossover at exactly 15%.

Read the bottom row. Every 5% of discount costs you $5 of contribution per order. By the time you hit 15% off, contribution is at zero — the order is a wash. Past 15%, every sale loses you money. The 25% Black Friday promotion turns into a $10 loss on every single jar shipped.

Three patterns to spot on the chart:

  1. The discount slice grows at every tier.
  2. The fixed-per-unit levers underneath (product, ad spend, warehousing and shipping, payment processor) do not move at all — they sit there absorbing nothing.
  3. The cost stack crosses the $100 selling-price line at exactly 15% off. That is the threshold. Past it, every order is a loss, and the loss grows by $5 for every additional 5% of discount.

2. How to model your discounts

Discounts are not inherently bad. They are a useful tool, but they need to be used with discipline. This is how you should treat them:

Discounts should be viewed as a type of advertising cost.

Discount per order $25
+
Ad spend per order $25
=
True cost to acquire $50

It is best to look at discounts and ad costs together since the total is your effective cost of acquiring the customer. At 0% off you are paying $25 per order to acquire the customer. At 25% off you are paying $50 — twice as much — for the same customer. If you would not double your ad budget overnight, do not double your acquisition cost by stacking a discount on top.

  1. Model before you implement. The best way to protect your profits is to model your discounts before you think of implementing them. To do that, you must have access to the other variable cost data.
  2. Build the model once. Excel or Google Sheets. Use the Six Profit Levers to build your own cost stack. The output is contribution per order at each discount tier.
  3. Run every campaign through the model first. Plug in the proposed discount. Read the contribution line. If it is negative, the campaign is a loss disguised as a sale. Either lift the price, lower the costs, or kill the campaign at the model stage. Not after the books close.
The Discipline

The discipline is not in the spreadsheet. It is in the rule: contribution per order is the number, not Gross Profit. If you check Gross Profit, every discount tier looks fine. If you check contribution, you see the floor.

3. Frequently Asked Questions

Won't more volume make up the difference?

"The discount will double our volume. Surely that covers a small loss per order?"

The objection lands in every campaign meeting. No. It does the opposite. An increase in volume compounds whatever the contribution per order is.

Say you sold 1,000 jars at full price. Contribution: $15,000. Now you run 25% off, volume doubles to 2,000 jars, and contribution per order is −$10. Total contribution: −$20,000.

The volume lift did not save you. It made the loss bigger. Every extra unit you sold increased the loss.

The principle: you cannot discount your way out of a six-lever cost stack with a one-lever discount strategy. Lift the price. Drop the cost. Model first. Pick one.

Won't a higher discount drive more sales?

There is a difference between higher volumes and more profit. Brands that are heavily reliant on discounts tend to train their customers to wait for discounts. They can create a negative feedback loop that eats into your profits. Furthermore, discount shoppers tend to be less loyal than regular shoppers. Campaigns with heavy discounts also see higher returns.

If I can't use discounts, what should I do?

Percentage-off discounts are not the only tools available to drive sales. In our Profit Playbook we discuss 6 additional ways, all of which are more profitable, to achieve similar sales results without having to resort to heavy discounts.

Should I not be modelling on Gross Profit?

No. Gross Profit is not a great tool for modelling contribution in an ecommerce business since it neglects to include the other profit levers such as returns, ad spend, 3PL and outbound shipping, and payment processing and channel fees.

What about stacking discounts? Can that work?

In theory, stacking discounts could work, so long as the total discount does not negatively impact the contribution. Practically, however, stacking discounts can be very dangerous. If a rule is set incorrectly, you can very easily lose money.

What about lifting prices? Do I always need a discount?

Lifting prices can be an excellent strategy to maintain contribution margins whilst still using discounts. The downside in heavily contested marketplaces like Amazon and Walmart could be a drop in sales volume. This drop can, however, sometimes be offset by better marketing collateral and content. You would need to see what works best for your business.

4. Quick Reference: What to Avoid and What to Apply

What to Avoid
  • Copying retail discount math without checking the levers underneath.
  • Forgetting that ad spend and discounts both contribute to the cost per acquisition.
  • Assuming volume rescues a loss-making campaign.
  • Modelling on Gross Profit instead of Contribution per Order.
  • Stacking discounts (campaign code on top of standing catalogue discount on top of abandoned-cart code).
What You Should Do
  • Build a one-page model with all six profit levers at different discount points so you can see how discounts affect contribution.
  • Run every campaign through the model before you press launch.
  • Make sure to update your model regularly with the latest information you get from your financials.
  • Stop any campaign that does not show positive contribution.
  • Fix contribution by lifting the price, dropping the discount, or killing the campaign. Not all three at once.
Definitions, modelling notes, and rate-basis disclosures Click to expand — variable cost benchmarks and assumptions used in the worked example above.
Definitions
  • The six profit levers in this framework: (1) Product (COGS – landed product cost per unit), (2) 3PL and outbound shipping, (3) Ad spend, (4) Returns, (5) Discounts, (6) Payment processor and channel fees.
  • Gross Profit equals Sell Price minus COGS.
  • Contribution per Order is Sell Price minus all six lever costs. It is what is left to cover fixed costs (rent, salaries, software, founder pay) and profit.
  • Baseline Returns is the share of revenue lost to expected returns across the catalogue.
  • Baseline Discount is the standing average discount applied across the catalogue before any campaign.
  • Payment Processor is the card and platform processing fee. Typically 2.9% plus 30 cents per transaction on Shopify Payments and Stripe.
Modelling notes
  • All costs in the master table are stated per order, held at clean integer dollars on the $100 sell price for teaching clarity.
  • The premium skincare profile used here has 40% COGS and 60% Gross Profit. Different categories use different ratios. Plug in your own.
  • Ad spend is held flat across tiers in this teaching model. In production models, ad spend often rises modestly at deeper discounts as the platform auction tightens.
Rate-basis disclosures
  • Product (COGS): $40 per unit. Held fixed across every discount tier.
  • 3PL and outbound shipping: $12 per order.
  • Ad spend: $25 per order.
  • Baseline returns: $5 per order (5% of revenue at full price).
  • Payment processor and channel fees: $3 per order.

CronosNow: Numbers you can trust. Info you can use. Insights you can action.