Odoo runs a restaurant or café on Point of Sale for tables, orders and payments, a kitchen display for the stations, Inventory and Manufacturing for ingredients and recipes, and Accounting for the daily close. Planning, Attendances and Payroll cover the staff. Everything sits in one database, so a dish sold at a branch reduces that branch’s ingredients, and the day’s sales, costs and cash are in Accounting as soon as the register is closed.
What a restaurant needs and where it is in Odoo
| Need | Odoo app or setting | Notes |
|---|---|---|
| Floor plan, tables, transfers, split bills | Point of Sale with Is a Bar/Restaurant on | Standard in Point of Sale |
| Kitchen screens by station | Preparation display (the Kitchen Display app in Odoo 20) | Odoo Enterprise |
| KNET payments | A payment method for each KNET terminal | Standalone terminal, or integrated per bank |
| Arabic receipts | Receipt in Arabic, English or both | Bilingual layout set during setup |
| Recipe costs and ingredient stock | Kit bills of materials (Manufacturing app) | Ingredients deducted at each sale |
| Central kitchen to branches | Inventory: resupply between warehouses | Transfers from the central kitchen |
| Delivery platform orders | UrbanPiper connector or a custom integration | Scoped case by case |
| Shifts, attendance and salaries | Planning, Attendances, Payroll | Kuwait payroll rules configured |
| Daily close and margin per branch | Register closing and the POS orders report | Cash counted for each session |
Point of Sale for tables, counters and takeaway
In Odoo Point of Sale a restaurant is a shop with the Is a Bar/Restaurant option switched on. You draw each floor with its tables and seats, and staff take orders by table on a tablet or at the counter. An order can move to another table, two tables can be merged for a larger group, and dishes can be grouped in courses so the mains go to the kitchen when the starters are cleared.
- Split bills by item or by guest, each part paid separately.
- Tips added to the order as an amount or a percentage.
- Dine-in and takeaway on the same screen, with different prices or taxes per order type where needed.
- Table bookings taken from the register in recent versions, through the Appointments app.
- Offline selling: the register keeps taking orders when the internet drops and syncs them when it returns.
Guests can also order from a QR code on the table or from a self-order kiosk, and those orders reach the same kitchen screens. More on Odoo Point of Sale.
Kitchen display and printers
When a waiter presses Send, each item goes to the station that prepares it: grill, cold kitchen, bar or pastry. A station can have a printer, a screen or both. The preparation display shows orders by stage, such as To prepare, Ready and Completed, highlights an order that has passed the time set for its stage, and shows the average preparation time. An order status screen at the counter tells takeaway customers when their order is ready.
The preparation display is part of Odoo Enterprise, and in Odoo 20 it opens as the Kitchen Display app. Kitchen printers connect over the network or through an IoT box.
KNET, cash and Arabic receipts in Kuwait
Odoo connects out of the box to card terminals from a list of providers, among them Adyen, Stripe, Viva.com and Worldline. KNET terminals issued by Kuwaiti banks are not on that list, so there are two ways to take KNET:
- Standalone terminal. The cashier keys the amount into the bank’s terminal and selects the KNET payment method in Odoo. Each payment method posts to its own journal, so the bank’s KNET settlement can be matched against it.
- Integrated terminal. Where the acquiring bank offers a way to connect its terminal, the register sends the amount and the approval comes back to the order. This is a custom integration that we scope per bank and terminal model.
At the end of the day the cashier closes the register. Odoo shows the expected amount for each payment method, the cashier enters the cash count, and any difference is posted to a cash difference account. You can set a maximum difference above which a manager has to approve the closing.
Kuwait has no VAT, so receipts carry no tax lines. Prices are in Kuwaiti dinars to three decimals, and menu items can be named in Arabic and English. Receipts can print in Arabic or English, and a receipt with both languages is a change to the receipt layout that we make during setup.
Recipes, ingredient stock and the central kitchen
A dish in Odoo is a product with a bill of materials of the Kit type: 150 g of chicken, a portion of rice, 30 ml of sauce, a container. Bills of materials come with the Manufacturing app, so it has to be installed. When the dish is sold at the register, Odoo deducts the ingredients from that branch’s stock and costs the sale from the ingredients, so the margin on each dish follows ingredient prices.
Sauces, dough, marinades and other items made in batches have normal bills of materials and are produced with manufacturing orders. A central kitchen is set up as its own warehouse that produces them, and each branch is a warehouse resupplied from it: a reordering rule at the branch, or a daily request, creates a delivery from the central kitchen and a receipt at the branch.
Waste and staff meals are recorded as scrap or as moves to a location of their own, so they appear in the cost instead of in the count difference. A weekly or monthly count per branch then shows the gap between what the recipes say was used and what is left on the shelf. More on Odoo Inventory.
Orders from delivery apps
Delivery orders need to reach the same kitchen screens, stock and daily close as dine-in orders. Odoo Enterprise 18 and later includes a connector to UrbanPiper, a separate order aggregation service with its own subscription. Odoo publishes the platforms it covers country by country, and each platform also needs a reseller account on your side.
We build delivery integrations case by case: through UrbanPiper where it covers your platforms, directly where a platform gives API access, or by entering platform orders at the register when volumes are low. We confirm the route during scoping. Each platform gets its own payment method, so its payouts can be checked against the orders.
Staff schedules and payroll
Planning builds the weekly rota by role (waiter, cashier, cook, driver) and by branch, and publishes each person’s shifts to them. Attendances records check-in and check-out on a kiosk tablet at each branch. Payroll uses the worked days, overtime and leave to compute the payslips.
For Kuwait, the payroll setup covers end-of-service indemnity, leave, PIFSS contributions for Kuwaiti staff and the bank salary file. The Odoo Payroll page describes it in detail.
Daily closing and margin per branch
Each branch has its own register, or several. Closing a register posts the day’s sales and payments to Accounting by payment method: cash, KNET, credit card and each delivery platform. The POS orders report shows sales and margin by point of sale, product and category, so the owner can compare branches the next morning.
A full profit and loss per branch, with rent and salaries in it, needs one decision at the start: each branch as its own company, or a branch analytic account on costs alongside the POS report for sales. We agree which with your accountant during design.
What IT Horizon does for restaurants
We start with one branch: a workshop on the menu, the stations, the payment methods and how stock is counted today. We load the menu with its recipes in Arabic and English, set up floor plans, printers and kitchen screens, and run a full test service on a copy of the database before the first live day. Cashier and kitchen training is at the branch, in Arabic or English. Once the first branch runs well, the others follow on the same setup, and we stay on support through the first weeks.
We are based in Salmiya, have 10+ years of Odoo work behind us, and work on site at your branches during setup and go-live.
What to do next
- List your branches, kitchen stations and payment methods, including each delivery platform you sell through.
- Write down the recipes of five dishes with quantities. That is enough to test recipe costing.
- Book a consultation with that list. A consultant shows the floor plan, the kitchen display and recipe costing in Odoo and outlines the scope for your branches.