Delivery fee — how you charge for getting the food across town
When a customer orders for delivery, somebody has to pay the rider. Some venues absorb it into the dish price; many would rather show the customer the delivery cost explicitly. This page is for the second kind — venues that want a transparent line on the checkout that says “Delivery: ฿50” alongside the food total.
The system gives you two ways to express the fee — a flat amount per delivery, or a rate per kilometre — and a handful of optional knobs (minimum, maximum, round-up, “free if the order is big enough”) that you can mix in as you need. The fee that ends up on the receipt is calculated at the moment the customer hits Submit and is then locked onto that order, so if you raise your rate next month, the orders already in the kitchen don’t suddenly cost more.
What it does
The delivery fee lives inside the same screen where you already turn delivery on and off, so it only matters when you’re actually accepting delivery orders. Pickup orders never see a fee — the customer is the one moving.
Here is the shape of the two modes, with the optional knobs spelled out.
| Mode | What you set | What the customer pays | When to use it |
|---|---|---|---|
| Fixed | One amount per delivery (e.g. ฿60). | That amount, every time. | When your venue delivers inside a small, uniform radius — most places under 4 km from your kitchen, all charged the same. Simple to communicate. |
| Per km | A rate per kilometre (e.g. ฿8/km), optionally with a base fee, minimum, maximum, and round-up. | Rate × the measured distance from your kitchen to the customer’s pin, after the optional knobs. | When your delivery radius is wide enough that 1 km and 5 km feel like different jobs. Lets you cover the cost of the longer rides without overcharging the closer ones. |
The optional knobs (all per km, all optional, mix freely):
| Knob | What it does | Worked-out example |
|---|---|---|
| Base fee | Flat amount added on top of the per-km charge, before any clamps. | Rate ฿8/km, base ฿20. A 3 km order costs ฿20 + ฿24 = ฿44. A 0.5 km order costs ฿20 + ฿4 = ฿24. The customer never pays less than the base. |
| Minimum fee | Floor — the customer never pays below this, no matter how short the ride. | Rate ฿8/km, minimum ฿30. A 1 km order would compute to ฿8 but is bumped up to ฿30. |
| Maximum fee | Ceiling — the customer never pays above this, no matter how long the ride. Useful for capping outlier rides instead of refusing them. | Rate ฿8/km, maximum ฿150. A 25 km order would compute to ฿200 but is capped at ฿150. |
| Round up to nearest | After the math settles, round the fee up to a clean number. Easier to communicate, friendlier on the eyes. | Rate ฿8/km on a 3.2 km order = ฿25.6. Round up to 5 → ฿30. Round up to 10 → ฿30. (Always rounds up, never down, so the round is on the customer not on you.) |
| Free delivery above subtotal | If the customer’s food bill clears this threshold, delivery is on the house. Works in both modes. | Threshold ฿800. A ฿650 order pays delivery as normal. A ฿820 order ships free, even with a per-km configured. |
The rule
The fee is calculated when the customer hits Submit, and locked onto that order. Editing the rate next month does not move yesterday’s orders.
How to use it
You configure the fee inside Admin → Venue Settings → Pickup and delivery, in the same card where you turn delivery on. The delivery-fee section only appears when Accept delivery orders is on — turn delivery off and the section collapses, the saved fee is set aside, and your delivery orders charge nothing again. Turning delivery back on brings the saved config back.
Pick the mode at the top — Fixed or Per km. The form below shifts to match. Fill the required field for that mode (Fee per delivery for Fixed; Rate per kilometre for Per km) and you’re done — leave every optional knob blank and the customer pays exactly that.
The Show advanced link reveals the optional knobs: base fee, minimum, maximum, round-up. They’re tucked behind a reveal because most venues don’t need them and the form gets noisy with five fields open at once. Click Hide advanced when you’re done and the form goes back to its tight shape.
The Free delivery above subtotal field sits below advanced and stays visible — it’s the most likely knob to set, because it doubles as a sales lever: customers often add one more dish to clear the threshold.
Below the form there is an Example strip that shows what a 3.2 km order with a ฿450 subtotal would cost under your current numbers. Edit any field and the example updates as you type. Use it as a sanity check before saving — if the example shows ฿0 when you didn’t mean free delivery, check your free-above-subtotal threshold; if the example shows a number that surprises you, walk through the formula in the table above.
When the form is clean (no validation error in the Example strip), the Save delivery fee button appears. Click it and the new rate applies to every order submitted from that moment on. Orders already in the kitchen keep their original fee.
When you want to turn it off
Two ways. The clean one — clear every field and hit Save. The customer is shown nothing in checkout and pays only for food. The other one — turn delivery off entirely; the fee config is set aside but not deleted, so flipping delivery back on later restores the rate you had.
When customers complain about the fee on a particular order
Open the order in the inbox. The delivery fee is broken out on the order detail (Subtotal / Delivery / Total) and the WhatsApp message you sent the customer carries the same three lines. The fee includes the measured distance the system used — if the customer disputes “I’m not 5 km away”, you can see exactly what distance was charged. That distance is the one the customer’s address picker resolved at submit time, not the live distance today (their pin may have moved between orders).
Worked example
Saturday lunch service at iO Osteria. Marco wants to charge delivery, but the kitchen sits in Sukhumvit and customers come from anywhere between two soi over and the river. A flat fee would either lose money on the long rides or overcharge the close ones.
Marco opens Admin → Venue Settings → Pickup and delivery. Delivery is already on. The new Delivery fee section is visible underneath the default-at-checkout radio.
He picks Per km. The fields shift — Rate per kilometre is required, the rest are optional.
- Rate per kilometre: ฿8. That’s roughly what a rider’s time and fuel costs Marco per km in Bangkok traffic.
- He clicks Show advanced.
- Base fee: ฿20. There’s a cost to handing the food to the rider even if the customer is next door — the kitchen has to plate it for transport, package it, drop it off at the front of the venue.
- Minimum fee: he leaves blank. The base already does that job.
- Maximum fee: ฿150. Marco doesn’t want to take a ฿300 delivery order and have the customer call shocked at the till. If the order is far enough that it would cost more than ฿150 to deliver, he’d rather his receptionist call the customer and arrange it manually.
- Round up to nearest: ฿5. Less aesthetically chaotic than ฿43 or ฿57.
The example strip below the form updates as Marco types. With these numbers it reads:
3.2 km order, ฿450 subtotal → ฿50 delivery fee
That’s ฿20 base + ฿8 × 3.2 = ฿45.6, rounded up to ฿50. Marco does the math in his head, agrees with the system, and continues.
- Free delivery above subtotal: ฿800. Marco wants customers to round up to a bottle of wine or a tiramisu. The wine bottle alone clears the threshold; a single pasta does not.
He hits Save delivery fee. The button disappears, the form is clean.
Two hours later, a customer 4 km away orders three pizzas (฿850 subtotal). When they hit Submit, the system sees the subtotal is above the free threshold and charges ฿0 for delivery — the WhatsApp message says “Subtotal: ฿850, Delivery: free, Total: ฿850”. The rider gets the order, brings it across town, and the customer is delighted.
The next customer is 6 km away and orders two pastas (฿520 subtotal). The math: ฿20 base + ฿8 × 6 = ฿68, rounded up to ฿70. Below the free threshold, so the fee applies. The order’s WhatsApp message reads:
Subtotal: ฿520 Delivery: ฿70 Total: ฿590
A month later Marco notices his rider costs went up and bumps the rate from ฿8/km to ฿10/km. Saves. The two earlier orders, sitting in the inbox, still show ฿70 and ฿0 — their snapshots are frozen at the moment they were placed. Only the next new order pays the higher rate.
Related features
- Pickup and delivery — the parent screen that gates delivery on/off. The fee only matters when delivery is on.
- Address picker — supplies the measured distance the per-km fee multiplies through. The distance is the one captured at submit time, not today’s distance.
- Online ordering — the master switch that has to be on for the cart to even show.