Skip to main content
A price list answers a single question: how much does each product cost? What changes is who it costs that much for. The same product can be priced differently in the store, on delivery, at an airport location or inside a combo — and holding that together by hand, product by product, is where money leaks without anyone noticing. This screen exists so you can run many different prices without multiplying the work of maintaining them. Navigate to Restaurant OS → Menu & Products → Price lists.
Price list overview

The short version

1. You already have a list, even if you never created one. It’s called the base list and it holds the standard price for every product. When you set a price on a product’s page, that price lands there.2. Other lists can follow the base. Connect a list to the base and you change a price once for it to reach all of them. Any product that needs its own price sets one and stops following — just for that product.3. Nothing is saved until you confirm it. Everything you edit stays as a draft, you see it on screen before applying, and you can discard the whole thing.

The simple path

You don’t need to understand price lists to start selling. Set the price on the product page and Prices and availability picks it up into the base list. Done. The base list carries the Base list tag and can’t be deleted or deactivated: it’s the catalog price, the floor everything else hangs from.
If you sell at a single price, this is all you need. The rest of this manual is for when the second price shows up.

When the second price shows up

One day delivery costs more, or an airport store carries different costs, or an aggregator takes a commission you need to offset. That’s when you create a second list — and the question that matters is how it’s born.
The difference that costs the most. A copy looks identical to a connected list the day you create it. The difference shows up three months later: the connected one followed the base’s increases, the copy stayed frozen at that day’s prices and nobody noticed.When in doubt, pick connected. You can always disconnect it later.

Connected lists: change once, reach everywhere

A connected list shows the Derived from <base list> tag, and each product carries one of two marks:
  • Formula — that product follows the base list.
  • Fixed — that product has its own price and won’t move when the base changes.
Below the price you’ll see the formula behind it: P is always that same product’s price in the base list.

The point: you can mix

It isn’t all or nothing. A delivery list can follow the base on 137 products and hold its own price on 93. The ones that follow update themselves; the ones you fixed stay exactly where you put them. To send a product back to following the base, use Reset to =P next to the price.

Contextual prices: the same product is worth a different amount inside a combo

This is the case that surprises people most. A side of fries costs $5.70 on its own. But inside the “1 Tira + Batata Média” combo it costs $7.80, and inside “9 por 49,90” it costs $6.20. Three prices for the same product — and until now they lived buried in each combo’s configuration. In the grid, products with this show an “N contexts” tag. Open it and you see every price together, with the percentage against the standalone price:
Contextual prices for the same product
Green when you charge more than the standalone price, red when you charge less. And they’re editable right there: no need to go hunting for the combo.
Why this matters. In a typical operation, most of the revenue goes through combos. If you raise prices and leave the contextual prices alone, the increase never reaches where the money is.

Changing many prices at once

Select the products —using the type and category filters, or the search— and the bulk edit bar appears.

What you can apply

  • Percentage — raise or lower by a % over the current price. The sign is explicit: + or .
  • Amount — add or subtract a fixed amount.
  • Formula (connected lists only) — apply =P*1.15 to everything selected.
  • Reset to =P (connected lists only) — send them back to following the base.
Bulk edit bar with rounding selector

The increase reaches combos too

The bar includes an “Also prices inside combos” checkbox, on by default. That’s what makes a +10% actually reach your whole revenue instead of just the standalone price. One reassuring detail: an even increase keeps the proportions. If a product was $10.90 on its own and $20.00 inside a combo (+83%), after a +10% it’s $11.99 and $22.00 — still +83%.

Commercial rounding

A +10% leaves prices like $11.99 or $13.42. The second one is ugly to sell. Next to the value there’s a rounding selector: It applies after the calculation, and only to percentage and amount. Formulas aren’t rounded: they’re live, and rounding them would break the relationship with the base list.
All of this produces drafts. You see the result in the grid, with the previous price struck through, and only then confirm with Save. Or discard the whole thing.
Draft prices with the previous value crossed out

Comparing two lists

The Compare with button overlays another list as a reference. When it’s active it turns orange — it’s a mode, not a filter: it doesn’t hide products, it adds information. Under each price you get the other list’s price and the difference:
Compare mode: reference under each price
It shows on every row, including where the prices match. That’s deliberate: if it only appeared where there’s a difference, you couldn’t tell whether the rest matches or the data is missing. Matching rows are dimmer and carry no percentage, so what’s different stands out on its own. It’s for reviewing before you publish: “out of 119 products, only 2 have a different price on delivery — is that what we want?”.

Before saving: who the change reaches

If the list has connected lists, saving opens a summary of the blast radius:
Blast radius summary before saving
The line to look at is the one with ⚠. A list where every product you touched has its own price never hears about the change. It looks connected, but for those products it’s on its own.This is the mistake that costs the most: you think you raised everything and one list stayed put.
The same summary appears when you save a price from the product page, which is where the blast radius is most invisible — you can’t even see that price lists exist from there.

Connecting a list that already exists

Got a loose list that was born as a copy and drifted out of date? You can connect it: ⋮ menu → Connect to a base list. Before confirming, you’re shown exactly what will happen:
The rule is simple and invents nothing: whatever matches the base today starts following it; whatever has its own price stays put. That’s why connecting doesn’t move a single price at the moment you do it. What changes is from tomorrow on. And if you change your mind, Disconnect from base list returns it to being independent with exactly the same prices.

Recipes: how to handle real-world cases

  1. Open the delivery list (not the base — dine-in stays where it is).
  2. Select the products with the header checkbox, or filter by category if the increase is partial.
  3. Pick Percentage, sign +, value 8.
  4. Keep “Also prices inside combos” checked.
  5. Pick a rounding mode if you don’t want prices like 13.42.
  6. Review the grid: new prices show up with the old one crossed out.
  7. Save.
Products with their own price (Fixed) won’t move. If you wanted them to increase too, first send them back to Reset to =P.
If the aggregator takes 20%, you need to charge more to keep the same margin.
  1. Create a list connected to the base, named after the aggregator.
  2. Select all products.
  3. Apply Formula: =P*1.25.
  4. Save.
From there on, every time you change the base price, that list recalculates itself and keeps the margin. No need to touch it again.
  1. Create the list connected to the base.
  2. Select everything and apply Formula =P*1.15.
  3. The few products that need a different value: edit them one by one with a number. They’re marked Fixed.
  4. Assign the list to that store’s menu.
The key thing: the 15% stays live. The day the base goes up, the airport goes up with it.
For a limited-time promotion, the simplest path is a separate list:
  1. Create a list connected to the base (so the rest of the catalog stays current).
  2. Lower only the products on promotion, with a fixed number or =P*0.8.
  3. Assign it to the menu for the campaign duration.
  4. When it ends: reassign the previous list. The promo list stays saved for reuse.
If you’d rather not create a list, you can lower prices in the existing list and use Reset to =P at the end — but you’ll lose the record of what was on promotion.
  1. Open the delivery list.
  2. Compare with → Standard prices.
  3. Scan the grid: matching rows appear dimmed, differing rows show the percentage in color.
In two minutes you know how many products separated and by how much.

A 10% increase, followed end to end

Three lists, one product, one change to the base. Here’s what happens with each: Delivery updated on its own: nobody touched it. Airport didn’t, because someone gave it its own price at some point — and that’s exactly what the blast radius summary warns you about before saving. And if the product also sells inside a combo at 20.00, with the combo checkbox on that price becomes 22.00: the proportion (+83%) stays the same.

Mistakes that cost money

Using “copy” when you meant “connected”. The copy doesn’t get the base’s increases. Three months later you’re selling with outdated prices on that channel and nothing warns you.
Setting an own price for a temporary adjustment. That product is marked Fixed and stops receiving all future increases, not just today’s. If the adjustment is temporary, use a promotion list and return it with Reset to =P.
Unchecking “also prices inside combos”. You raised the menu but not the revenue: most sales go through combos, and those prices stayed put.
Ignoring the ⚠️ line in the blast radius summary. It’s the warning that an entire list won’t get the change. It shows up right before saving, which is the only moment you can still fix it.

Details that save you headaches

Drafts don’t disappear on their own. If you try to reload or leave the screen with unsaved changes, you’re asked: Save and continue / Discard / Stay here. The reload button. If someone else touched a price while you had the screen open, reload and pull the latest without losing your work. The currency comes from the countries your account operates in, not from a generic catalog: if you operate in Brazil and Colombia, you’ll see BRL and COP. Combos don’t appear in the product grid. A combo has no price of its own: its value comes from what you charge for each item inside it. That’s what the By combo view is for — it shows the composition and recalculates the total as you edit.
By combo view: composition and recalculated total

Glossary


Frequently asked questions

That product has its own price in that list (the Fixed mark). It’s intentional: someone set it at some point. If you want it to follow the base again, use Reset to =P.The blast radius summary warns you about this before it happens.
No. Inheritance is one level only: a list follows a base list, and that base follows nobody. Longer chains become impossible to reason about when something goes wrong.
No. Deleting a product clears it from every list automatically.
Because it’s the catalog price: it’s where the price you set on a product page lands, and the starting point every other list derives from. Deleting it would leave products with no price. It can’t be deactivated either.
The “Also prices inside combos” checkbox was unchecked when the change was applied. Apply the adjustment again over those products with the checkbox on.

What’s coming

  • Time-based prices (day-parting): a price that changes depending on the time of day.
  • Taxes, net price and reference price in the grid — today you work on the final price with taxes included.