Back to the blog

Pricing9 Sep 20263 min readBy KamraiDee

Why 50% markup is not 50% profit

You bought something for 40 baht. You sold it for 60.

Open ledger, gold coins, and a chili on a cream Thai café table

A friend says, “Nice, 50% profit.”
Another friend says, “No, that’s only 33%.”

Both are looking at the same 20 baht. Both are doing the math correctly. They are standing on different sides of the same coin.

That coin has two names:

  • Markup — how much you added on top of cost.
  • Margin — how much of the selling price you keep as gross profit.

Thai shops mix these two every day. It does not feel like a mistake. It feels like “I already added 50%.” Then rent arrives, the delivery app takes its cut, you run a 20% live-sale, and the drawer is thin. The product was never as profitable as the percentage in your head.

KamraiDee is not here to win a vocabulary fight. It is here so you know the real cost, see the leftover baht, and pick a price that still leaves money.

The one-sentence difference

Markup answers: “How much did I add on top of what it cost me?”

Margin answers: “Out of every 100 baht the customer paid, how many baht are gross profit?”

Same profit in baht. Different base.

  • Markup uses cost as the base.
  • Margin uses selling price as the base.

Because the selling price is the bigger number, margin % is always smaller than markup % on a profitable sale. If someone says their “margin is 50%” and they priced by “adding 50% to cost,” they underpriced. Not by a little.

Same product, same 20 baht, two percentages

Sample calculation. A packet of snacks, a bottle of sauce, a small cream — anything.

Baht
Cost 40
Selling price 60
Profit on this unit 20

Markup = (price − cost) ÷ cost × 100
(60 − 40) ÷ 40 × 100 = 50%

You added half of the cost on top. That is a 50% markup.

Margin = (price − cost) ÷ price × 100
(60 − 40) ÷ 60 × 100 = 33.3%

Out of the 60 baht the customer paid, 20 baht is gross profit. That is a 33.3% margin.

50% markup = 33% margin.
100% markup = 50% margin.
If you want a 50% margin, double the cost — that is a 100% markup.

Tape that to the shelf. It pays for itself the first time you almost print a 60-baht tag when you needed 80.

Why the two numbers refuse to match

Cost is a small bowl. Selling price is a bigger bowl. The profit baht is the same handful of rice.

  • Markup asks: “This handful is what fraction of the small bowl?”
  • Margin asks: “This handful is what fraction of the big bowl?”

The rice did not change. The bowl did.

If you like formulas, use decimals (50% = 0.50):

  • Margin = markup ÷ (1 + markup) → 0.50 ÷ 1.50 = 33.3%
  • Markup = margin ÷ (1 − margin) → 0.50 ÷ 0.50 = 100%

You do not need the algebra in your pocket. You need to stop treating “50%” as a magic word that works in both directions.

Pocket table (cost 100 baht)

You add this markup Selling price Profit Real margin
25% 125 25 20%
30% 130 30 23.1%
50% 150 50 33.3%
67% 167 67 40%
100% (double the cost) 200 100 50%
150% 250 150 60%
200% (triple the cost) 300 200 66.7%

Two lines worth knowing by heart:

  1. Keystone — double the cost — is a 100% markup and only a 50% margin.
  2. Restaurant talk of “3× food cost” is a 200% markup, about a 67% gross margin on ingredients only. Rent, wages, gas, and delivery fees still have to live inside that 67%.

KamraiDee prices from margin, not markup. The default in the tools is 60% margin — that means profit ÷ sell, not “add 60% on top of cost.” A 60% margin is a 150% markup. Check it in Price from margin and Margin and profit.

How the mix-up hits products, price, and leftover

This is not a vocabulary lesson. It changes what you keep selling, what you print on the tag, and whether a busy month leaves cash.

1. It changes the price you think is “fair”

You want “about 50% profit.” Which 50%?

Sample calculation. Cost is still 40 baht.

What you meant How you build the price Tag
50% markup 40 × 1.50 60 baht
50% margin 40 ÷ (1 − 0.50) = 40 ÷ 0.50 80 baht

Twenty baht of difference. On one SKU that is a shrug. On 30 pieces a day, that is 600 baht a day — about 18,000 a month — walking out as a “fair price.”

The customer does not see your percentage. They see 60 or 80. You are the only one who knows whether 60 still covers bags, waste, and the night you work for free.

2. It changes which product looks like a winner

A provision shop and a homemade-snack stall can sit on the same street and need completely different percentages. If you judge both with “I always add 30%,” you will:

  • underprice the slow, bulky, or high-waste item
  • over-celebrate the fast cheap item that barely covers the shelf
  • keep restocking the SKU that “moves” while the SKU that leaves money sits in the back

Markup is useful when you are staring at a supplier invoice and need a first-pass tag. Margin is useful when you ask, “If this sells 100 times this month, what share of those sales is mine before rent?”

They answer different questions. Using only one is how a best-seller becomes a quiet leak.

3. It changes what a discount does to you

Sample calculation. Unit cost 120 baht. You want “20%.”

Method Price Then you discount 20% Versus cost 120
20% markup 120 × 1.20 = 144 144 × 0.80 = 115.20 Below cost. You paid 4.80 baht to make the sale.
20% margin 120 ÷ 0.80 = 150 150 × 0.80 = 120 You land on cost. Profit on that ticket is zero. Rent is still due.

Live sellers feel this every night. “ลด 20% สิคะ” sounds generous. If the original tag was built on markup, the 20% off can erase the profit and then some. If you do not know which 20% built the tag, you are guessing with the shop’s money.

4. It changes delivery and marketplace math

On a food app, the customer-facing price is not the shop-facing price. A disclosed GP around 30% plus VAT, plus the box and the bag, is not a rounding error. It is a second selling price you never printed.

Sample calculation — dine-in winner, delivery surprise:

Walk-in On the app (illustrative)
Menu price 60 60
Ingredient + box 22 22 + 8 box/bag = 30
Platform take (~30% + VAT on the ticket) 0 ~19
Leftover toward rent, gas, wages, owner 38 ~11

Same 60 baht on the board. Completely different margin. If you set the 60 using a 50% markup on ingredients alone, the walk-in ticket looks healthy and the app ticket is a part-time charity.

Online sellers get the cousin of this problem. A 299-baht listing after commission, transaction fee, packing, overweight shipping, and a coupon is not a 299-baht sale. Markup on the factory cost will lie to you. Margin after the fee stack is the number that decides whether the live is worth opening.

5. It changes whether you can raise 5–10 baht with a straight face

Owners who only think in markup feel rude adding 5 baht. Owners who have seen margin after waste and fees feel rude not adding it.

Five baht on a 60-baht plate is not greed. It is often the difference between “ingredients covered” and “ingredients + bag + a sliver of rent.” The courage to move the tag comes after the two percentages are honest, not before.

Three prices hiding in one shop

Most Thai shops do not have one cost. They have a stack.

  1. Supplier cost — what the market, Makro, or factory charged this morning.
  2. Landed unit cost — plus bag, box, gas share, spoilage, “แถม,” payment fee, platform fee.
  3. Full cost to stay open — plus rent, wages (including your hours), power, the empty chair, the dead stock.

Markup on (1) is what people do in their head at 5 a.m.
Margin on (3) is what decides whether the family eats from the shop or the shop eats the family.

If you only mark up the supplier number, you are pricing a product that does not exist. The product that exists includes the bag. Put shipping on the pack in Stock unit cost, then cost the dish in the Cost calculator.

How to price it — one SKU, today

Do not reprice the whole shop. Start with the item you sell most, or the item you secretly suspect is a fake friend.

Step 1. Write the real cost, not the invoice cost

For one menu or one SKU, list ingredients or wholesale price, packaging, a waste slice (if 10 in 100 spoil, the surviving 90 carry that cost), platform or payment fee if this SKU lives on an app, and a small share of gas or power if you can estimate it without going to university.

You will miss a line. That is fine. A messy real cost beats a clean fake cost.

Do this on one pack or one recipe, today. Open the free Stock unit cost tool and type pack price plus shipping. Then open the Cost calculator and cost the menu that uses it. Nothing is saved. No signup.

Step 2. Decide which percentage you actually mean

  • “I want to add 50% on top of cost” → markup. Price = cost × 1.50
  • “I want to keep 50 satang of every baht the customer pays, before rent” → margin. Price = cost ÷ 0.50

If you cannot finish the sentence, you are still pricing by feeling. Feeling-based prices donate profit.

Step 3. Price three ways, then pick like an owner

  • Markup (fast, good for shelves). Cost × (1 + markup). Use when the cost is clear and the item is simple: bottled drinks, dry goods, a repeated recipe.
  • Target margin (safer when fees and discounts exist). Cost ÷ (1 − target margin). Use when you already know you will lose a slice to GP, coupons, or a live discount. Build the slice in before the customer sees the tag. This is what Price from margin does.
  • Look at the neighbour, then look back at your cost. Walk the block. Screenshot the Shopee listing. Then return to your number. If they are 10 baht cheaper, you have three honest options: beat them on a different SKU, cut a real cost, or accept that they may be donating. Matching a neighbour who is losing money is not a strategy. It is a race to the empty drawer.

None of the three works if step 1 is a guess. Type the cost. Then open Margin and profit and ask what today’s tag actually keeps.

Step 4. Test the price against a bad day

  1. If I discount 10% for a regular, am I still above cost?
  2. If this goes on Grab / Shopee / a live, what is left after the fee?
  3. If waste is worse this week, does the margin survive?
  4. After 20 sales, is the leftover enough to notice — or is it tip money?

If (1) or (2) goes under, the tag was a markup number wearing a margin costume.

Step 5. Raise the tag in small baht, not in speeches

You rarely need a new “positioning.” You need 5, 10, or 15 baht on the items that cannot carry the shop at the old price. Customers remember taste, portion, and whether you are still there next month. They do not remember that your กะเพรา was 55 instead of 60.

What “good” looks like (ranges, not commandments)

Rules of thumb from Thai shop talk and SME explainers. Not KamraiDee promises. Rent, province, and channel mix will move them.

Kind of shop How people often talk What that usually means
Street food / made-to-order Food cost about 28–35% of the plate Ingredient margin about 65–72% — before labour and rent
Cafe drinks Ingredient cost often 18–25% of the cup High ingredient margin; the cup still has to carry the machine and the seats
Provision shop staples Thin markup, often 10–25% You live on turn (how often it sells), not on one rich ticket
Beauty / specialty retail Often 50–100% markup Keystone is common; testers and “แถม” quietly eat it
Online / marketplace List price must survive a mid-teens-or-more fee stack before ads Margin after fees is the only margin that matters
Services (salon, repair) Time is the raw material Markup on product alone donates the hour

If food cost on a plate is 45% and you are not a buffet, the issue is not mindset. It is portion, supplier, waste, or a tag set from the wrong 50%.

Four sample calculations

A. ร้านของชำ, one bottle

Cost 42 baht. “Add 30%” → 55 baht. Markup about 31%. Margin about 24%. Payment fee and a bag make it thinner. If you meant a 30% margin: 42 ÷ 0.70 = 60 baht. Three to five baht. On a fast mover, that is the month’s power bill hiding in rounding.

B. กะเพราไข่ดาว, walk-in (illustrative)

Rice, pork, egg, basil, chilli, oil, gas sliver: 24 baht. Plate 60. Markup on that cost: 150%. Ingredient margin: 60%. Food cost: 40% — already high for many street shops. Add a takeaway box and food cost jumps. 150% still sounds rich. The plate is not. The percentage was measured against a small bowl.

C. Homemade snack, the 50% sentence

Cost to make one bag: 25 baht. Owner wants “50%.” Markup 50% → 37.50 baht, profit 12.50, margin 33%. A true 50% margin → 50 baht, profit 25. 12.50 baht per bag. At 40 bags on a market Saturday, that is 500 baht of “I thought I was taking 50%.” Not a tragedy. Also not nothing. Do this on five SKUs and you have been running a quiet sale all year.

D. Shopee tag at 299

Factory 140 + pack 18 + a return/damage share 7 = 165 before the platform. Fees on the order of 15% of 299, plus a 20-baht live coupon, leave about 69 baht toward ads, your time, and dead stock — roughly a 23% margin on 299. Markup on the 140 factory cost would have called you a genius. You are fine only if ads and returns stay small. Price from 165, not 140. Decide the margin you need after the fee stack. Then set 299 or 319 or 339 on purpose.

Re-check live platform rates on the day you publish. Fee stacks go stale.

What KamraiDee is for in this story

You can run every formula in this post on a phone calculator. Shops already do. Then they stop, because the next invoice arrives and the LINE notes never total.

KamraiDee is the place the total lives.

  • One menu. One SKU. Today.
  • Real cost, not the number you remember from last month.
  • Leftover baht after the cost you actually typed — so markup and margin stop being a debate and become a number you can act on.

We will not invent a saving for you. Run one SKU. Look at the leftover. That leftover is the argument.

Tiny first step: pick the item you sold most yesterday. Cost it in the Cost calculator. Put today’s selling price into Margin and profit. See whether that price is a 50% markup, a 50% margin, or neither. Then decide if the tag still deserves to exist.

Stock unit cost — free · Cost a recipe — free · Price from margin — free · Margin and profit — free

FAQ

Is a 50% markup the same as a 50% margin?

No. A 50% markup is about a 33% margin. A 50% margin needs a 100% markup (double the cost).

Which one should a small Thai shop use?

Markup to build a first price from a known cost. Margin to check what you keep of the customer’s baht after you sell it — especially once fees, waste, and discounts exist. If you only have time for one check, check margin after the real cost. That is why the KamraiDee tools price from margin.

Why do restaurants talk about 3× cost?

Tripling ingredient cost is a 200% markup and about a 67% ingredient margin. That 67% still has to pay people, rent, gas, and the app. 3× is a stencil, not a profit.

My neighbour is cheaper. Should I match them?

Not until you know their leftover, which you will never know. Know yours. Then choose: a different SKU, a real cost cut, a small raise, or a smaller portion that still feels fair. Copying a tag is how two shops go down together.

Does this replace an accountant?

No. This is stall math for the price tag and the drawer. Tax filings stay with your accountant.

Cost changes every morning at the wet market.

Then a frozen percentage on last month’s cost is already wrong. Update the one busy SKU when the ingredient jumps, and move the tag the same week. Waiting “until things settle” is how a month of thin margins becomes the new normal.

Cost one product today

You do not need a new personality. You need one honest cost and one honest percentage.

Open a KamraiDee tool. Cost one product you already sell. Look at the leftover baht at today’s price. If the leftover is thinner than the percentage you have been saying out loud, the leak is not mysterious. It is the other 50%.

รู้ต้นทุนจริง เห็นกำไรจริง เก็บเงินไว้กับร้านได้มากกว่าเดิม.

Also on this blog: Sales is not profit · Free costing tools

BETA 1.0

Free to join. Same price for every shop type.

See pricing

Beta 1.0. Free to join.

Sign up free