Odoo 20 POS in Saudi Arabia: What's New for Retail Stores and Restaurants

Odoo 20 brings multi-currency checkout, pay-after-meal QR ordering, WhatsApp receipts and simplified stock without the Inventory app to the till. Here is what Saudi shops and restaurants gain, and how it fits ZATCA Phase 2.

Published 2026-10-06 · METCH

Odoo 20 POS at the till: faster, tighter checkout for Saudi retail

Most of what Odoo 20 changes for a Saudi shop happens in small moments at the till, the ones that count on a busy Thursday evening or in Ramadan's last ten nights.

  • Order search: the Orders screen finds a sale by receipt or invoice number, which speeds up returns.
  • Supervised access: employee access levels have been renamed, and a new, very restrictive Supervised level suits seasonal cashiers hired for Ramadan and Eid.
  • Expired-product warning: the cashier is alerted when an expired item is selected, useful for grocery, bakery and cosmetics shelves.
  • Layout and labels: products can be rearranged on screen by drag and drop, any label printer can connect through a USB proxy, and labels can show the base unit price.
  • Receipts: paper size can be set in developer mode, and a new simplified receipt prints only subtotals and taxes.

That simplified receipt is only an Odoo print layout. It is not ZATCA's simplified tax invoice and never replaces it.

One point of sale can now accept multiple currencies at checkout. Most Saudi baskets are paid in riyals by Mada or card, so this mainly helps stores serving pilgrims and visitors in Makkah and Madinah. Odoo has not yet documented how change and rates work, so confirm it in a demo. SAMA is now a built-in exchange-rate provider.

On the sales side, Odoo 20 adds pricelist rules for set periods or weekdays (a weekend or Ramadan offer), expiring loyalty points and once-per-customer discount codes; test each one at your till before promoting it.

Restaurants and cafés: self-ordering, kitchen tickets and service fees

For a café in Riyadh or a family restaurant in Jeddah, Odoo 20 concentrates on the stretch between the order and the bill.

  • Pay at the end: a QR code printed for a specific order lets diners order from their phones and pay once, after the meal.
  • Kitchen notes: notes customers leave at checkout now appear on the kitchen display, and optional products show on mobile and kiosk menus.
  • Snooze: an item that runs out mid-service can be made temporarily unavailable on POS and the self-order menu.
  • Big tables: POS suggests turning separate lines into combos, and bookings get their own Kanban and pivot views.
  • Printing: several printers can be linked to one POS with the cashier choosing between them, and Split per product prints one preparation ticket per item.

Service fees can now be added through presets, the reusable Dine In, Takeout and Delivery setups that each carry their own pricelist, fiscal position, opening hours and capacity. The fee shows on invoices, so agree its VAT treatment with your accountant before launch.

Self-order customers can also receive their receipt by WhatsApp or SMS. WhatsApp needs Odoo Enterprise, an official WhatsApp Business Platform account and pre-approved templates. SMS runs on prepaid credit, and an Arabic message fits 70 characters, or 67 per part when it is longer.

Most UrbanPiper settings now live inside POS, and Odoo 20 adds platforms such as Mandoob and Zyda. Odoo's UrbanPiper documentation also lists HungerStation, Jahez, Mrsool and Keeta for Saudi Arabia; confirm the apps your branch uses.

Stock without the Inventory app: a lighter start for small shops and cafés

Until now, tracking stock from the till meant installing the full Inventory app, with its warehouses, locations and transfers. Odoo 20 removes that step for simpler businesses. Point of Sale and eCommerce can run on simplified inventory: one on-hand quantity per product and no transfers to validate.

The accounting does not get thinner. Stock on hand and its valuation can be managed without the Inventory app, so the cost of what you sell still reaches your financial statements. Sales orders can also be fulfilled, with shipping confirmation emails, without Inventory.

That suits a single specialty coffee shop that only needs to know how many bags of beans are left, or an abaya boutique selling in store and on its own website from the same quantity.

Keep the full Inventory app when:

  • you run several branches and move stock between them;
  • you track lots or expiry dates, as in food, cosmetics or perfume;
  • you work with a central warehouse, receiving steps or reordering rules.

The expiry point also affects the till. The new expired-product warning relies on expiry dates, which Odoo records on lots through the Inventory app, so if expiry matters to your business, keep Inventory.

The choice is about how much structure your operation needs today, not about the size of your ambitions. A single café can stay lean, while a chain preparing its third branch should plan around full Inventory from the start.

Closing the day and staying ZATCA Phase 2 compliant

Session closing is simpler in Odoo 20. Closing now creates one global sale, which removes miscellaneous accounting entries, and payment journal entries can post automatically at a time you set, without closing the session. That suits cafés open past midnight and restaurants serving suhoor in Ramadan. The usual controls stay: a maximum authorized cash difference that needs a manager above the limit, no closing a restaurant POS while draft orders are open, and Odoo's advice to close every day. In Accounting, cash journals can now be secured with entry hashing on reconciliation.

For ZATCA Phase 2, the Odoo flow is:

  • B2C sales produce a simplified tax invoice with a QR code, reported to FATOORA within 24 hours of issue, with a printed copy for the buyer straight away.
  • B2B sales produce a tax invoice that goes through clearance.
  • POS uses the Saudi Arabia - E-invoicing (Simplified) module. In the POS settings, the default Sales journal selected in the Invoices field is onboarded with an OTP from the FATOORA portal, and a customer must be set on the order before it is finalised.
  • Arabic receipts come from the Gulf Cooperation Council Format option under Bills & Receipts.
  • If the till goes offline, invoices are generated when it reconnects, so sync it well inside the 24-hour window.

New for Saudi POS in Odoo 20, down-payment support has been enhanced. On-demand ZATCA PDF generation, at first view or download, has been available since Odoo 18. ZATCA timeouts and outages also no longer block invoices.

Upgrading your store to Odoo 20 without losing a trading day

Standard support for Odoo 17 ended in September 2026; Odoo plans to end it for Odoo 18 in September 2027 and to support Odoo 20 until September 2029. Stores on older versions should plan the move now, not in the middle of a busy season.

A safe sequence for a shop or restaurant:

  • Request an upgraded test database and run your real tills against it: receipt and kitchen printers, scales and the card terminal, remembering that test databases are neutralized, so payments and ZATCA run in test mode.
  • Schedule the production upgrade outside trading hours, because the database is unavailable while it runs. Avoid Ramadan nights, Eid, White Friday and Riyadh Season peaks.
  • Before you start, close every POS session and make sure all orders taken offline have synced.
  • After the upgrade, re-check the ZATCA onboarding on the POS invoice journal and confirm that the first simplified tax invoice reaches FATOORA.
  • Train cashiers on the renamed access levels and the new receipt options.
  • Budget for WhatsApp and SMS messaging and for AI credits if you plan to use them.

Test the busiest flows, not just the happy path: a split payment, a refund against an old receipt, a large table with a service fee and a session close with a cash difference. If those four work on the test database, your staff will not meet surprises on the first morning.

METCH's team in Riyadh can work through this checklist with you. Book a free consultation, or estimate the cost of your upgrade first.

Frequently asked questions

Can one Odoo 20 point of sale accept riyals and a foreign currency?

Yes. Odoo 20 supports multiple currencies at checkout in the same point of sale, which helps stores serving pilgrims and visitors, although most Saudi sales stay in riyals by Mada or card. Odoo has not yet published how change, rates and the receipt layout work, so confirm them in a demo. Exchange rates can come from SAMA, now a built-in provider.

Do I still need the Inventory app for a small shop or café on Odoo 20?

Not always. In Odoo 20, Point of Sale and eCommerce can work with simplified inventory: one on-hand quantity per product and no transfers, with stock valuation still managed in accounting. Keep the full Inventory app if you move stock between several branches, track lots or expiry dates, or run warehouses and reordering rules.

Does Odoo 20's new simplified receipt replace the ZATCA simplified tax invoice?

No. The simplified receipt is a print layout showing only subtotals and taxes. Compliance still comes from the Saudi Arabia - E-invoicing (Simplified) module: once the default Sales journal set in the POS Invoices field is onboarded with a FATOORA OTP and a customer is assigned to the order, each sale becomes a simplified tax invoice whose Phase 2 QR code appears on the printed receipt and the PDF. Enable the Gulf Cooperation Council Format option for Arabic receipts.

Do WhatsApp and SMS receipts cost extra, and what do I need to switch them on?

Plan for both in your budget. SMS uses prepaid IAP credit, and an Arabic SMS holds only 70 characters, so keep the receipt message short. WhatsApp is Enterprise-only and needs a WhatsApp Business Platform account, not the WhatsApp Business App or a personal number, plus pre-approved templates, and Meta requires a payment method on that account, so check Meta's messaging charges before switching it on.

Need help with this?

METCH is a certified Odoo partner in Saudi Arabia — book a free consultation.

Get a proposal