Kitchen Display System

The kitchen screen — how orders reach it, what the colours and timers mean, and how the cook marks food done.

9 min read · Updated 10 Sep 2026

On this page

The Kitchen Display System, or KDS, is a screen in your kitchen that shows what has been ordered and what is still to be made. It replaces the printed docket: orders arrive on their own, the cook taps items as they go out, and finished orders leave the screen.

You do not need a special device. The KDS is a web page, so any tablet, laptop or old monitor with a browser will run it.

Needs the Kitchen Orders & Tables add-on (₱400 per branch each month), which also covers Table management. It is in the Kitchen Pack (₱1,399 a month) and the Everything Bundle (₱2,999 a month). See Plans & add-ons.

There is a second switch as well: Kitchen Display System (KDS) under Feature Toggles in Store Settings. It is on by default for food-and-beverage stores and off for everyone else, and turning it off stops orders being sent to the kitchen at all.

How an order reaches the kitchen

An order is not typed into the KDS. It arrives from wherever the sale was rung up, in one of four ways:

Where the order comes from When it appears on the KDS
A sale paid at the counter The moment the sale is completed
A dine-in order sent to a table When the cashier sends it to the kitchen from the mobile app
Items added to an open tab As soon as they are added
An online store order When you accept it. See Online orders

Everything that follows on this page is about the KDS screen itself. Taking the order, choosing the table and sending it to the kitchen all happen in the Kassly mobile app, which is the only working POS. See Making a sale.

A held or parked cart does not reach the kitchen. Only an open tab that has been sent, or a completed sale, appears on the KDS. If the cook is not seeing an order, check the order was actually sent rather than just saved.

Order states

The KDS tracks each line on an order, not just the order as a whole:

State What it means
Pending Sent to the kitchen, nobody has started it
Preparing Being cooked
Ready Done and waiting to go out
Served Handed over. This is what clears it from the screen

An order leaves the KDS when every line on it is Served. Nothing expires and nothing is cleared automatically, so a screen that is filling up means orders are not being marked served.

There is no rule that promotes an order by itself. Marking every line Ready does not mark the order Served — someone still presses the button.

The four screens

All four are full-screen pages with no sidebar, and you switch between them from the header.

Screen Address Best for
Kanban /app/kds The default. Three columns: Pending, Preparing, Ready
Grid /app/kds/grid A wall of order cards with timers, keyboard control and printing
Wall /app/kds/wall One column per prep station — the expo view
Stats /app/kds/stats Average prep time, throughput, slowest items

Kanban

Three fixed columns. Each header shows how many orders are in it, and each column has one action that moves the whole order forward:

Column Button
Pending Preparing
Preparing Mark All Ready
Ready Mark Served, and Recall to send it back

Tap an individual item's checkbox to advance just that line. The columns are click-driven — you cannot drag cards between them.

An order with a mix of finished and unfinished lines sits in Preparing, so the middle column is where most of the real work is.

Grid

The same orders as cards in a grid, with more on each card and more control:

  • The order number, or ORD- plus the last six characters of its id if it has no receipt number yet
  • RUSH in red across the top of rushed orders, with the card outlined in red
  • The table and the number of covers, as Table T1 · 4 pax
  • Each line as a large quantity and name, with its variant, its modifiers and any special instructions in amber
  • Anything the cashier typed as an order note, in an amber box
  • Mark All Ready, then Mark Served and Recall once everything is ready
  • Toggle Rush and Print

Pending orders sort above ready ones, and rushes above everything.

Tap an item to move it forward; press and hold it for half a second to move it back. That long-press works on the Grid and Wall screens, not on Kanban.

The timers

Each card carries the time since the order arrived. It counts in whole minutes — <1m, then 7m, then 1h 5m — and changes colour:

Age Colour
Under 15 minutes Grey
Over 15 minutes Amber
Over 30 minutes Red

These thresholds are fixed. There is no setting for them.

Separately, an item with an estimated prep time shows a countdown bar while it is being prepared. The bar turns amber at 80% of the estimate and goes red and pulsing, labelled OVERDUE, once the estimate has passed.

Only services carry an estimated prep time. The field is Estimated Prep Time (minutes) on a service in your services catalog. There is no such field on a product, so ordinary menu items show no countdown — only the age timer above.

Wall

One column per prep station, plus a column literally named Unassigned for items routed nowhere. Use it as your expo screen: each column shows only its own station's lines. See Stations.

The Wall screen is half-finished. Its Rush, Print and Recall buttons do nothing, and its Mark Served button actually marks the items Ready, not served — so an order can never be cleared from the Wall. Clear orders from the Kanban or Grid screen instead, and treat Wall as read-only.

Stats

Average prep time, average wait before someone starts, how many items were completed, what is pending and preparing right now, items per hour through the day, and your ten slowest items. It refreshes every 30 seconds and covers one day at a time.

Stats is for owners and managers only. The tab is shown on a paired kitchen screen too, but tapping it there just says it could not load the stats.

Marking things done

Four things you can do to a whole order, from the buttons on its card:

Action Effect
Preparing Everything Pending becomes Preparing, and the clock starts
Mark All Ready Everything not yet Ready becomes Ready
Mark Served Everything Ready becomes Served, and the order leaves the screen
Recall Everything Ready goes back to Preparing

Mark All Ready is not limited to your station. Even on a screen locked to one prep station, these four buttons act on the whole order. If the person at the bar presses Mark All Ready, the fried-chicken lines on that same ticket are marked ready too. Mark individual items instead when several stations share a ticket — or use the Wall screen, which is the one place that acts on a single station's lines only.

Sending an item back to Pending wipes its timestamps, so the prep-time figures on the Stats screen no longer count it.

Keyboard shortcuts

On the Grid screen only:

Key Does
Arrow keys Move between orders
Enter or Space Bump the selected order — Ready, or Served if it is all ready
Backspace or Delete Recall
R Toggle rush
S Toggle the sound
F Full screen
1 to 9 Jump to an order by position
? Show or hide the shortcut list
Esc Deselect

Sound and printing

The Grid screen plays a short two-tone beep when a new order arrives, and the speaker button in the header turns it on and off. Two things to know: the sound is generated by the browser rather than played from a file, so it may stay silent until somebody taps the screen once after the browser starts, and only the Grid screen has a toggle. Kanban and Stats make no sound at all.

The printer button next to it turns on Auto Print, which prints a kitchen ticket for each new order when a supported printer is connected to that browser. Both settings are remembered per browser, so each screen needs setting up once.

Live updates

The KDS is live. New orders and status changes reach every kitchen screen through a websocket connection, so a screen sitting untouched on a shelf updates itself — nobody has to refresh anything. On top of that, each board reloads itself every 5 seconds (30 seconds for Stats) as a safety net, so even a broken websocket only costs you a few seconds' delay.

There is no connection indicator. If the network drops entirely, the board keeps showing the last orders it knew about rather than warning you. On a screen that has been up all day and looks suspiciously quiet, reload the page.

Running it on a dedicated screen

You do not have to sign a staff account in on the kitchen tablet. Pair it instead, so it shows nothing but the kitchen board:

  1. In Kassly, open the KDS and press Pair Station. Choose the branch, and the prep station if the screen is for one area only.
  2. Kassly shows a 6-digit code, good for 15 minutes and one use only.
  3. On the kitchen device, open /app/kds/pair and type the code.

The device is then paired for one year, after which it stops working and has to be paired again. Its header shows Exit and Unpair instead of the normal navigation, and if it was paired to a prep station it is locked to that station — it cannot be switched to another one from the device.

Every branch includes one paired screen. More cost ₱100 each per month, bought from Settings → Billing. Pairing beyond your allowance is refused with a message telling you the limit.

Two administrative notes:

  • Managing paired screens is owner-only. A manager can generate a pairing code, but only the owner can see the list of paired screens at /app/kds-stations, rename them, or unpair one.
  • Turning the KDS toggle off in Store Settings cuts every paired screen off immediately, with a message about the add-on.

What the KDS does not do

  • It is not where orders are taken. Nothing can be added to an order from the kitchen screen.
  • Served is not proof of delivery. Marking an item served says a person pressed a button. There is no runner confirmation and no record of who served what.
  • A screen locked to a prep station is not locked to a branch. The station lock is enforced properly; the branch is a display filter on the device. Bear that in mind before handing a paired tablet to somebody outside the business.
  • The English / Filipino switch in the header only covers the KDS. The Tables and Prep Stations pages are English only.
  • Declined items are invisible. A line can be rejected through the API, but no button in Kassly does it, and a rejected line is shown on the board as if it were still Pending. Treat rejections as not implemented.