All posts
General8 min read

Odoo for retail: point of sale, eCommerce integration, and inventory synchronization

Odoo's retail stack covers in-store POS, an integrated eCommerce storefront, and a shared inventory layer that keeps stock counts consistent across channels. This guide explains how the three modules connect, what the POS session workflow looks like, and the configuration choices that affect retail operations most.

Odoo's Retail Stack#

Odoo serves retail businesses through three integrated modules:

  • Point of Sale (POS): in-store checkout interface running in any browser
  • eCommerce: integrated online store with product catalog and cart checkout
  • Inventory: shared stock layer that both POS and eCommerce draw from

Because all three modules share the same database, a sale in POS immediately reduces available stock on the eCommerce storefront - no integration middleware required.


Point of Sale#

How POS Works#

Odoo POS runs as a web application in any modern browser. It works offline (using local browser storage) and syncs to the server when connectivity is restored.

A typical POS session:

  1. Open Session: cashier opens the POS session and enters an opening cash count
  2. Process Orders: scan barcodes or search products; apply discounts; select payment method
  3. Close Session: end-of-day reconciliation; enter closing cash count; generate Z-report

The POS is touch-friendly and is commonly deployed on tablets or dedicated POS terminals.

POS Configuration#

Go to Point of Sale → Configuration → Point of Sale and create or edit a POS system.

Key settings:

  • Payment Methods: configure cash, credit card (via payment terminal integration), gift cards
  • Product Screen: choose which products appear on the product grid; set product categories for the tablet menu
  • Discounts: enable global discounts, per-line discounts, or loyalty program discounts
  • Receipts: configure receipt printer or email receipts
  • Connected Devices: barcode scanners (USB HID), receipt printers (network or USB)

Multi-Location POS#

Each POS system can be assigned to a specific stock location. If you have multiple stores, create one POS system per store, each pointing to that store's warehouse location. Inventory is drawn from the correct location when items are sold.


eCommerce#

Odoo's eCommerce module creates an integrated storefront using the same product catalog as the rest of Odoo.

Product Visibility#

Products appear on the eCommerce site when Published is enabled on the product form (or from the eCommerce → Products list). You can control which products appear on the website without removing them from internal use.

Product variants (size, color, material) translate directly to eCommerce variant selectors. Images attached to variants display correctly on the product page.

Checkout and Payment#

Odoo eCommerce integrates with multiple payment providers: Stripe, PayPal, Adyen, Mollie, and others. Configure providers in Website → Configuration → Payment Providers.

At checkout, the customer's order becomes a sale order in Odoo. Confirmed payment triggers the standard delivery workflow - a picking order is created to fulfill the online order.

Customer Accounts#

Customers can register on the eCommerce site, view order history, and reorder. Their profile becomes a res.partner record in Odoo, accessible to the sales team.


Inventory Synchronization#

Shared Stock#

POS and eCommerce share the same product stock. When a product is sold in-store via POS:

  • A stock move is created from the POS location to the customer location
  • On-hand quantity is updated immediately
  • The eCommerce site reflects the new available quantity on the next page load (or near-real-time via websocket if configured)

Preventing Overselling#

For high-velocity products, configure Available to Promise (ATP) quantities. This reserves a buffer for in-store sales and does not publish the full on-hand quantity to eCommerce.

Alternatively, set a Sales Safety Days buffer in the product's inventory settings, which Odoo subtracts from the available quantity before showing it on the eCommerce site.

Multi-Warehouse eCommerce#

If you have multiple warehouses (regional distribution centers), configure eCommerce routing rules to assign orders to the nearest warehouse. Odoo's stock routing selects the warehouse based on customer address or warehouse priority.


Loyalty Programs and Gift Cards#

Odoo's loyalty program module (available in POS and eCommerce) supports:

  • Points-based programs: customers earn points per euro/dollar spent, redeemable for discounts
  • Gift cards: sold in POS or online; redeemable in POS or online
  • Coupon codes: percentage or fixed amount discount codes, with optional minimum order

All three are managed from Point of Sale → Products → Gift Cards & Loyalty.


Key Integration Points#

Accounting#

Every POS session closing generates journal entries posted to the correct accounts. POS payment methods map to bank or cash accounts. Configure the mapping in the POS payment method settings.

CRM / Customer Data#

If you enable customer identification at POS checkout, the customer's purchase history is visible in the CRM and customer profile. Useful for loyalty tracking and targeted promotions.

Pricelists#

POS can apply customer-specific or date-specific pricelists (e.g., promotional pricing during a sale event). Enable Pricelists in the POS configuration and assign the pricelist when opening the session or per order.


What Odoo Retail Does Not Cover Well#

  • High-volume fractional inventory (e.g., sold by weight on a scale) - supported but requires hardware integration
  • Complex loyalty tiers with external CRM - Odoo loyalty is self-contained; integrating with external loyalty platforms requires custom development
  • Real-time multi-store reporting dashboards - Odoo reporting is adequate for standard reports but lacks real-time BI dashboards without a third-party tool

ERPeek can inspect your Odoo POS and eCommerce configuration - identifying which modules are installed, how routes are configured, and what customizations affect the retail workflow. See the contact page for a demo.

Try ERPeek on your own Odoo module - ask questions, scaffold tests, and explore your codebase in plain language.

Get started free