Retail / POS

Retail & Point of Sale

For retail and trading floors, I build the Odoo POS controls that keep stock accurate, discounts accountable, and every register reconciled.

The challenge

Out of the box, Odoo POS will sell stock you don't have, let a flat discount survive a refund, and dump every branch's takings into one undifferentiated revenue account. For a multi-branch retailer or trading group, that shows up as end-of-day counts that don't match the shelves, discounts nobody can trace back to a decision, and a finance team reverse-engineering which store actually made money.

Serialized or warrantied stock makes it worse: the moment a unit moves between related companies in the same group, standard Odoo drops exactly the serial number you need to trace it.

What I build in Odoo for this industry

Six areas come up on almost every retail and multi-branch POS project I run:

01

Stock-accurate selling

The register checks real, available quantity at the branch's warehouse (or a specific operation type) before it lets a line be sold, and blocks checkout with a clear message naming the product and the shortfall. A dedicated permission group lets a manager authorize the rare exception without opening the door to every cashier, and the same block is enforced again at the warehouse level for transfers, so stock can't go negative through a back door.

02

Branch and register-level profitability

Each point-of-sale register can be tied to one or more analytic accounts (cost centers), and every accounting entry it generates downstream — invoice lines, the session's cash and bank statements, the closing balancing entry — is automatically tagged with that cost center. A multi-branch retailer gets a true per-store P&L inside standard Odoo accounting and analytic reports, with no manual journal coding at month-end.

03

Controlled, refund-safe discounting

A single flat-discount control lets staff apply one order-level discount that is spread proportionally across each tax group on the ticket, instead of relying on line-by-line price overrides that are hard to audit later. Refunds are discount-aware: returning part of an order automatically claws back its proportional share of the original discount onto the credit note, so the customer keeps the discount only on what they actually keep, and a second discount can't be layered onto an order that already has a refund in progress.

04

Unattended session close and reconciliation

The end-of-day counting screen pre-fills expected cash and bank totals so cashiers reconcile real variances instead of retyping numbers. Registers left open past a configured cutoff are closed automatically by a scheduled job, which generates the official sales-detail report, emails it to head office, and logs a success or failure per session. Settlement posts to accounting as one journal entry per payment method, so it reconciles cleanly against each bank or card-terminal statement instead of arriving as a single blended figure.

05

Serial and lot traceability, shelf to invoice

Serial numbers are enforced unique across the whole company, not just per product, cashiers can search the till's product list directly by serial, and the exact unit sold is carried through onto the printed customer invoice for warranty and compliance purposes. Where a group runs a central buying company alongside separate retail-branch companies, a dedicated sync closes a real gap in standard Odoo by copying serial and lot numbers from an inter-company delivery onto the matching receipt on the other side, unit by unit, so a serialized item's history survives the move between related legal entities.

06

Deposit and store-credit guardrails

Customers who run a house account or pay by deposit have their real credit balance surfaced right on the payment screen so staff can apply it correctly. A companion control caps how much can be charged to a pay-on-account tender so a customer's balance can never be pushed further negative than what they have actually deposited.

Odoo apps involved

These capabilities are drawn from patterns across 30+ Odoo modules I've configured, extended or reviewed on live retail and POS projects, spanning:

Point of SaleInventoryAccountingSalesHRMulti-Company

Why work with me

I'm Muhammad Salman Ali Khan, an Odoo Techno-Functional Consultant in Dubai and Head of Projects at Techbot Information Technology LLC, a UAE Odoo partner. Retail and point-of-sale work is one of the areas I keep coming back to across 10+ years and 100+ implementations — the controls above are patterns built and refined on live projects, not theory, and they hold up against the versions I'm actually certified on:

Odoo 13Odoo 14Odoo 15Odoo 16Odoo 18Odoo 19

Related guides

Two guides that sit close to this work: Odoo Community vs Enterprise — which should your business choose, since POS behavior and multi-company accounting differ by edition; and what actually drives Odoo implementation cost in the UAE, where POS-specific work like this sits inside the wider project budget.

Want your POS setup reviewed by someone who has built this before?

I'm Muhammad Salman Ali Khan, an Odoo Techno-Functional Consultant in Dubai and Head of Projects at Techbot Information Technology LLC, a UAE Odoo partner — 10+ years, 100+ implementations, certified across Odoo v13, v14, v15, v16, v18 and v19. Tell me how your registers, stock and discounts actually work today and I'll give you a scoped, honest view of what fixing them in Odoo involves — at no cost.

Get a free business evaluation