Back to the blog

Stock9 Sep 20264 min readBy KamraiDee

Shipping is food cost

A sack of flour plus ฿50 delivery is not the sack price. Landed cost is pack + shipping.

A flour sack beside a navy delivery box and a paper invoice

You pay ฿380 for 25 kg and the driver adds ฿50. That sack cost ฿430. Every gram in a pizza base should carry ฿430, not ฿380.

Same for a florist’s eucalyptus, a café’s syrup crate, a soap maker’s oil tin, a pet-treat kitchen’s chicken mince. The van is not overhead. It belongs on that pack.

That one move changes three numbers in the shop: what each product really costs, what you should charge, and how much baht is left after the sale. Miss the van, and you donate a slice of profit on every plate, cup, bunch, and bar.

Landed cost is the price of the pack at your door

The invoice line is not the cost. The cost is what you paid to have that pack sitting in your kitchen.

Landed cost = pack price + shipping on that pack.

If the supplier sometimes delivers free, shipping is ฿0. When they charge, type it. Do not average it into “rent” or “misc.” Rent does not go into the pizza. The flour does. The van that carried the flour does too.

This is not the same as the fee you charge a customer to send a cake across town. That is a job fee. KamraiDee has a separate delivery fee tool for kilometres, fuel, your time, and a little wear. This article is only about the van that brought your stock.

KamraiDee puts shipping under pack price on the stock item. Cost per unit and recipe cards use the landed number. The public calculator does the same: pack + shipping, then how much you used.

Do this on one pack, today. Open the free Stock unit cost tool. Type pack price and shipping. See what one gram, millilitre, or stem really cost. Nothing is saved. No signup.

How shipping changes the product

A product is a pile of stock you used. If the stock number is low, the product number is low. The menu does not know you undercounted.

Take the flour sack from the opening.

Flour, 25 kg Without shipping With ฿50 van
Pack at the door ฿380.00 ฿430.00
Cost per kg ฿15.20 ฿17.20
Cost per gram ฿0.0152 ฿0.0172
280 g in a pizza base ฿4.26 ฿4.82

Sample calculation. ฿50 on ฿380 is about 13% extra on every gram from that sack.

฿0.56 on the flour line looks small. That is the trap. You do this on flour, cheese, ham, sauce tins, oil, boxes. Each line is “only a few satang.” The plate is the sum.

Shipping also changes nested recipes. If pizza base is its own formula, and Hawaiian pulls the base in, a cheap flour number hides inside every Hawaiian you sell. Cost the child once with landed stock. The parent inherits the truth. That is the point of A Hawaiian is not one recipe.

The product does not get worse. The book gets honest. You find out which items were quietly expensive — usually the ones that travel far, come in small packs, or arrive with a driver every week.

What belongs on the pack

  • Supplier delivery on that invoice or that drop.
  • A Grab / Lalamove / motorcycle run you paid to fetch that pack.
  • A share of a mixed van, split across the bags on that trip — not across the whole month’s rent.

What does not belong on the pack: shop rent, the barista’s wage, GrabFood commission on a customer order, a promo code. Those are other lines. Mixing them into flour makes food cost noisy and prices random.

How shipping changes the price

Price sits on top of cost. If cost was short, the board is short.

KamraiDee does not add a hopeful percent on top of cost. That is markup. Markup is how shops talk. Margin is how shops keep money. Margin is profit ÷ sell. The sell price from a target margin is:

Sell = cost ÷ (1 − margin)

The site default in Settings is 60% margin. If a thing costs ฿80 to make, sell at ฿200. You keep ฿120. Use your own target. Cap is 90%.

Now put shipping back on the flour and watch a simple pizza-base cost move the board. Sample only — one ingredient, no labor, so you can see the lever.

Cost (flour only) Sell at 60% margin You keep
Flour without van ฿4.26 ฿10.65 ฿6.39
Flour with van ฿4.82 ฿12.05 ฿7.23

Sample calculation. Same 60% margin. The honest cost asks for a higher board — or a thinner keep if you refuse to move the price.

You will not reprint a menu for ฿1.40 of flour. You will reprint it when eight lines each hide a van. That is when a ฿129 pizza was really a ฿119 pizza wearing a smile.

If you freeze the sell price and only fix the cost, margin falls. That is the quiet version of a price cut. The customer did not ask for it. The book gave it away.

Price from the landed cost, not the sack sticker. Use Price from margin: sell = cost ÷ (1 − margin). Then check the keep with Margin and profit. Same math as the profit book.

How shipping changes leftover profit

Profit on a unit is sell minus true cost. True cost starts with landed stock, then the grams you used, then your minutes if you count them.

Two shops can sell the same cup at ฿65. One typed shipping. One did not. Same busy Saturday. Different drawer on Sunday.

Food cost % moves too. A common kitchen check is:

Food cost % = ingredient cost ÷ sell × 100

Thai independent kitchens often aim somewhere near 28–35% of sales for food, and cafés often sit lower on drinks, around 18–25%. Those are rules of thumb, not a law. The point is the percentage is only useful if the ingredient number includes the van. Leave shipping out and your “healthy” 30% was about 34% in real baht. You thought you had room. You did not.

Leftover profit is what remains after food, labor, rent, utilities, and — if you sell on an app — platform commission. Shipping on stock does not replace those lines. It stops food from pretending to be cheaper than it is, so the other lines have a real number to stand on.

You do not need a scary savings claim. You need one pack that is no longer lying.

How to price it — use the tools, one pack at a time

Do not rebuild the whole shop tonight. Cost the pack that arrives most often, or the pack that always has a driver fee.

1. Land the pack

In Stock unit cost, type what you paid for the sack, tin, bunch, or bag. Type shipping. Read the cost per gram, millilitre, or stem. That is the number recipes should drink.

2. Build the thing you sell

In the Cost calculator, add each line: pack you bought, shipping, how much went into this mix, your minutes, how many you get. You get ingredient cost, labor if you typed minutes, cost per piece, and a sell at your margin. Nothing is saved. No signup.

3. Set the board from margin

If you already know the true cost, open Price from margin. Pick the slice you want to keep. Read the sell price. Then open Margin and profit and ask: if I keep today’s menu price, what margin is left after the van?

4. Decide like an owner, not like a calculator

  • Raise a few baht on the items where landed cost ate the keep.
  • Or change the pack: a bigger sack often carries a smaller van per gram.
  • Or stop selling the item that only worked when shipping was invisible.
  • Or leave the price and accept a thinner margin — on purpose, not by accident.

5. Put it in the book so you do not retype it

The tools forget when you close the tab. The profit book does not. KamraiDee stores shipping on the stock item. Every formula that uses that stock inherits the landed unit. Sign up when you are ready to stop doing this on a napkin.

Know your true cost. Start with one pack. Pack + shipping. Then the grams you actually use.

Stock unit cost — free · Cost a recipe — free · Sign up to beta

Five shops, same rule

All figures below are sample calculations. They show the shape of the leak, not a promise about your shop.

Kitchen — flour for pizza

฿380 + ฿50 van on 25 kg. Landed ฿430. About 13% more per gram. A base that uses 280 g carries ฿4.82 of flour instead of ฿4.26. Do the same to cheese and sauce tins before you call the pizza “fine.”

Café — syrup crate

A crate of syrup at ฿420. Driver ฿40. Landed ฿460. If the crate is 6 bottles of 1 litre and one drink uses 20 ml, you are costing 20 ml off ฿460, not ฿420. The cup does not care that “it’s only syrup.”

Florist — eucalyptus

A bunch ฿180 plus ฿30 from the market run. Landed ฿210. If that bunch is 10 stems and a bouquet takes 3, those three stems are ฿63, not ฿54. Wrap and hours sit on top. The board should see ฿210.

Soap maker — oil tin

Oil tin ฿650 + ฿80 shipping. Landed ฿730. Every gram in the master oil blend is now higher. Three scents that share the blend all move together. That is why the blend is a formula, not a guess in each bar.

Pet-treat kitchen — chicken mince

Mince ฿220 + ฿25 bike. Landed ฿245. Treats priced off ฿220 look busy and kind. Treats priced off ฿245 still look kind. They also leave money for the next bag.

Mistakes that hide the van

Calling shipping “overhead”

Overhead is the shop existing. Shipping on flour is flour arriving. If you bury the van in a monthly slush number, cheap products and expensive products share the same fog. The Hawaiian and the glass of water should not split a flour van equally.

Using last month’s free drop forever

Some weeks the supplier includes the ride. Leave shipping at 0 that week. Next week they charge. Type it. A fixed “we add 5% for luck” is kinder than nothing and worse than the invoice in front of you.

Splitting one van across the wrong packs

If the driver brought flour, yeast, and lids, split the fee across those three packs — by baht spent, or by weight, pick one method and stay with it. Do not drop the whole ฿80 on flour because it was the first line on the bill. Do not drop it on lids because they looked light.

Pricing with markup after you fixed cost

You land the pack correctly, then “add 50%.” You still keep only a third of the sell price. Read Margin, not markup before you print.

Mixing supplier shipping with customer delivery

The van that brought oil is food cost. The ride that takes a cake to Lat Phrao is a job. If you hide customer delivery inside the slice price, walk-in customers pay for someone else’s trip. Use the delivery fee tool for that ride.

Questions shops ask

Is a ฿50 delivery really food cost?
Yes, when it is the fee to land that pack. Food cost is not “the number printed on the sack.” It is what the kitchen paid to cook with that sack.

What if shipping is free this month?
Leave shipping at 0. When they charge, type it. Do not invent a permanent fee to feel safe, and do not pretend a paid drop was free because last month was.

Do I add shipping again inside the recipe?
No. Shipping lives on the stock item. The recipe uses grams from that item. If you add ฿50 again on the formula, you counted the van twice.

Should I raise every price by 13%?
No. Only the packs that carried a van moved, and only by that pack’s own percent. Cost the pack. Cost the product. Then decide. Some prices move a few baht. Some products you stop making.

Where do I type this in KamraiDee?
On the stock item, under pack price. Cost per unit and recipe cards use the landed number. The public tools do pack + shipping, then how much you used. Start here: stock unit cost and cost calculator.

What margin should I use?
KamraiDee’s default is 60% margin — profit ÷ sell, not a 60% add-on. Set the number that still leaves a keep after your shop’s other costs. The formula is sell = cost ÷ (1 − margin). Try it in Price from margin.

The tiny step

Pick the next pack that arrives with a driver. Type pack + shipping. Read the gram. Put that gram into one thing you sell. Look at the keep.

Busy is not the same as leftover baht. The van already took its share. The book should say so before the menu does.

Also on this blog: Margin, not markup · A Hawaiian is not one recipe · Free costing tools

Sample calculations only. Not tax, accounting, or legal advice. Platform fees and supplier terms change — use the invoice in your hand.

BETA 1.0

Free to join. Same price for every shop type.

See pricing

Beta 1.0. Free to join.

Sign up free