Start free

Orders

Dine-in, delivery, takeaway, WhatsApp, Telegram, KDS

27 min read Open this screen in the demo
On this page 20

Orders — Dine-in, delivery, takeaway

Overview#

The Cenaly ordering system supports all key restaurant business scenarios:

Order type Description Ideal for
Dine-in Table order via QR code Restaurants, cafés, bars
Delivery Delivery to the customer's address Restaurants with delivery
Takeaway Pickup (customer picks up themselves) Cafés, fast food, bakeries
WhatsApp Order via messenger Latin America, Middle East
Telegram Order via Telegram Mini App CIS, Georgia

The admin panel has dedicated work screens for handling orders:

  • POS — order entry by a waiter, table binding via QR;
  • Kitchen (KDS) — kitchen display: queue, statuses, stations;
  • Courier — own-delivery screen with a map and routes;
  • Floor Plan — table map, waiters and reservations.

Order number#

Use the order number to identify an order on a kitchen ticket, queue display or pickup screen, whether calling a guest or handing an order to a colleague.

The server assigns the number when the order is created. How it does so is chosen per location: Settings → Orders → the Order numbering block.

Mode How the number is assigned
Number pool 1000–1998 (default) A four-digit number from a pool of 999 numbers: 1000–1998, one pool per location. The system randomly picks a number that has not been used recently, so numbers are not consecutive and repeat over time. Neighbouring orders don't get similar numbers, so a guest won't mix up their number on the queue display
In order, starting from a number The first order of the period gets the start number (1 by default), each next one is one higher. The period starts over every day or with each new cash shift

To switch on sequential numbering:

  1. Open Settings → Orders and pick the location if you have several.
  2. In the Order numbering block choose In order, starting from a number.
  3. Set the start number and when to start over: Every day or With each new cash shift.
  4. For a daily reset, set Day starts at, hour if needed: for a late-night venue, with 4 the orders until 4:00 still count towards the previous day. The day follows the location time zone.
  5. Click Save. The new mode applies from the next order.

Two registers placing orders at the same moment never get the same number: the server hands numbers out one at a time. A new start number applies from the next day or shift, so numbers already issued today are not repeated. With the shift reset, numbering starts over when a shift is open and none of the earlier shifts remain; cashiers with overlapping shifts share one sequence.

The order number differs from the fiscal receipt number: on cenaly.ru, the fiscal register assigns the fiscal document number. To find a payment, use the receipt history, which includes the linked order.

Why are order numbers not consecutive?#

In the default mode this is expected: the system picks a number that has not been used recently rather than adding one to the previous number. A gap alone does not mean an order is missing. Need consecutive numbers? Switch on sequential numbering (see above).

Can numbering start from 1 every day?#

Yes: Settings → Orders → Order numbering → In order, starting from a number, start 1, Every day. The first order of the day gets №1. For daily totals, keep using the cash shift.


Dine-in — Table ordering#

How it works#

  1. The guest scans the QR code on the table
  2. The menu opens linked to the table number
  3. The guest selects items, add-ons, and adds notes
  4. Taps Order
  5. The order instantly appears for staff (on the kitchen screen / waiter's tablet)
  6. The waiter confirms the order → the kitchen starts cooking
  7. The guest receives a status notification

Setup#

  1. Turn ordering on for the location: Locations → the location → the WEB tab. The same fields are gathered in one place under My website → the Online ordering card → Configure → the Delivery & pickup section.
  2. Configure the floor plan in the Floor Plan section: tables, zones, bar counter (see Floor Plan).
  3. Bind QR codes to tables in the same Floor Plan section — after that a table order is recognised automatically.

Table management#

  • Visual floor plan with drag & drop
  • Table statuses: free / occupied / reserved
  • Automatic release after payment

Call a waiter#

The guest taps "Call a waiter" in the menu and picks a reason: bring water, the bill, help with the menu, or "other".

The call travels the same path as an order itself — a signal to the server and from there to the staff in real time:

  • a bell in the Orders section — with the table number and reason, with sound (the sound can be muted with a button);
  • the "Calls" tab in the Hall panel — the same list, next to the scheme and the queue;
  • the "Acknowledged" button clears the call on both screens.

Separately from calls there is an addressed "order ready" push to the waiter: if a waiter is assigned to the table (see Floor plan, "Waiters" mode), the readiness notification goes to them rather than to the whole shift.


Pre-order slots#

If your kitchen can't absorb arbitrary "at 13:07" requests, turn on pre-order slots in the location settings. Then, for a scheduled order, the guest picks a slot rather than a free time:

Setting What it defines
Slot length 15 / 30 / 60 minutes — the grid step
Slot capacity how many orders to accept per slot (0 — unlimited)
Lead time the minimum notice for accepting an order
Horizon how many days ahead slots are opened (1–7)

The values can be set globally and overridden separately for pickup and delivery — their loads differ.

The guest sees the nearest slots taking opening hours into account; full slots are greyed out. Slot occupancy is counted from orders already accepted and updates automatically.


Pay-at-table — the guest pays from the table#

At a QR table the guest gets a floating "Bill" button: it opens the table's current bill (items, quantities, total) and lets them pay it online.

The button only appears when both conditions hold: the QR code is bound to a table and online payment is enabled for the location. After payment a webhook marks the order paid — the till and the Orders section see it as usual.

The guest can pay the bill in full or their own share: the bill sheet offers a choice between “split evenly” (they say how many people are sharing) and “by items” (they tick their own dishes, quantities can be split fractionally). A tip can be added on top of the share. Each share goes through as its own payment and the bill stays open until it is fully covered, with the amount due recalculated on the fly: if a neighbour has already paid their part, “pay in full” takes only the remainder rather than the whole bill again. Two guests paying at the same time will not overlap — a share is reserved on the server.


Delivery — Delivery#

Setting up delivery zones#

  1. Open the Couriers section — polygon zones, the venue point and courier settings live there (the order settings hub links to it as "Delivery zones on the map, couriers and the courier network")
  2. Draw zones on the map or set a radius from the venue
  3. For each zone specify:
    • Delivery fee
    • Minimum order amount
    • Estimated delivery time

General delivery terms (fee, free-from, minimum amounts, radius, notes) are set on the location: Locations → the location → WEB, or My website → Online ordering → Delivery & pickup. Details — Delivery.

Ordering flow#

  1. The customer opens the menu (via link, from social media, from packaging)
  2. Selects Delivery → enters the address
  3. The system determines the zone and shows the terms
  4. The customer places the order → pays online or on delivery
  5. The manager sees the order → assigns a courier
  6. The customer tracks the status: accepted → preparing → on the way → delivered

Courier management#

In-house delivery has its own Courier screen (see the guide):

  • The courier sees the queue: preparing → ready for pickup → out for delivery → delivered
  • "Take order" assigns the order to the courier, "Delivered" records the handover time
  • A map with the route to the customer and the courier's location
  • The payment method in the card: cash/card on delivery, online

Takeaway — Pickup#

How it works#

  1. The customer opens the menu → selects Takeaway
  2. Places the order → selects pickup time
  3. Pays online or chooses pay on site
  4. Receives confirmation with the order number
  5. Picks up the order at the scheduled time

Setup#

  1. Locations → the location → the WEB tab (or My website → Online ordering → Configure → Delivery & pickup)
  2. Enable takeaway
  3. Set the pickup terms: minimum amount and a note for the guest
  4. Configure minimum prep time (e.g., 15 minutes)

There is no separate "Settings → Takeaway" page: delivery and pickup are enabled by the same location fields.


WhatsApp orders#

A popular ordering channel in Latin America, the Middle East, and Asia.

Setup#

  1. Locations → the location → the WEB tab (or My website → Online ordering → Configure → Delivery & pickup)
  2. Turn on Accept orders via WhatsApp
  3. Enter the WhatsApp number in international format. Leave it empty to use the WhatsApp number from the location contacts

There is no "Settings → WhatsApp" page — the toggle and the number live in the storefront ordering block.

How it works#

  1. The guest builds a cart in the menu
  2. Taps Order via WhatsApp
  3. A WhatsApp chat opens with a pre-filled message (item list, quantity, total)
  4. The manager confirms the order in chat

Telegram orders#

Setup#

  1. Create a bot via @BotFather in Telegram
  2. In the admin panel → Integrations → Telegram
  3. Connect the bot to your location
  4. The menu will automatically become available as a Telegram Mini App

More details: Telegram Mini App — guide


Order management#

Orders panel#

All orders from all channels (dine-in, delivery, takeaway, WhatsApp, Telegram) are displayed in a single panel:

  • New — just received, awaiting confirmation
  • In progress — confirmed, kitchen is preparing
  • Ready for pickup — the kitchen finished; the order waits for the courier or the guest
  • Out for delivery — a courier took the order (for own delivery)
  • Completed — customer received the order
  • Canceled — order canceled

Notifications#

Staff receive notifications about new orders:

  • 🔔 Sound notification on tablet/computer
  • 📱 Push notification on phone
  • 🖨 Automatic kitchen ticket printing (when a printer is connected)

The guest gets an e-mail confirmation. The checkout form has an optional “E-mail” field (entered once — the address is remembered in the browser and pre-filled next time). When an address is given, a confirmation e-mail goes out with the order contents, the total and a link to its status, followed by a digital receipt once the order is paid. Letters come from the venue, in the guest's language. The order settings give the field three modes: hidden, optional (the default) and required — the last one makes sense where a receipt is always needed, for instance with online payment for takeaway. A consent checkbox for the venue's news can be shown next to the field: without it, the address is used only for this order and its receipt.

Result: the guest opens the page of their order and pays for it online by card, and the order card shows that it has been paid.

Prepare first: the location has an online payment provider connected and enabled — Locations → the location → Payments tab → Guest online payments block, Connect or Setup wizard button (see Payments). The link button in the order is shown even without a provider, but then the guest will see the order without a pay button.

  1. Open Orders and click an unpaid order.
  2. In the action bar, click Payment link.
  3. In the Payment link window (the order number is under the title), click Copy link — the button changes to "✓ Copied". Send the link to the guest in a messenger or by email. If the guest is next to you, let them scan the QR code in the same window.
  4. The guest opens the link, sees the Amount due block (if several providers are connected, they pick one), clicks Pay and pays on the provider's page.
  5. Check the result in the order card: while the payment is in progress you see Payment pending; after a successful payment — the ✓ Paid badge and the Online payment method. The Payment link button disappears, and Mark as Paid is replaced by Complete order. On the guest's order page the pay button is replaced by Paid.

Good to know:

  • The link is neither one-time nor time-limited. It is the address of the order page: the guest can still view the order after paying, but cannot pay a second time.
  • Payment does not change the order status. An online payment adds the Paid badge; you still mark the order as ready and handed over as usual.
  • This window does not send the link by email — only copy and QR.
  • The button is not shown for an order already paid online, a cancelled or rejected order, a guest draft, or Wolt and Glovo orders — they have their own panel.
  • If the payment fails, the card shows Payment failed — you can send the same link to the guest again.

View an order's change history#

Result: you see who changed which fields of an order and when.

  1. Open Orders and click the order.
  2. In the card header, next to the ✕, click the clock icon — tooltip Change history.
  3. The Change history panel opens at the side: a list of order versions with the time, the author and their role (owner, manager, staff, kitchen, courier). Changes made by the system itself are labelled "system", PIN operations — "operator (PIN)" with a name; a ✓ next to the name means the storage confirmed the author.
  4. Click a version row to expand What changed: a Field / Before / After table.
  5. To see the whole order as it was at that moment, click Show this state. The card shows the past state with a "Showing the state as of …" banner and becomes read-only; Back to current returns you to the current order.

Good to know:

  • This is a read-only log. You cannot roll an order back to a past version — from the panel or otherwise: only the server writes order changes, and the log records them.
  • History starts when order-storage versioning is enabled for your brand. Until then the panel says that there are no versions yet, only the current state; earlier changes will not appear in the log.
  • The panel is available to the owner and to managers with access to the Orders section. It shows the latest versions (up to 1,000); versions without changes are hidden and open with the "Show versions without changes" link.

Kitchen Display System (KDS)#

The Kitchen (KDS) screen in the admin panel shows the order queue (see the KDS guide):

  • Dish order by time received, timers
  • Item statuses: queued → preparing → ready; bump and recall
  • Stations — filtering by menu categories
  • All-day summary and a sound alert for new orders

Voice order management#

With the AI assistant, you can manage orders by voice:

Command Example
Open the order list "Show orders", "Open orders"
Open a specific order "Open order 42"
Accept an order "Accept order 15"
Mark as ready "Order 42 ready"
Mark as paid "Mark order 5 as paid"
Cancel an order "Cancel order 7"

All commands that change status require confirmation. More details — in the voice assistant documentation.


Breakdown: from a total to orders#

A manager sees in Finance that cash this week was lower than usual and wants to know which orders make up that figure. The Breakdown panel on the Orders page answers this.

From a report. On the Finance sales tab, the rows of the Payment methods and Sales channels blocks are links. Click Cash, for example: the Orders page opens with the Breakdown panel for the same period and location, filtered to cash. Revenue only is on — cancelled and zero orders are excluded, so the panel total matches the card figure. Orders open the same way from a staff member’s order count in Sales by staff (per the chosen axis — waiter or cashier), from the check count of a Discounts and promotions row (a specific promotion, discount reason or coupon) and from the labels of the Revenue, Orders and Average check cards.

Manually. On the Orders page, click Breakdown in the header — the panel opens for the last 7 days.

Panel filters:

Filter What it selects
From / To Order dates, both inclusive
Location One location or all locations you can access
Payment The order's payment method; "Not recorded" — orders without one
Channel Dine-in, delivery, pickup, aggregators — as in the Sales channels block
Staff The order's waiter or whoever took the payment
Discount Any, order discount, coupon or item discount
Item At least two letters of the name, or the item ID
Table 5 — exactly table 5; text — part of the table name
Refunded only Orders with a POS refund
Revenue only Without cancelled and zero orders

The order count and total are shown above the list. Click a row to open the order card. Filters live in the page address: you can send the link to a colleague, and F5 reopens the same view.

Export. CSV by order — one row per order. CSV by item — one row per order item: date, time, location, order ID, table, waiter, channel, payment, status, item, quantity, amount before discount, discount and total. For example, filter one item for a month and export its sales. The file opens in Excel with a double click: semicolon separator, comma as the decimal mark.

Saved filters. Click Save filters and enter a name, for example "Cash, terrace". The period is not saved — the current one is used when you pick a set. Sets are stored in this device's browser for your account.

Panel limits:

  • the table shows the first 300 orders; the rest go to the CSV;
  • the source is the same database as Finance; it refreshes when Finance opens and automatically every 30 minutes;
  • "Refunded only" sees POS refunds; without the Finance database it relies on the order's payment status;
  • filter sets do not move between devices and cannot be assigned to roles.

Order settings#

Settings live in two places — worth knowing so you don't look in the wrong one.

Ordering terms belong to the location: Locations → the location → the WEB tab. The same things are gathered on one screen under My website → the Online ordering card → Configure, as an accordion of four sections:

Section What it configures
Delivery & pickup Fees and free-from, minimum amounts, radius, notes, accepting orders via WhatsApp
Payments Card payments online (your own provider account) and payment methods offered on delivery
Checkout Checkout fields and the guest e-mail, scheduled pre-orders, checkout upsell
Fiscal receipts Where receipts for online orders are issued

The same hub links out to related sections: delivery zones and couriers, promo codes, loyalty, order automation rules, service charge and tips, taxes on the receipt.

The "Settings → Orders" tab is about handling orders that have already been placed:

Block What it does
Automation Auto-cancel unpaid orders after N hours and auto-complete handed-over/delivered ones. Checked hourly; cancellation goes through the normal flow (stock, notifications) and is reversible from the order card
Guest blocklist Phone numbers, e-mails and IPs whose orders are not accepted
Refund reasons Your own list of reasons the staff picks from when issuing a refund
Order numbering Number pool 1000–1998, or in order from a start number with a reset every day or with each new shift (see "Order number" above)

Payment methods visible on the order card: cash, card on delivery, online, corporate account, charge to room (hotel) and On credit — the order was closed at the till into the debt ledger (see POS).


7. Floor plan and table management#

Floor plan editor#

  1. Open the Floor Plan section — it is its own sidebar item, not a Settings tab
  2. Drag and drop elements: tables (round, square, rectangular), chairs, walls, doors
  3. Specify the number and capacity of each table
  4. Create multiple zones: main hall, terrace, VIP, bar counter

Details — Floor Plan.

Table statuses#

Status Color Description
🟢 Free Green Table is ready for seating
🟡 Occupied Yellow Guests are at the table
🔵 Reserved Blue There is a reservation for this time

There are no separate "awaiting payment" or "service" table statuses. On the POS floor scheme two extra signals are highlighted on top of the status: waiter call and order ready.

Linking QR codes to tables#

  • Each table gets a unique QR code
  • When scanned, the system identifies the table number
  • The order is automatically linked to the table
  • The waiter sees which table the order came from

8. Reservation system#

Reservations for guests#

Guests can reserve a table:

  1. Via the QR menu → "Reserve a table" button
  2. Via the venue website
  3. Via a Telegram bot
  4. By phone (manager enters it manually)

Reservation setup#

  • Time slots: reservation duration
  • Guest limit: minimum and maximum per table
  • Deposit: require a prepayment for the table — a fixed amount or per guest; separately you choose what happens to the deposit if the guest doesn't show up (forfeited or refunded)
  • Waitlist: the guest joins a queue, and the invitation to a freed table is valid for a limited time
  • Confirmation: automatic or manual

All parameters and their defaults — in Reservations and Floor Plan.

Notifications#

  • The guest receives confirmation (email / Telegram)
  • The manager sees all reservations in the calendar

9. Room Service (in-room dining)#

For hotels, hostels, and apartments:

Setup#

  1. Locations → the location → the Business type field → Hotel. Business type sets the terminology and default presets of the location; it does not limit any features
  2. In the Floor Plan section switch to Rooms mode and create rooms (101, 102… or names) instead of tables
  3. Place a QR code in each room

Ordering flow#

  1. The guest scans the QR in the room → sees the menu
  2. Selects dishes → places an order
  3. Enters the room number and delivery time
  4. The kitchen receives the order → prepares → staff deliver to the room

Additional options#

  • Ordering additional services (towels, pillows, cleaning)
  • Breakfast schedule with dish selection
  • Mini-bar: consumption tracking
  • PMS (Property Management System) integration

10. Split Bill#

The bill is split at the till, by a waiter or cashier:

  • by items — each guest picks their dishes and pays only for them;
  • equally — the total is divided by the number of guests.

Each part is closed with its own payment method (cash, card, corporate account), and the order counts as paid once all parts are closed. Details — POS.


11. Kitchen Display System (KDS) — detailed setup#

Hardware#

KDS works on any device with a browser:

  • Tablet (10–12 inches) — recommended for small kitchens
  • Smart TV (32–55 inches) — for large kitchens
  • Monitor with a PC — for large venues
  • Multiple screens at once — each shows its own station

Multiple kitchen screens: station presets#

There is no screen builder in the admin panel — a screen is configured on the kitchen screen itself. The number of screens is unlimited, and each one is locked to its own station.

How to connect#

  1. Open the Kitchen (KDS) section
  2. In the Stations panel tick the menu categories this screen should see (the hint says exactly that: "Show only dishes from selected categories")
  3. Press Save current as preset and name it (for example, "Grill")
  4. Take Copy link or the QR of the saved preset and open it on the kitchen tablet, TV or monitor
  5. The screen locks to that station — a "This screen is locked to a station" note appears

Presets are stored on the account, so the same link can be opened on several devices.

Example layout for a restaurant#

Preset Menu categories Device
Hot kitchen Hot dishes, sides, soups Smart TV 43"
Cold kitchen Salads, appetizers, desserts Tablet 10"
Bar Drinks, cocktails, fresh juices Tablet 10"
Pizza All pizzas Smart TV 32"
All orders no filter (assembly / handoff) Monitor 24"

How an item reaches the right screen#

Routing is done by the screen's menu-category filter, not by a field on the dish card: neither a menu category nor a menu item has a "KDS station" property. Whatever is ticked in the "Bar" preset is what the bar screen sees.

The only "station → hardware" link is the station printer: the same Stations panel defines which bridge printer prints that station's ticket and which one is its backup (see Kitchen printing).

Order queue board for guests#

The guest-facing screen is a separate thing, not a "KDS screen type". The public Order queue board shows order numbers that are being prepared and ready.

It is enabled on the location: Locations → the location → the integrations section → Order queue board. The same card holds the "Show delivery orders" toggle (off = counter orders only), the public link, a QR code and an "Open board" button. All that is left is to open the link on a TV in the dining area or at the pickup counter.

Station setup#

A station is a saved set of menu categories:

Station What it shows
Hot kitchen Hot dishes, sides
Cold kitchen Salads, appetizers, desserts
Bar Drinks, cocktails
All orders No filter — for assembly and handoff

Time color indication#

  • 🟢 < 10 min — within normal range
  • 🟡 10–15 min — needs attention
  • 🔴 > 15 min — critical, priority

The thresholds (10 and 15 minutes by default) are set in the KDS appearance settings and are shared by every kitchen screen of the account — there is no per-station threshold.

Managing orders on KDS#

  • Tap a dish → "Preparing", tap again → "Ready"
  • Start — take the whole ticket into work
  • Bump — the ticket is assembled and goes to handoff; the waiter is notified
  • Sound alert for new orders and when time is exceeded
  • All day — how many identical items are in progress in total

There are no swipe gestures and no bump-bar support on the kitchen screen — everything is done with taps and buttons.

KDS offline mode#

If the internet goes down:

  • KDS keeps showing the last known state — the orders and appearance settings already loaded
  • The screen reconnects on its own; orders missed meanwhile are fetched from the server once the connection is back
  • Statuses sync automatically

12. Order cancellations and refunds#

Cancellation policy#

Order status Cancellation possible? Refund
New ✅ Yes (automatically) Full refund
Accepted by kitchen ⚠️ With manager approval Partial/full
Preparing ❌ Manager only At manager's discretion
Ready ❌ No No (if picked up)
Out for delivery ❌ No Upon claim

Refund process#

A refund is not issued from the Orders section: the order card only displays the refund status. There is no "Refund" button there right now — it is in the works.

  1. The guest contacts the manager
  2. The manager opens POS → Receipts, finds the sale receipt and issues the refund against it
  3. Selects items to refund (full or partial) and the refund method
  4. Retail-vertical orders with a submitted refund request are visible in the Returns section

Details — Receipts and refunds and Returns.


What you need to get started#

  • At least one order channel: the QR storefront, the POS, the Telegram shop, an order widget on your site, or a manual order created by a manager.
  • An understanding of the "guest order needs confirmation" setting. By default an order placed by a guest reaches the kitchen, the POS and the courier board only after an operator accepts it here; the location setting switches back to "straight to work" — for points where there is nobody to accept orders manually.
  • Employee roles — access to the section and to "My orders" is governed by permissions (Staff).
  • Configured order types — dine-in, pickup, delivery: each has its own guest fields and its own rules.

Limitations#

  • The order-acceptance setting is per location. There is no bulk "switch on for all locations of the account".
  • Updates come over a websocket. Without a connection the list does not refresh itself — reload the page manually (If the internet goes down).
  • The time promised to the guest is static. It comes from a location setting and is not computed from current kitchen load; there is also no automatic channel pause on overload.
  • Aggregator orders are verified on mocks. There are no live partner connections to Wolt, Glovo, Yandex Eda or Deliveroo.
  • A WhatsApp order is a message to the owner, not an order in the pipeline: the reply and the status are handled in the chat manually.
  • The only writer of an order is the server. Edits arrive as separate signals, so a change does not land instantly and "direct editing of the order file" does not exist.
  • An order's change history has no rollback and starts when storage versioning is enabled for the brand (details).

Troubleshooting#

A guest's order did not reach the kitchen. Most likely it is waiting for an operator to accept it: accept it here, or switch the location to "straight to work".

The status does not update on screen. Updates come over a websocket — reload the page if the connection dropped.

A guest says the promised waiting time is wrong. The promised time is static and set by a location setting — change it in the order settings.

An order from an aggregator is missing. There are currently no live marketplace connections.

An order is "stuck" in a status. Check that somebody further down the chain can move it: the kitchen display, the handoff screen or the courier board must be enabled and open.