Odoo POS for Restaurants and Retail: Complete Setup and Operations Guide
Odoo's Point of Sale module serves two distinct environments---restaurant and retail---with a unified backend that connects to inventory, accounting, and customer management. Whether you operate a single cafe or a multi-location retail chain, the POS module handles transactions, inventory movements, and financial reporting without requiring third-party integrations. This guide covers the complete setup and daily operations for both restaurant and retail configurations.
Key Takeaways
- Odoo POS works offline and syncs transactions when connectivity is restored, critical for environments with unreliable internet
- Restaurant mode adds table management, kitchen display screens, split billing, and course-based ordering
- Retail mode emphasizes barcode scanning, customer loyalty, returns processing, and multi-location inventory
- The POS integrates directly with Odoo Inventory for real-time stock updates and Accounting for automatic journal entries
- Hardware support includes receipt printers, barcode scanners, cash drawers, customer displays, and kitchen printers
POS Architecture and Setup
Installation and Configuration
Install the POS module from Apps > Point of Sale. The initial configuration wizard asks for:
- POS type: Restaurant or retail (determines available features)
- Payment methods: Cash, card terminals, bank transfers
- Receipt format: Standard or customized receipt template
- Tax configuration: Which taxes apply to POS transactions
Navigate to Point of Sale > Configuration > Point of Sale to access the full configuration panel for each POS instance. An organization can run multiple POS configurations simultaneously (one for the restaurant, another for the gift shop).
Hardware Setup
Odoo POS supports hardware through two approaches:
IoT Box: A dedicated hardware relay (Raspberry Pi-based) that connects to printers, scanners, scales, and payment terminals. The IoT Box communicates with the POS over the local network.
Direct browser access: For environments using USB-connected devices, Odoo POS can communicate directly through the browser's Web USB API. This approach works without an IoT Box but requires Chrome-based browsers.
| Hardware | Connection Method | Restaurant | Retail |
|---|---|---|---|
| Receipt printer | IoT Box or USB | Required | Required |
| Kitchen printer | IoT Box (network) | Required | N/A |
| Barcode scanner | USB HID | Optional | Required |
| Cash drawer | Printer-connected | Required | Required |
| Customer display | IoT Box (HDMI) | Optional | Recommended |
| Payment terminal | IoT Box (serial/network) | Required | Required |
| Scale | IoT Box (USB) | Optional | Optional (grocery) |
Restaurant Configuration
Table Management
Enable table management at Point of Sale > Configuration > Restaurant. The floor plan editor lets you:
- Create floors: Multiple floors or sections (main dining, patio, bar)
- Place tables: Drag and drop table shapes onto the floor plan
- Set capacity: Number of seats per table for reservation management
- Color coding: Tables change color based on status (available, occupied, reserved)
During service, the POS opens to the floor plan view. Staff tap a table to open or add to the table's order. Occupied tables show the current order total and elapsed time.
Kitchen Display System (KDS)
The kitchen display system replaces paper tickets with a screen-based order management system:
Configure KDS at Point of Sale > Configuration > Kitchen Display:
- Preparation stages: Define stages like "New Order," "In Preparation," "Ready"
- Category routing: Route appetizers to the cold station and entrees to the hot station
- Timing alerts: Color-code orders based on elapsed preparation time (green, yellow, red)
- Bump bar support: Kitchen staff advance orders through stages using a bump bar or touchscreen
Course Management
For multi-course restaurants, enable course management to control the timing of food preparation:
- Define courses: Appetizer, Main, Dessert (or custom course names)
- Assign products to courses: Each menu item belongs to a course
- Fire courses sequentially: Kitchen receives appetizer orders first; main course fires when the server marks appetizers as served
Split Billing
Staff can split a table's bill in multiple ways:
- Split by item: Each guest pays for their specific items
- Split equally: Total divided evenly among the specified number of guests
- Custom split: Staff manually allocates amounts
Access split billing from the payment screen by tapping the split icon.
Tips and Service Charges
Configure tip settings at Point of Sale > Configuration > Restaurant:
- Tip after payment: Customer adds tip on the receipt or payment terminal
- Service charge: Automatic percentage added to every order (common in some regions)
- Tip pooling: Tips collected through the POS can be reported for distribution
Retail Configuration
Barcode Operations
The retail POS is optimized for barcode-driven workflows:
Product scanning: Scan product barcodes to add items to the order. The POS recognizes EAN-13, UPC-A, Code 128, and QR codes. Products must have barcodes configured in their product form.
Weighted products: For grocery or bulk items, configure barcode rules that embed the weight or price in the barcode. The POS extracts the value from the barcode and calculates the line total.
Customer barcodes: Assign barcodes to loyalty cards or customer accounts for instant identification and discount application.
Configure barcode nomenclature at Point of Sale > Configuration > Barcode Nomenclatures.
Customer Loyalty Programs
The loyalty program module integrates with POS for real-time point accumulation and redemption:
- Navigate to Point of Sale > Configuration > Loyalty Programs
- Define earning rules: Points per dollar spent, per product, or per visit
- Define rewards: Discount percentage, free product, or fixed amount off
- Set tiers: Bronze, Silver, Gold with escalating earning rates
During checkout, the POS displays the customer's point balance, available rewards, and tier status. Staff can apply rewards with a single tap.
Returns and Exchanges
Process returns directly in the POS:
- Open the POS and tap Refund
- Search for the original order by receipt number, date, or customer
- Select items to return (partial returns supported)
- Process the refund to the original payment method or store credit
- The system automatically adjusts inventory and creates the accounting entries
Gift Cards
Odoo POS supports both physical and digital gift cards:
- Selling gift cards: Add gift card products to the order with a specified value
- Redeeming gift cards: Scan or enter the gift card code during payment
- Balance tracking: Partial redemption tracks remaining balance
- Expiration: Configure expiration dates per gift card program
Multi-Location Operations
Centralized Configuration
For chains with multiple locations, Odoo supports centralized management:
- Product catalog: Shared across all locations with location-specific pricing through pricelists
- Promotions: Create promotions that apply to specific POS instances or all locations
- Reporting: Consolidated sales reports across all locations
- User management: Staff assigned to specific POS instances with role-based access
Inventory per Location
Each POS links to a specific warehouse/location in Odoo Inventory. When a sale occurs:
- The POS decrements stock at the linked location
- Reorder rules trigger replenishment if stock falls below the threshold
- Inter-warehouse transfers move stock from the central warehouse to the retail location
Cash Management
Each POS session tracks cash independently:
- Opening balance: Staff count and record the cash drawer opening amount
- Cash in/out: Record non-sale cash movements (petty cash, bank deposits)
- Closing balance: Staff count the drawer at session close; the system calculates the expected balance and highlights discrepancies
Accounting Integration
Automatic Journal Entries
Every POS session generates journal entries when closed:
| Entry | Debit | Credit |
|---|---|---|
| Cash sales | Cash account | Revenue account |
| Card sales | Receivable (processor) | Revenue account |
| Tax collected | Revenue account | Tax liability |
| Cost of goods | COGS account | Inventory account |
Revenue Recognition
Revenue from POS sales posts to the accounting module at session close (not per transaction). This batch approach is standard for high-volume retail and simplifies reconciliation. For businesses requiring real-time revenue posting, configure the POS to close sessions automatically at the end of each day.
Reporting and Analytics
Built-In Reports
The POS module includes several analysis views at Point of Sale > Reporting:
- Sales summary: Total revenue, transaction count, and average order value per period
- Product performance: Best and worst-selling products with margin analysis
- Employee performance: Sales per employee per session
- Payment method breakdown: Revenue by payment type
- Hourly analysis: Transaction volume by hour for staffing optimization
Custom Dashboards
Create custom dashboards combining POS data with other Odoo modules. For example, correlate POS sales with inventory levels to predict stockouts, or combine POS revenue with accounting data for real-time profit margins.
ECOSIRE POS Services
Deploying Odoo POS across multiple locations requires careful hardware planning, network configuration, and staff training. ECOSIRE's Odoo implementation services include POS-specific deployment covering hardware selection, network architecture, menu/product configuration, and staff training programs. Our support services provide ongoing assistance for hardware issues, software updates, and operational optimization.
Related Reading
- Odoo Inventory Management Best Practices
- Odoo Accounting Module Setup Guide
- Multi-Channel Selling with Odoo
- Odoo CRM and Sales Pipeline Optimization
- Odoo Invoicing Best Practices
Does Odoo POS work without internet connectivity?
Yes. Odoo POS loads the product catalog, pricing, and customer data into the browser's local storage when the session opens. Transactions process locally during offline periods and sync to the server when connectivity is restored. This makes it reliable for environments with intermittent internet access.
What payment terminals does Odoo POS support?
Odoo POS supports Adyen, Stripe Terminal, Vantiv, Worldline, and SIX payment terminals through the IoT Box. For other terminal brands, the payment can be processed externally with the amount recorded manually in the POS. The Stripe Terminal integration is the most popular option due to its broad geographic availability.
Can a single Odoo instance run both restaurant and retail POS configurations?
Yes. You can create multiple POS configurations within a single Odoo database. Each configuration can be either restaurant or retail mode with its own product list, payment methods, and hardware setup. This is common for hotels that operate both a restaurant and a gift shop from the same Odoo instance.
Written by
ECOSIRE Research and Development Team
Building enterprise-grade digital products at ECOSIRE. Sharing insights on Odoo integrations, e-commerce automation, and AI-powered business solutions.
Related Articles
Industry 4.0 Implementation Guide: From Strategy to Smart Factory in 12 Months
Complete Industry 4.0 implementation guide covering assessment, IoT deployment, ERP integration, and scaling. Realistic timelines, budgets, and ROI benchmarks.
Odoo 19 Complete New Features Guide: Everything You Need to Know
Comprehensive guide to every new feature in Odoo 19 covering accounting, CRM, inventory, manufacturing, HR, website, and all enterprise modules.
Odoo Bank Reconciliation and Accounting: A Complete Walkthrough
Master Odoo bank reconciliation with this step-by-step guide covering automatic matching, manual reconciliation, payment handling, and month-end close.