A restaurant point of sale has a harder job than a retail till. A retail order is built, paid, and closed in one pass. A restaurant order lives for an hour or more: it is attached to a physical table, it grows in stages, parts of it must reach the kitchen at different times, and the people paying for it may not be the people who ordered it. Odoo 20's Point of Sale app handles that lifecycle with a dedicated restaurant mode — a visual floor plan, table-based orders, courses, and a kitchen flow built around preparation displays and printers.
Most of that machinery is long-standing Odoo capability, and the Odoo 20.0 documentation describes it in its current form. What Odoo 20 itself adds is a layer of polish: automatic combo suggestions for large tables, product snoozing when the kitchen runs out of something, self-ordering notes that land on the kitchen display, and better printer management. This article walks through how tables, courses, and the kitchen flow fit together, separating what is new in 20 from what was already there.

Turning a till into a restaurant
Restaurant behaviour is switched on per point of sale. In the POS settings you can click + New Shop, give the restaurant a name, and enable the Is a Bar/Restaurant setting; existing shops can enable the same setting on their configuration. That one switch unlocks the restaurant feature set described in the 20.0 documentation: organizing the floor plan, managing table orders, configuring a preparation printer, splitting bills and printing receipts, collecting tips, and setting different taxes for eat-in and take-out orders.
The interface reorganizes itself around the dining room. Three buttons at the top of the screen move between views: Tables opens the floor plan, Register opens the order-taking screen, and Orders shows an overview of all orders. If the Booking setting is enabled, a fourth Booking button appears for managing reservations — enabling Booking automatically installs the Appointments app. You also choose a default start screen: after an order is sent, staff are returned to either the floor plan or the register, whichever suits the way your room works.
The floor plan: tables as the home screen
The floor plan is a visual map of the room, and it is where service starts. Creating a restaurant from scratch creates a floor automatically, named after the company; following the onboarding flow creates Main Floor and Patio plans. The Tables view shows every table's status in real time — occupancy, reservations, and kitchen orders — so a host can see at a glance which tables are occupied, which are available but booked for a specific time, which booking is running late, and which tables have orders in progress.
The built-in floor plan editor makes the map match the physical room. Tables can be added in square, rectangular, round, or oval shapes, resized by dragging their borders, rotated, duplicated, and given a seat count and a table number. Decor elements — walls, images, and shapes — can be placed so the plan reads like the actual room, and floors can have background colours or uploaded background images. Editing is not cosmetic only: click and hold a table and drag it onto another table, and the two are merged for a large party, sharing a single order; they automatically separate back to their original positions once the order is paid.
Selecting a table, or jumping to one with the Table Selector by entering its number, automatically confirms its occupancy and opens its order. A New Order button creates a direct sales order that is not linked to any table — useful for counter and takeaway sales — and such an order can still be attached afterwards with Set Table, or given a name with Set Tab for bar tabs.
Taking, moving, and reshaping orders
The basic order process is short: click products to add them to the cart, link the order to a table or a tab, click Send to validate the order, and process payment when the guests are ready. Around that skeleton sit the tools that handle real dining-room chaos:
- Transfer/Merge: from the Actions menu, an order can be transferred to an available table, or merged into an occupied table's order when two parties join up.
- Release table: with an empty cart, a table's occupancy can be cancelled from the cart if guests leave before ordering.
- Cancel Order: cancels an ongoing order; if an order printer is configured, a cancellation ticket is printed automatically for an order already sent to the kitchen, so the kitchen stops working on it.
- Presets: orders can be tagged with service types such as Dine In, Takeout, or Delivery, which also drive per-preset settings.
- Kitchen order notes: preferences, allergies, and special requests captured at the register — or from mobile self-ordering and kiosks — are routed to kitchen display screens or bar printers.
Courses: controlling what the kitchen cooks, and when
Courses are how Odoo models the rhythm of a meal. The courses feature organizes an order into distinct serving phases — starters, mains, desserts — and manages when each phase is sent to the kitchen, instead of dumping the whole ticket on the pass at once.
Manual allocation
Working directly in the register, the server clicks the Course button and adds the products for that course, repeating as needed. Alternatively, clicking Course several times first creates the empty courses in the cart; the server then selects each course in turn and adds its products. Items can be corrected afterwards: select a product or a whole course header, open the Actions menu, choose Transfer course, and pick the destination course.
Automatic allocation
For speed, courses can be assigned automatically by POS product category. With Automatic course allocation enabled in the Preparation section of the POS settings, each POS product category is given a Course — Burgers to Main, for example. Adding a product from that category then files it under the right course without the server thinking about it. One course can serve several categories (Burgers, Pizzas, and Meat can all be Main), you can create as many courses as the menu needs, and the order courses appear in the cart can be rearranged in developer mode to match your service flow.
Firing courses and the kitchen flow
Sending and firing are different moments, and the distinction is the heart of the kitchen flow. Clicking Send transmits the order to the kitchen: the first course appears on the preparation display without a label, meaning it is waiting to be prepared, while subsequent courses are labelled Pending. The Send button's text even reflects what is being sent, dynamically including the POS categories of the items. When the room is ready for the next phase, staff open the order from the floor plan or the Orders overview, load it, and click the Fire [Course] button — repeating as each course becomes ready. The kitchen never starts the mains while the starters are still being eaten, unless someone fires them.
On the kitchen side there are two delivery mechanisms, and many restaurants use both. The preparation display — reached through the Kitchen Display app — shows orders on a screen, organized by configured stages, with an alert timer per stage indicating the expected processing time; each display is fed by specific POS product categories, so the bar display and the main kitchen display see different tickets. Preparation printers cover stations that still work on paper: in the Preparation section of the POS settings you enable Preparation Printers, set the printer type to Preparation, and choose which product categories it prints, so grill items and desserts go to different stations. New in Odoo 20, the Split per product option can print one preparation ticket per product instead of one ticket grouping the whole order, and printer management now lets a POS carry multiple printers and select which one prints — a real help in large venues with several drawers and stations. A duplicate of the last kitchen order can also be reprinted from the register when a ticket goes missing.
What Odoo 20 adds for restaurants
The headline POS change in the Odoo 20 release notes is combos: the POS now recommends converting order lines into a combo when possible, simplifying menu orders for big tables — alongside the broader auto-combo support, where qualifying items added to an order prompt staff or self-ordering customers to convert them into a bundled meal deal with prices adjusted in real time. Also new: products can be snoozed, made temporarily unavailable on the POS and self-ordering menus when the kitchen runs out of them; customers using self-ordering can leave notes at checkout that are visible on the kitchen display; service fees can be added to POS and self-orders via presets and shown on invoices; and bookings gain dedicated Kanban and pivot views.
None of that changes the underlying model — table, order, courses, kitchen — but it removes friction at exactly the points where a busy service generates workarounds. If you are already running restaurant mode on an earlier version, the upgrade case rests on these refinements rather than on any relearning: the floor plan, the Send and Fire rhythm, and the preparation display all work the way your staff already know.
Further reading
- Odoo 20 Release Notes — the Point of Sale section: combo conversion, split-per-product preparation tickets, printer management, snoozing, and service fees.
- Restaurant features — Odoo 20.0 documentation — floor plans, order management, courses, order printing, bills, and tips in full detail.
- Point of Sale — Restaurant features (odoo.com) — the feature overview: preparation display, course sequencing, floor plans, bookings, and kitchen order notes.
