In brief
- The margin floor is the lowest price that still keeps a margin you choose over unit cost, after the card fee, the shipping you pay and the cost of expected returns. No markdown should go under it.
- Without returns or VAT: floor = (cost × (1 + minimum margin) + fixed fee + shipping) ÷ (1 − fee rate). The deepest safe markdown is 1 − floor ÷ price.
- An $80 product that cost $34, with fees of 2.9% + 30¢ and a 10% minimum margin, has a floor of $38.83: up to 51.4% off is safe, and 50% is the deepest 5% step.
- Where prices include VAT, margins are worked out on the price without it, and the card fee is charged on the VAT too, so the floor is a little more than the net floor plus VAT.
Work out a markdown floor by hand
You need five numbers for each product: the price, the unit cost, the card fee (a rate and a fixed amount per order), the shipping you pay per order if you do not charge it, and the share of orders that come back. Then pick a minimum margin over cost: 0% means break even, 10% means every sale must leave at least a tenth of the cost on top.
Each unit you sell has to cover four things: its own cost and your margin, the card fee on its price, the shipping, and its share of the returns. A returned order still paid its card fee, which is not refunded, and costs shipping again to handle; the returned unit goes back into stock, so its cost is not lost.1 With a return rate r, each unit a customer keeps takes 1 ÷ (1 − r) orders.
A worked example. A throw sells for $59.00 and cost $18.00. Card fees are 2.9% + 30¢, you pay $4.50 shipping on every order, 5% of orders come back, and you want to keep at least 10% over cost.
- Top line: 0.95 × $18.00 × 1.10 + $0.30 + 1.05 × $4.50 = $18.81 + $0.30 + $4.725 = $23.835.
- Bottom line: 0.95 − 0.029 = 0.921.
- Floor: $23.835 ÷ 0.921 = $25.879, so $25.88.
- Deepest safe markdown: 1 − 25.88 ÷ 59.00 = 56.1%. The deepest 5% step is 55% off, at $26.55.
To check a price, work out what one kept unit leaves you: price − cost − (fee rate × price + fixed fee + shipping × (1 + r)) ÷ (1 − r). At $26.55 that is $26.55 − $18.00 − ($0.77 + $0.30 + $4.725) ÷ 0.95 = $2.45, just above the $1.80 your 10% asks for. At 60% off, $23.60, it is −$0.41: a loss on every unit.
Shopify Payments on the Basic plan in the US charges 2.9% + 30¢ for online card payments; other plans, countries and payment providers differ, and the fees calculator has the published rates.2 If you keep unit costs in Shopify, the cost per item column in a product export gives you every cost at once.3
With VAT in the price
In the EU, the UK, Australia and most of the world outside North America, shelf prices include VAT or GST. Part of every price is tax you pass on, so your margin is worked out on the price without it: a $100 price with 10% tax in it is $90.91 to you.4 The card fee, though, is charged on the whole amount the customer pays, VAT included. So the floor is the net floor with the VAT put back on, and a little more:
The same throw at £59.00 with 20% VAT included: the bottom line is 0.95 ÷ 1.2 − 0.029 = 0.7617, so the floor is £23.835 ÷ 0.7617 = £31.26, and the deepest safe markdown is 47.0%, not 56.1%. Treating a VAT-inclusive price as if it were all yours is the most common way a "safe" markdown turns into a loss.
Markup, margin and markdown
The three words are easy to mix up, and the mix-up is expensive, because they are measured against different numbers.
| Term | Measured against | $34 cost, $80 price |
|---|---|---|
| Markup | Cost: (price − cost) ÷ cost | 135.3% |
| Gross margin | Price: (price − cost) ÷ price | 57.5% |
| Markdown | The old price: (old − new) ÷ old | $80 → $60 is 25% |
| Margin after a markdown | The new price | ($60 − $34) ÷ $60 = 43.3%, before fees |
Margin = markup ÷ (1 + markup), and markup = margin ÷ (1 − margin). A 100% markup is a 50% margin.
The minimum margin in the calculator is a markup on cost, because that is how a floor is easiest to think about: "never sell for less than cost plus 10%". The margins in the table are shares of the price without VAT, after fees, which is what is left of each sale.
The useful rule: a markdown of the same size as your gross margin takes you to zero before fees. A product with a 57.5% gross margin breaks even somewhere under 57.5% off, and later still once fees, shipping and returns are counted.
How deep to go
The floor tells you how far a markdown can go, not how far it should. A markdown recovers cash that is already stuck; it should not add a new loss to it. A few rules of thumb from clearing stock:
- Start shallow. Around 15% is the least most shoppers notice. Beyond about 50%, more depth rarely sells much more and gives away a lot.
- Step down on a timetable. For example 15%, then 25%, then 40%, a few weeks apart, and stop at the floor. The dead stock guide sets the starting points by how long stock has gone without a sale.
- If the floor is too close to the price, a markdown is the wrong tool. Bundle it with a steady seller, move it to an outlet collection or a wholesale lot, and stop reordering it.
- Before you change any price, record the old prices and preview the new ones. The safe sale checklist walks through it, including how to put prices back when the sale ends. Selling in the EU, the compare-at price must be the lowest price of the 30 days before the sale: the 30-day lowest price checker works it out.
- Waiting is not free either. Stock that sits costs money every day it is held; the holding cost calculator puts a figure on it and shows when waiting costs more than a markdown gives up.
For every product at once
The calculator handles one product. To find which products need a markdown at all, you need units in stock, unit cost and the date of each variant's last sale, product by product. The free dead stock checker works that out from your Shopify product and order exports, in your browser, and suggests a markdown for every variant that stays above cost plus 5%.
Store Diagnosis is our free, read-only Shopify app, live on the Shopify App Store. It finds the stock that has stopped selling, values it at cost, ranks it by the cash tied up and suggests a markdown for each product that never prices below cost plus 5%, with the arithmetic shown. It never changes a price.
Store Diagnosis, free and read-only.
- Dead and slow stock valued at cost
- A suggested markdown per product
- Best-sellers about to run out
- Discounts and refunds that cost margin
Mufatech Clearance is the app that changes the prices, using this same floor: it marks stock down as it ages, previews every change, blocks any price under your floor and puts back exactly the prices it changed when a sale ends. It is coming to the Shopify App Store and cannot be installed yet. When it is listed it will have a Free plan, and Pro at $3.99 a month.
Frequently asked questions
How do you calculate the deepest markdown you can afford?
Work out the margin floor first: the lowest price that still covers the unit cost, your minimum margin, the payment fee, the shipping you pay and the cost of expected returns. Without returns or VAT it is (cost × (1 + minimum margin) + fixed fee + shipping) ÷ (1 − fee rate). The deepest safe markdown is then 1 − floor ÷ price. For an $80 product costing $34, with 2.9% + 30¢ fees and a 10% minimum margin, the floor is $38.83 and the deepest safe markdown is 51.4%.
What is the difference between markup, margin and markdown?
Markup is profit as a share of cost: a $34 item sold at $80 has a markup of 135%. Margin is profit as a share of the price: the same sale has a gross margin of 57.5%. A markdown is a cut in the price, as a share of the old price: $80 to $60 is a 25% markdown. A markdown takes money straight out of margin, so a 25% markdown on a 57.5% margin leaves 43.3%, before fees.
Why does the calculator block a markdown that still makes a profit?
Because it is under your floor. The floor keeps the minimum margin you chose, for example 10% over cost. A markdown that leaves 2% over cost still makes money, but less than you said you would accept, so it is marked as blocked. Set the minimum margin to 0% to see the break-even floor instead.
How does VAT change the markdown floor?
Where prices include VAT, part of every price is tax you pass on, so margins are worked out on the price without VAT, and the floor is that net floor with the VAT put back on. The card fee is charged on the whole amount, VAT included, so the floor ends up slightly above the net floor plus VAT.
Why are returns in the floor?
A returned order still paid its card fee, which is not refunded, and costs shipping again to handle. So each unit a customer keeps carries part of the cost of the orders that came back. With a 10% return rate, a kept unit takes 1.11 orders. The returned units go back into stock, so their cost of goods is not lost.
Is this the same calculation Mufatech Clearance uses?
Yes. The calculator runs the floor formula from Clearance's pricing code, with the same handling of fees, shipping, returns and VAT, and its tests compare the two over thousands of inputs. Clearance is coming to the Shopify App Store and is not listed yet.
Sources
- Shopify Help Center. Shopify Payments refunds: the original credit card transaction fee is not refunded to you when you issue a refund, checked 10 Oct 2026. Other payment providers set their own terms; the calculator assumes the fee is lost, which is the cautious case. vendor-published
- Mufatech Studio. Shopify pricing history: Shopify Payments online card rates by plan since 2019, each dated from Shopify's archived pricing pages, including 2.9% + 30¢ on Basic in the US. compiled
- Shopify Help Center. Using CSV files to import and export products: the Cost per item column, "how much it costs you to make or acquire the product or variant", checked 10 Oct 2026. vendor-published
- Shopify Help Center. Include taxes in product prices: how a tax-inclusive price splits into tax and product, with the $100 at 10% example ($9.09 tax, $90.91 product), checked 10 Oct 2026. vendor-published