Menus with modifiers, tickets that reach the right kitchen station, tabs that stay open across rounds, and recipes that deduct ingredients as dishes sell, all of it still working when the internet does not.

The waiter opens a tab for the table and rings the dishes, picking modifiers as they go: no onions, extra sauce, well done. Each round is added to the same tab.
One tap fires the ticket. It prints at the station that dish belongs to, whether the grill, the bar or the pass, because each order line carries its own printer slot.
Print the customer bill for the table, then take payment however they split it: separate payers, part cash and part mobile money, or the whole tab on one card.
Recipe tracking is stock control for a kitchen. Instead of counting plates, you tell Stem what each dish is made from, and every dish sold takes those ingredients out of stock on its own. You get a real food cost per plate in shillings, and an honest answer to where the cooking oil went.
Recipe tracking is opt-in. Switch it on for your restaurant in settings. Shops that only sell packaged goods never see it.
Kitchen › Ingredients holds the raw stock a dish is built from: flour, oil, chicken, cooking gas. Receive deliveries against it and count it like any other stock.
Give each dish its ingredient lines and quantities, and mark it made to order or made ahead. Stem costs the recipe from what the ingredients actually cost you.
A made-to-order dish deducts its ingredients at the moment of sale. A made-ahead item deducts when you produce the batch rather than when it sells, so a tray of samosas is counted once, when it is cooked.



Dishes built when sold. Selling one deducts its recipe from ingredient stock automatically, so nothing has to be counted down by hand.
Batches cooked in advance. You record what you produced, the ingredients come out of stock then, and the finished items sell down as a normal count.
Raw ingredients live in their own place, not muddled into the sales catalogue, with receiving, counts and adjustments of their own.
Because the recipe is costed from real ingredient prices, the margin on a plate is a number you can read rather than one you estimate.
Already selling flour and oil as products? A guided move lifts them out of the catalogue into Ingredients without losing their stock.
A made-to-order dish is never held up by a stock count. The kitchen decides what it can cook, and the till does not refuse the order.
A spreadsheet tells you what a dish should cost. It cannot tell you what tonight actually consumed. Four behaviours carry that difference:
A recipe can call for 15 g of chicken while chicken is stocked and priced by the kilogram. Stem converts the portion into the ingredient’s own unit as it deducts, so you write recipes the way a cook thinks and buy stock the way a supplier sells it.
When a customer asks for extra sauce and the waiter taps the modifier, that extra sauce comes out of sauce stock on top of the base recipe. Options that change the plate but not the stock count are the most common quiet leak in a kitchen.
Ingredients are drawn oldest-expiry-first and valued at the cost of the batch they actually came from rather than a running average. When the price of oil moves, your food cost moves with it instead of lagging behind an average that smooths the change away.
If the recipe says there is not enough left, the sale still completes and the ingredient goes negative. That negative is the honest signal that the shelf and the system disagree, which is far more useful than a till that refuses a paying customer because a count is stale.
The ingredients themselves are ordinary stock underneath, so they inherit everything on the stock side : batches, expiry dates, counts with recorded variances and transfers between branches.
Options and extras per dish, priced or free, so the ticket that reaches the kitchen says exactly what the customer asked for.
Route each dish to the printer that should cook it. Starters to one station, drinks to the bar, mains to the pass.
A tab stays open across rounds all evening, and keeps working if the internet drops mid-service.
Split a tab when the party pays separately, and settle each share with its own payment method.
Waiters take orders without opening a cash shift, so only the people who handle money run a drawer.
Service runs past midnight and the business day still closes cleanly, with every sale booked on the day it happened.

Ticket routing is a setting on the dish itself: leave it on Auto, send it to one of five order printers, or mark it Counter so it never prints a kitchen ticket at all. Drinks go to the bar, mains to the pass, and the receipt still prints on the till’s own printer.
A shop sells an item to someone standing at the counter. A restaurant takes an order, cooks it somewhere else, and gets paid later, which changes what the software has to do at five separate points.
| The moment | A shop till | Restaurant mode |
|---|---|---|
| What the customer orders | Item scanned, paid, done. | Dish with modifiers (no chilli, extra sauce) priced and printed correctly. |
| When they pay | Immediately, at the counter. | At the end, from an open tab that can move table or split across guests. |
| Who needs to know | Only the till. | The kitchen and the bar, on their own printers, as each round is sent. |
| What comes out of stock | The item that was sold. | The ingredients behind the dish, by recipe, at the moment it sells. |
| When the day ends | At closing time. | After midnight, so the business day rather than the calendar day decides the books. |
If you run a shop rather than a kitchen, the same till in retail mode is what you want instead. See pricing for what each plan includes.
The till keeps a full copy of your menu on the machine itself. Orders are taken, tickets print to your kitchen printers over your own network, tabs stay open and bills settle, with no connection at all, in a Kampala food court or a roadside grill upcountry. Everything syncs once the internet returns, and each sale is booked on the day it really happened.
Not yet, and we will not pretend otherwise. Stem has the settings for URA’s EFRIS system (your TIN, fiscal device and endpoint) and the plumbing built around them, but sales are not yet transmitted to URA. Do not rely on Stem for EFRIS compliance today; keep filing the way you file now. It is opt-in, and when the live submission lands it arrives over the air.
Yes. Give a dish a recipe, meaning its ingredient lines and quantities, and selling that dish deducts those ingredients from stock. Dishes made to order deduct at the moment of sale; dishes made ahead deduct when you record the batch you produced. Recipe tracking is opt-in, so you turn it on only if you want it.
Yes. The till holds its own copy of your menu and prints to your kitchen printers over your local network or USB, so service continues with no connection at all. Orders sync to the cloud once the internet returns.
Yes. Each order line carries the printer it belongs to, so a single order can fire starters to one station, drinks to the bar and mains to the pass.
The dishes for that round with their modifiers (no onions, extra sauce) and no prices. The kitchen sees what to cook, never what the customer pays; the priced bill prints separately for the table.
Yes. A waiter can open tabs and send orders to the kitchen without opening a cash drawer or a shift. Only staff who take money run a drawer, and every sale still carries the name of whoever rang it.
Yes. A table tab can be split when the party pays separately, and each share can settle with its own payment method: cash, card, mobile money or customer credit.
Not yet; EFRIS is in development. Stem holds the settings for your URA TIN, fiscal device and endpoint, but completed sales are not yet transmitted to URA, so please do not rely on Stem for EFRIS compliance today. It is opt-in.
Throwing away ingredients before they sell? How to stop losing money to expired stock explains batches and the oldest-date-first rule the kitchen draws on.
Register your restaurant, load your menu, and send your first ticket to the kitchen, online or off.
Page updated 21 July 2026