Minimum Margin Protection for Wholesale Pricing on Shopify
Margin-based wholesale tiers plus a minimum-profit floor, with the difference between markup and margin and the limits of cost-based protection.
A wholesale tier set as a percentage off the selling price ignores cost, so rising supplier costs erode profit. Basing tiers on profit margin shrinks the discount as cost rises, and a minimum-profit floor (cost plus a markup or fixed amount) caps it. Protection depends on accurate Shopify Cost per item and excludes fees, shipping, and combined discounts.
At a glance
- Challenge
- Wholesale tiers set as a percentage off the selling price kept the same discount after supplier costs rose, cutting one switch's margin from 17.0% to 2.6%.
- Approach
- Wholesale / B2B Pricing based on profit margin, profit protection with a minimum profit per unit, a deliberate missing-cost rule, and gross profit tracking.
- Discount Prime campaign types used
- Wholesale / B2B PricingProfit Floor
Scenario-based case study: the merchant is fictional and modeled on patterns across Discount Prime stores. Prices, costs and outcome figures are illustrative assumptions for teaching, not measured results from a real store.
Short Answer
A wholesale discount set as "X% off the selling price" keeps cutting the same share of the price even after supplier costs rise, so a product can drift to near-zero or negative profit without any rule failing. In Discount Prime's Wholesale / B2B Pricing, the fix has two parts:
- Base the tiers on profit margin, so each tier discounts a share of (price minus cost) instead of a share of the price. When cost rises, the discount shrinks with it.
- Turn on profit protection with a minimum profit, so no tier can price a unit below cost plus that minimum.
This protects the wholesale price of products that have an accurate Shopify cost. It is not a guarantee that every order is profitable: it depends on cost data, ignores fees and shipping, and does not cover other discounts the customer combines. The sections below show where the limits are.
Scenario
BrightSource Distribution is a fictional Shopify wholesaler of networking and office electronics, selling to logged-in trade accounts. Its wholesale tiers were set as a percentage off the selling price. One enterprise switch shows the problem.
Illustrative assumptions: retail price $899.00, top wholesale tier 18% off the selling price, order of 60 units. Gross profit below means price minus Shopify unit cost; payment fees, shipping, and returns are excluded.
| Cost $612 (original) | Cost $718 (supplier increase, retail unchanged) | |
|---|---|---|
| Wholesale price (18% off $899) | $737.18 | $737.18 |
| Gross profit per unit | $125.18 | $19.18 |
| Gross margin (profit ÷ price) | 17.0% | 2.6% |
| 60-unit order: revenue / gross profit | $44,230.80 / $7,510.80 | $44,230.80 / $1,150.80 |
Nothing malfunctioned. A selling-price discount simply has no idea what the product costs.
Markup and Margin Are Different Numbers
Profit floors are easy to misread, so define the terms first:
| Term | Formula | Example: cost $100, price $120 |
|---|---|---|
| Markup on cost | (price − cost) ÷ cost | 20% |
| Gross margin on price | (price − cost) ÷ price | 16.7% |
Discount Prime's wholesale "Keep minimum profit" is a markup on cost. A percentage setting of 20% means the floor is cost × 1.20, which is a 16.7% gross margin, not 20%. To guarantee a gross margin M, enter a markup of M ÷ (1 − M): 20% margin needs 25% markup, 15% margin needs about 17.6%. (Product Bundle profit protection, by contrast, is defined as margin on price. Do not copy a number between the two without converting it.)
Alternatives Compared
| Approach | Fits when | Does not fit when |
|---|---|---|
| Review large orders manually | Low order volume, a few key accounts | Hundreds of daily orders; it catches problems after the sale |
| Lower the blanket discount | Narrow catalog with similar margins | Mixed margins: it underprices nothing and overprices the healthy products |
| Fixed price lists per tier (native Shopify B2B catalogs, where your plan supports them, or a spreadsheet) | You negotiate exact prices per account and update them deliberately | Thousands of SKUs whose costs move often |
| Selling-price tiers with a manual price floor (Discount Prime) | Products in a narrow price band; you want one dollar minimum | Wide price ranges: one dollar floor cannot fit a $20 cable and a $900 switch |
| Profit-margin tiers with minimum profit (Discount Prime) | Accurate Shopify costs; margins differ by product; costs change | Cost data is missing or stale (see below) |
Note: "B2B" in Discount Prime means customer segments, specific customers, purchase-history conditions, or logged-in customers. It does not use Shopify's B2B companies and locations.
The Recommended Setup
| Setting | Value in this scenario | Why |
|---|---|---|
| Campaign type | Wholesale / B2B Pricing | Checkout pricing for eligible customers only |
| Based on | Profit margin | The tier value applies to (price − cost) |
| Top tier value | 56% of margin | Roughly reproduces today's wholesale price at the original cost |
| Profit protection | On, keep minimum profit $45 per unit (fixed) | High-ticket item where every unit must fund a fixed contribution |
| If a variant has no cost | Skip this variant | Prevents a discount with no floor (see edge cases) |
| Eligibility | Wholesale customer segment or specific customers | Restricted eligibility requires the customer to be logged in |
Why 56%: at the original cost, 18% off the price was $161.82, which is about 56% of the $287 margin ($738.28 instead of $737.18). Choosing the margin share that matches today's price means trade accounts see no change until costs move. To adapt it, divide your current wholesale discount in dollars by your current margin in dollars.
What Happens as Cost Rises
Same product, same assumptions. The floor is cost + $45.
| Unit cost | Selling-price tier (18% off) | Margin tier (56% of margin) | Floor applied? | Gross profit per unit (margin tier) |
|---|---|---|---|---|
| $612 | $737.18 | $738.28 | No (floor $657) | $126.28 |
| $718 | $737.18 | $797.64 | No (floor $763) | $79.64 |
| $820 | $737.18 (a loss of $82.82) | $854.76 computed, $865.00 charged | ✓Yes | $45.00 |
Two lessons from the table:
- Most of the protection comes from the margin base, not the floor. At $718 the floor never triggers; the discount shrank on its own.
- The customer sees the change. At $718 the trade price is 11.3% below retail instead of 18%; at $820 it is 3.8% below. Accounts on negotiated pricing may object. If the cost increase is permanent, raising the retail price (for example with a percentage Bulk Price Update) may be the better conversation than a shrinking wholesale discount.
Choosing the floor per category
| Category | Floor setting | Resulting floor | Gross margin at the floor |
|---|---|---|---|
| Enterprise networking | Fixed, cost + $45 | $763 on a $718 cost | 5.9% |
| Office electronics | Percent, cost + 12% | cost × 1.12 | 10.7% |
| Accessories | Percent, cost + 20% | cost × 1.20 | 16.7% |
A fixed floor suits high-ticket items where a percentage would be tiny in dollars; a percentage floor scales with cheap items. Set the floor from what each unit must cover beyond its cost (fees, pick and pack, outbound shipping you absorb), not from a benchmark.
Limits and Edge Cases
- Cost comes only from Shopify's Cost per item. A cost of 0 counts as missing. Costs you enter in the app are written back to Shopify. Active wholesale prices are re-checked automatically shortly after a price or cost changes, so the floor is only as current as the cost field.
- Cost scope. If Cost per item excludes inbound freight or duties, the floor is understated by that amount.
- Missing cost. With "Apply discount on selling price instead", the tier value is applied to the selling price with no floor: a 56% margin tier becomes 56% off list. With "Skip this variant", the product sells at its normal price. Check which rule is selected rather than relying on a default.
- Selling-price base has no cost floor. Profit protection applies when tiers are based on profit margin; the selling-price base only has the manual price floor.
- Adjust cents runs after the floor. A .00 ending turns a $865.40 floor into $865.00. Use .99 or keep a buffer.
- Fixed amount for all items together. A lump discount is split across lines, each clamped at its floor, with any remainder moved to lines that still have room; the customer can receive less than the advertised amount.
- Other discounts are outside the floor. A Shopify discount code or an order-level campaign that combines with the wholesale price can push the order below your intended profit. Tiered, order, shipping, and flat campaigns have no cost floor of their own.
- Plan. Wholesale / B2B Pricing requires the Prime plan or above, and the number of live variants is capped by plan. An 18,700-product catalog needs a plan whose limit covers it; check the in-app Plans page.
Pre-launch Tests
| Test input | Expected result |
|---|---|
| Logged-in wholesale account, product with cost $718 | $797.64 per unit |
| Same account, product whose cost you raise to $820 in Shopify | After the automatic re-check, $865.00 |
| Guest or non-eligible customer | Retail price |
| Product with no cost, rule "Skip" | Retail price |
| Product with no cost, rule "Apply" | Tier applied to selling price, no floor (confirm this is acceptable) |
| Wholesale cart plus a Shopify discount code | Check the combined price against your floor |
Measurement
- Primary metric: gross profit per wholesale order, from Discount Prime's Estimated Profit (cost of goods, discount, and shipping subsidy deducted; lines without cost are excluded).
- Guardrail: wholesale units and reorder rate per account. A shrinking discount can move volume to competitors.
- Data health: count of campaign variants missing cost, and how old the last cost update is.
- Compare against: the same accounts before the switch, keeping in mind seasonality and account mix. Before/after alone does not prove the change caused the result.
- Next decision: if the floor triggers often on one category, its retail price or supplier terms need attention, not a lower floor.
Frequently asked questions
How do I stop wholesale discounts from selling below cost on Shopify?
In Discount Prime's Wholesale / B2B Pricing, base the tiers on profit margin and turn on profit protection. Each tier then discounts a share of price minus cost, and no unit that has a Shopify cost is priced below cost plus your minimum profit (a .00 Adjust cents ending can round a few cents under it). Tiers based on the selling price have only a manual dollar floor, not a cost floor. The floor uses Shopify's Cost per item, so it is only as accurate as that field.
Is a minimum profit of cost plus 20% the same as a 20% margin?
No. Cost plus 20% is a 20% markup on cost, which is a 16.7% gross margin on the selling price. Discount Prime's wholesale and dropshipping floors are defined as markup on cost; its bundle floor is defined as margin on price. To guarantee a margin M, enter a markup of M divided by (1 minus M): a 20% margin needs a 25% markup.
Should a wholesale profit floor be a fixed amount or a percentage?
It depends on price level. A fixed minimum, such as cost plus $45, suits high-ticket items where a percentage would be small in dollars. A percentage, such as cost plus 12% or 20%, scales with cheap, high-volume items. Set the number from what each unit must cover beyond its cost, such as payment fees, handling, and shipping you absorb, rather than from a generic benchmark.
Does a profit floor guarantee every wholesale order is profitable?
No. It caps the wholesale price for products that have a cost. A product with no cost under the apply rule is discounted with no floor, and the floor ignores fees, shipping subsidies, and returns. Other discounts that combine at checkout, such as Shopify discount codes or order-level campaigns, are not limited by it. Test a full cart, including any codes your buyers use.
Will wholesale customers notice when costs rise?
Yes, if tiers are based on profit margin. The discount is a share of the margin, so when cost rises the trade price rises too. In the example, a switch went from 18% below retail to 11.3% below at a $718 cost. If the increase is permanent, raising the retail price may be a clearer change for accounts on negotiated pricing than a shrinking discount.
Go deeper
Run this architecture in your store
Every campaign type in this case study is included in Discount Prime, with profit analytics to verify the margin impact.