Selling wholesale and retail: pricing by customer group
A grocery shop at the market sells single items to people from the neighbourhood and whole cases to small shops out in the provinces. Retail prices are on the shelf labels; wholesale prices live in the owner's head: "Srey takes 5 cases, so 1.90; the guy from Kandal buys a lot, so 1.85; regulars get a little off." On the day the owner is away, staff sell from memory — someone buying 2 bottles asks for the wholesale price, an old wholesale customer gets the price from 3 months ago. At the end of the month revenue looks the same, but profit has dropped and nobody knows why.
This article helps you price wholesale and retail systematically: how low a wholesale price can go and still make money, how to split customers into groups with clear rules, and how to make sure the right price is applied without relying on anyone's memory.
Why "verbal" wholesale prices cost you money
The example used throughout this article: 1-litre bottles of cooking oil, cost 1.60 USD, retail price 2.40 USD (0.80 USD profit per bottle), wholesale price 1.90 USD (0.30 USD profit per bottle).
Every bottle sold to a retail customer at the wholesale price loses the shop 0.50 USD. Say you sell 40 bottles retail a day and 1 in 5 retail customers "talks their way" into the wholesale price:
- 40 × 20% = 8 bottles a day sold at wholesale
- 8 × 0.50 = 4 USD a day, about 120 USD a month
That's one product. In a shop with a few hundred products, this leak can easily equal the rent — and it shows up nowhere, because every single order still "made a profit".
Common ways prices get out of control:
- Each staff member remembers a different wholesale price.
- Familiar retail customers get the wholesale price "to keep them happy".
- Supplier prices go up, but the price quoted to wholesale customers stays the same.
- Nobody knows which customer gets which price, so nobody can check.
How low can a wholesale price go: ceiling and floor
A wholesale price has to sit between two limits.
Ceiling: the wholesale customer still profits when reselling
Wholesale customers buy to resell. If the retail price in the market is 2.40 USD and a reseller needs a margin of about 20%, the most they can pay is:
2.40 × (1 − 20%) = 1.92 USD
Charge more than that and they will find another supplier.
Floor: the shop still makes enough
A lower margin on wholesale than on retail is normal, but there has to be a minimum. Wholesale orders have their own costs: delivery to the provinces, a few days of credit, cash tied up in a large batch of stock. Say the shop sets a minimum wholesale margin of 12%:
Floor price = 1.60 ÷ (1 − 12%) = 1.60 ÷ 0.88 ≈ 1.82 USD
(The formula for pricing from a profit margin is explained in detail in Pricing from cost: markup or profit margin?.)
So a sensible wholesale price is between 1.82 and 1.92 USD. The shop picks 1.90 USD: the reseller selling at 2.40 USD keeps 0.50 USD (20.8%), and the shop makes 0.30 USD (15.8%).
Less profit per bottle — so why sell wholesale?
Compare a day of retail with a single wholesale order:
| Retail, whole day | One wholesale order of 10 cases | |
|---|---|---|
| Bottles | 40 | 120 |
| Profit per bottle | 0.80 USD | 0.30 USD |
| Total profit | 32.00 USD | 36.00 USD |
One wholesale order brings in as much profit as a full day of retail, in one round of packing, with stock leaving the warehouse quickly and cash coming back sooner. But count the cost of the order itself: if delivering 10 cases to Kampong Cham costs 5 USD in transport, profit drops to 31 USD — about 0.26 USD per bottle. And if the shop gives the customer 30 days of credit, that thin profit also carries the risk of never being paid.
Group customers with clear rules
Instead of a different price for every customer, split customers into a few groups, each with its own price list:
| Group | Who belongs | Cooking oil price | Profit/bottle | Margin |
|---|---|---|---|---|
| Retail | Default, every customer | 2.40 USD | 0.80 USD | 33.3% |
| Regular | Buys often, for their own household | 2.25 USD | 0.65 USD | 28.9% |
| Wholesale | Resells, buys 5+ cases at a time | 1.90 USD | 0.30 USD | 15.8% |
| Distributor | 50+ cases a month, pays upfront | 1.85 USD | 0.25 USD | 13.5% |
A few rules to keep this table from falling apart:
- Group criteria must be measurable: cases per order, spend per month, pay now or on credit — not "nice customer".
- The lowest group stays above the floor: distributors at 1.85 USD are still above the 1.82 USD floor.
- Review every quarter: a wholesale customer who hasn't bought wholesale for 3 months moves back to regular or retail.
- No more than 3–4 groups: with more, even the owner can't remember who is where.
When suppliers raise prices, change wholesale first
Thin wholesale margins are far more sensitive to cost changes. Cooking oil cost rises from 1.60 to 1.70 USD:
- Retail at 2.40 USD: profit falls from 0.80 to 0.70 USD — 1/8 of the profit gone, margin 29.2%.
- Wholesale at 1.90 USD: profit falls from 0.30 to 0.20 USD — 1/3 of the profit gone, margin 10.5%, already below the 12% minimum.
The new floor: 1.70 ÷ 0.88 ≈ 1.93 USD — above the 1.92 ceiling if the market retail price stays at 2.40. Now you have to choose: raise wholesale to 1.95 USD (market retail prices usually rise too), temporarily accept a lower margin for big distributors, or renegotiate with the supplier. What you shouldn't do is leave wholesale prices unchanged because you "forgot" — that's where profit disappears fastest.
Every time you change wholesale prices, send the new price list to wholesale customers (over Telegram, for example) with an effective date, so nobody argues "it was 1.90 last week".
Stop staff from changing prices
The principle: the price is tied to the customer, not to what someone says. At checkout, staff select the customer → the system knows the customer's group → it applies that group's price. A retail customer who wants wholesale prices has to meet the criteria and be added to the group by the owner, not persuade the cashier.
On paper this is hard: a printed wholesale price list can be seen by anyone, and the list of wholesale customers lives in the owner's notebook. In LeangPos you create customer groups (retail, regular, wholesale, distributor), each with its own price for every product — leave a price blank to use the default. When selling at the counter, choosing a customer applies their group's prices to the cart automatically; the cashier can't edit the unit price of an item, and any extra discount goes on the order as a discount that is recorded with it. See Customer groups & group pricing and Managing customers for setup.
Since anyone who can add customers can also pick their group, grant permission to add or edit customers carefully via Roles & permissions, and every so often review the wholesale group to see if anyone "slipped in".
Summary
| Step | What to do |
|---|---|
| 1 | Wholesale ceiling: market retail price × (1 − margin the reseller needs) |
| 2 | Wholesale floor: cost ÷ (1 − the shop's minimum wholesale margin) |
| 3 | Subtract the order's own costs (delivery, credit) before settling on a price |
| 4 | 3–4 customer groups with measurable criteria, reviewed every quarter |
| 5 | When costs rise: check wholesale prices first, send a new list with an effective date |
| 6 | Prices follow the selected customer, not staff memory |
If you want wholesale and retail prices applied correctly to every customer right at the counter, you can try LeangPos for free.