How to Calculate Wholesale Price: Markup vs Margin
Calculate wholesale price the right way: landed cost, margin vs markup, carton pricing, discounts and credit terms, with a worked 50-carton example.

To calculate wholesale price, take your landed cost per unit and divide it by (1 − your target gross margin). A product that costs $1.65 landed, sold at a 25% margin, should be priced at $2.20 a piece or $52.80 for a 24-unit carton. Most pricing mistakes come from using markup instead of margin, pricing on the supplier’s price instead of landed cost, and forgetting what discounts and credit terms take back.
If you want to run these numbers on your real stock, you can try WholeStock free on WordPress.org while you read.
Why does wholesale pricing go wrong so often?
Wholesale pricing goes wrong because margins are thin, so small errors wipe out most of the profit. Statistics Canada’s Annual Wholesale Trade 2023 report puts wholesalers’ gross margin at 15.9% of operating revenue and operating profit at just 4.6%.
With that little room, three habits do the damage:
- Pricing on the supplier invoice. Freight, customs and handling are left out, so every unit costs more than you think.
- Confusing markup with margin. A “25% markup” gives you a 20% margin, not 25%.
- Pricing once and never again. The next shipment arrives at a higher cost, but the price list stays the same.
Raising prices later is hard. In Simon-Kucher’s Inflation Pricing Study of more than 3,000 companies, respondents expected to pass on only 30% of their cost increases on average. Getting the price right at the start matters more than fixing it later.
What is the difference between markup and margin?
Markup is profit as a percentage of cost; margin is profit as a percentage of selling price. As Xero’s glossary explains, buying at 60 and selling at 100 is a 66.7% markup but a 40% margin.
The two formulas:
- Markup % = (price − cost) ÷ cost × 100
- Margin % = (price − cost) ÷ price × 100
Here is what the mix-up costs on one shipment of 50 cartons, 24 units each, with a landed cost of $1.65 per unit:
| Method | Price per unit | Price per carton | Real margin | Profit on 50 cartons |
|---|---|---|---|---|
| 25% markup ($1.65 × 1.25) | $2.06 | $49.50 | 20.0% | $495 |
| 25% margin ($1.65 ÷ 0.75) | $2.20 | $52.80 | 25.0% | $660 |
Same “25%”, a $165 gap on a single shipment. Across a year of shipments, that gap is often the difference between a good year and a flat one.

How do you calculate wholesale price step by step?
Calculate wholesale price in six steps: find landed cost, pick a target margin, apply the margin formula, convert to your selling units, test discounts and credit, then re-check each new batch.
- Find the landed cost per base unit. Our example shipment: 50 cartons at $36 each ($1,800), plus $180 for freight and customs. That is $1,980 ÷ 1,200 units = $1.65 per unit. Our guide on how to calculate landed cost per unit covers duties, insurance and allocation in detail.
- Choose a target gross margin. Base it on what the product must earn after overheads. A fast-moving FMCG line can run thinner than a slow, bulky building-materials item.
- Apply the formula. Wholesale price = landed cost ÷ (1 − target margin). At 25%: $1.65 ÷ 0.75 = $2.20 per unit.
- Convert to the units you sell. One carton = 24 units, so the carton price is $52.80. If you also sell loose pieces, add a break-pack premium, for example $2.40 a piece, to cover the extra handling.
- Test discounts and credit terms. Check what the price looks like after your usual trade discount and payment terms (see the next section).
- Re-check on every new batch. When the next shipment lands at a different cost, recalculate before you quote.

How do discounts and credit terms change your margin?
Discounts come straight out of profit, not out of price. A 5% discount on a $52.80 carton cuts the price to $50.16, but profit falls from $13.20 to $10.56 per carton. That is a 20% drop in profit, and your margin slides from 25% to about 21%.
Credit has a cost too. Say a retailer buys all 50 cartons ($2,640) and pays in three parts over 60 days. If that money would otherwise cost you 12% a year in a bank facility, carrying the balance costs about $52, or roughly 8% of the $660 profit. That is why many wholesalers quote a slightly better price for cash and a standard price for credit customers.
To keep credit under control, track every part-payment against the order. Our guide on tracking customer dues in a wholesale business shows a simple system.
Price every carton from real costs
WholeStock is free on WordPress.org. Record your shipments, sell in cartons or pieces, and see profit per batch, without a monthly SaaS bill.
How does WholeStock help you price for profit?
WholeStock is a free WordPress plugin that records what each shipment really cost, so your wholesale price is based on real numbers rather than memory. It runs standalone, with no WooCommerce needed, and stores everything in your own WordPress database.
Here is the same example in WholeStock:
- Set up units once. Create the product with a base unit of “piece” and a custom unit “carton = 24 pieces”.
- Receive the shipment. Record 50 cartons from the supplier with the per-unit cost and reference number. WholeStock’s landed cost feature adds the shipment’s extra costs, such as freight and customs, to each item’s unit cost.
- Sell from the batch. Create sales orders priced per carton or per piece. Each line is drawn from that shipment’s batch, and overselling is blocked.
- Record payments. Log a retailer paying in three parts by cash, bank transfer, mobile or check. The order status and the customer’s due balance update on their own.
- Check profit per batch. Batch stock and profit/loss show cost, revenue and profit for that shipment, visible only to administrators. Editor-level staff can take orders without seeing your costs or margins.
When you want the bigger picture, WholeStock Pro adds revenue, margin and cash-flow analytics, order discounts with a reason that flow into invoices, dues and profit, batch profit reports and customer ledger statements. You can see if a discount or a customer is quietly eating your margin.
Common questions before switching
- “Is it expensive?” The free core on WordPress.org is a complete inventory system. Pro starts at $49 a year for one site, or $149 once for a lifetime licence, with no per-seat fees, order caps or monthly rent.
- “Is my data safe?” It stays in custom tables in your own WordPress database. Nothing is sent to external servers.
- “What if Pro doesn’t fit?” Pro has a 14-day, 100% money-back guarantee.
- “Will it run on my hosting?” It needs WordPress 6.2+ and PHP 8.0+, which standard hosting provides.
For the wider setup, see our practical guide to wholesale inventory management.
FAQ
What is the formula for wholesale price?
Wholesale price = landed cost per unit ÷ (1 − target gross margin). For a $1.65 unit at a 25% margin, that is $1.65 ÷ 0.75 = $2.20.
What is a good wholesale profit margin?
It depends on the product and your overheads. Statistics Canada reported an average wholesale gross margin of 15.9% in 2023. Price each line to cover overheads and credit terms; slow or bulky items usually need more.
Is a 25% markup the same as a 25% margin?
No. A 25% markup gives a 20% margin. To earn a 25% margin you need a 33.3% markup.
Should I price per carton or per piece?
Price per carton for full-case buyers and add a break-pack premium for loose pieces, since splitting cartons adds handling time and risk.
How often should I update wholesale prices?
Recalculate whenever a new shipment arrives at a different landed cost, and review your full price list at least once a quarter.
Can WholeStock calculate profit per shipment?
Yes. WholeStock shows cost, revenue and profit/loss for every batch, visible only to administrators. WholeStock Pro adds margin analytics and batch profit reports.
See where your margin really goes
WholeStock Pro adds revenue, margin and cash-flow analytics, order discounts and batch profit reports. One price, unlimited users, and a 14-day money-back guarantee.
Get new articles & release notes in your inbox
Sign up for updates on our upcoming releases. No spam — unsubscribe anytime.