Your email and password. The token lasts for this browser tab only and is never written to disk.
Sign in with the platform key instead — for an account created before passwords existed.
What groups dishes on the kiosk grid. The code is the stable handle the CSV importer matches on — change a title freely, change a code and the next import creates a second category.
Categories get the same drawn tiles as dishes — this strip is the first thing a guest sees after choosing how they are eating.
| Code | Sort | Live | Dishes |
|---|
Most shops need none of these: every dish is taxed at the branch's own rate and that is the end of it. Add one when a government disagrees — zero-rated groceries in Canada, alcohol at a higher band in Norway, a deposit that is not a sale. A dish left on branch default is unaffected by anything here.
The percentage is what a guest is charged. The code is what you type in the CSV importer, so keep it short and keep it the same.
| Code | Name | Basis points | Dishes |
|---|
A group is a question the kiosk asks — “Sauces”, “Add cheese” — and the options are the answers. Min and max say how many a guest may pick: 0/1 is optional, 1/1 forces a choice. A price of 0 is free, and is written down rather than left blank.
A station that makes things: a hot line, a bar, a wine area. Each dish belongs to one; each printer serves one. A dish with no station goes to whichever section is marked default, so nothing a nobody categorised can fall on the floor.
| Code | Default | Live | Dishes |
|---|
The template comes back with your current menu already in it, so the normal path is download, edit, re-upload — not retype. It opens correctly in a Nordic Excel: semicolons, a BOM, and CRLF line endings. An upload is staged and validated first; nothing changes until you press Apply.
Owner only. These are the merchant's own credentials and they are not a manager's to change. Nothing is sent to any of these services until you switch it on.
Credentials are stored on the server, outside the database, and are
never sent back to this page — a field showing on file has a
value saved. Leave one blank to keep what is already there; type
- to clear it.
The last 40, newest first. Refund gives a paid order back; an order still waiting at the counter was never paid, so it is cancelled instead — the system works out which.
A refund is counted on the day it is given, never on the day of the sale. A Z report that has already been taken does not move.
| # | When | What | Type | Paid | Total | Status |
|---|
Everyone who works at this branch. A PIN signs them in to the till and clocks them in; it is unique per branch and never shown again once set. A person who leaves is retired, never deleted — their shifts and hours stay.
| Name | Role | Till | PIN | Now |
|---|
One shift = one person on one drawer, float to count. The difference is theirs.
| Who | Drawer | Opened | Closed | Float | Cash sales | Expected | Counted | Difference |
|---|
Hours are the sum of worked periods — lunch, break, dinner — never last-out minus first-in. A period with no clock-out counts nothing until a manager fixes it.
| Who | Days | Hours | Open period |
|---|
| # | Pickup | Who | What | Paid | Kitchen |
|---|
| Time | Code | Who | Guests | Source | Messages | State |
|---|
Every SMS and email a booking owed, and what happened to it. A gateway that is down leaves rows queued with the reason; nothing is lost.
| When | Booking | Channel | To | State | Tries | Error |
|---|
| Item | Opening | In | Sold | Waste | Adjusted | Closing | COGS | Waste value |
|---|
Bought by the pack, counted and used by the unit. Pack size = how many units one pack holds (a case of 12 × 1 l milk = 12000 ml). On hand is the sum of every movement, never a typed number.
| Code | Name | Area | On hand | Par | Avg cost | Value | Supplier |
|---|
A dish with no recipe is reported as uncosted, never as free. Lines are in the stock item's unit per one dish sold. Sizes and extras can carry their own lines (from the till or API; here: the base recipe).
| Dish | Recipe | Cost | Price | Food cost | Sold out |
|---|
| Item | On hand | Par | Packs | Supplier | Pack price |
|---|
| PO | Supplier | State | Lines (ordered / received) | Total |
|---|
Ordered vs arrived vs billed, per line. A disputed invoice says exactly how much to ask back.
Lines as CODE packs price one per row, e.g. MILK 2 24000:
| Invoice | Supplier | Issued | Gross | State |
|---|
| When | Kind | Item | Qty | Reason | By | Value |
|---|
A hall is a map: tables where they stand, in a 100 × 60 grid. Tables are retired, never deleted — past bills point at them. Website bookings check this plan for a table that seats the party.
Tap a table on the map to select it; then move it with the arrow buttons or retire it.
A meal on account is revenue today and money owed until the invoice is paid in — the Z keeps the two apart. Over the credit limit is refused; a manager override is logged by name.
| Account | Limit | Uninvoiced | Open invoices | Invoices |
|---|
A discount is a row with an offer, a reason and a name — the line keeps its real price. Cashiers may give up to their cap; beyond it a manager approves.
| Code | Name | Kind | Value | Trigger | Active |
|---|
Sold = money in, not revenue. Redeemed = revenue, not money in. Balance is the sum of the card's movements.
| Card | Issued | By | Expires | Balance | Active |
|---|
Every phrase the matcher could not place is recorded here with a count, in the language it was said in. Bind the frequent ones to a dish and every later guest who says it is understood — including on tablets that are offline, because the binding travels in the menu snapshot rather than being looked up.
This is the whole reason the kiosk gets better in a shop rather than staying as good as the day it was installed. A phrase said four times is four guests who had to tap instead.
| Heard | Language | Times | Last heard | They meant |
|---|
The app ships string tables for all of these. A guest sees the ones you tick, in this order — English and Arabic first, without a flag, because neither belongs to one country.
Printed on every X and Z report. Norwegian rules require the registered company name and organisasjonsnummer to appear on them.
The kiosk waits that many seconds with nothing touched, then asks whether the guest is still ordering and gives them ten seconds to answer. No answer and it starts over, so the next guest never inherits a basket. Between 10 and 600.
Issuing a code unpairs that tablet until the code is typed in. It lasts 15 minutes.
| Label | Paired | Last seen |
|---|