This guide explains why an Odoo 19 point of sale can record a sale under the cashier who used the register before, and how to stop it. The short answer: in Odoo 19 the register keeps a copy of its data in the browser, including the Odoo user who last loaded it, and reuses that copy when it is reopened without going through the Point of Sale dashboard. Opening the register from the dashboard, or letting cashiers log in as employees on the register itself, keeps each sale under the right person. The last part shows how to report sales per cashier once employee login is on, for example to pay a sales bonus.
It is written for store owners and managers who run several cashiers on shared tills. The steps were verified on Odoo 19.
Before you start
- Version and edition: Odoo 19, Community or Enterprise. Point of Sale and employee login are both part of Community.
- Apps: Point of Sale. Turning on employee login also installs the Employees app.
- Access rights: changing Point of Sale settings and printing the Session Report need the Administrator role for Point of Sale. Setting an employee's PIN needs the Officer role or higher in the Employees app.
- Terms used: a session is one opening of a register, from the opening cash count to the closing. The Odoo user is the login used to open Odoo in the browser. An employee is a person record in the Employees app, who can log in on the register without an Odoo login of their own once employee login is on.
Why the sale goes to the previous cashier
When an Odoo 19 register starts, it first reads the copy of data it stored in the browser last time. If that copy belongs to the session that is still open, and the register was not opened from the Point of Sale dashboard, it uses the copy and does not ask the server. The copy belongs to the register and the database, not to a person, so logging out of Odoo does not clear it. It includes the Odoo user who loaded it, and that is the user Odoo puts on every new order.
The sequence that produces the problem looks like this:
- Cashier B opens the register. The browser stores the register data with B as the user.
- B logs out of the register and of Odoo, but the session stays open.
- Cashier A logs in to Odoo on the same device and reaches the register from a bookmark, from a register tab left open and refreshed, or from an installed app icon. None of these routes tells the register it was opened from the dashboard.
- The register loads the stored copy, the Open Register button on its login screen selects the stored user, and the sale is recorded under B.
Odoo 18 did not behave this way, because its register fetched its data from the server every time it started. Reload Data in the register menu clears the problem for the moment, because both of its options, Limited and Full, delete the stored copy before reloading.
Fix 1: open the register from the dashboard
- Open the Point of Sale app. The Dashboard shows a card for each register.
- On the register's card, click Continue Selling if a session is already open, or Open Register if none is. The register fetches fresh data from the server and starts with the logged-in Odoo user as the cashier.
- Delete bookmarks and installed app icons that point straight at the register. The Install App option in the register menu creates exactly such an icon.
- Ask cashiers to close the register tab at the end of a shift, so the next person starts from the dashboard.
This works when every cashier has their own Odoo login and logs in and out between shifts. If several people share one Odoo login on a till, use Fix 2.
Fix 2: let cashiers log in as employees
With Log in with Employees turned on, the register stays open under one Odoo login, and each cashier identifies themselves on the register by picking their name, typing a PIN or scanning a badge. Each order then records the cashier as an employee, separately from the Odoo user.
- Open the Point of Sale app and go to Configuration > Settings. Select the register in the Point of Sale field at the top.
- In the PoS Interface section, tick Log in with Employees and click Save.
- Return to the same setting. Three fields now appear: Advanced rights, Basic rights and Minimal rights. Add each cashier to the level that fits their role and save. Leaving Basic rights empty lets every employee of the company log in, and users with the Point of Sale Administrator role are added to Advanced rights automatically.
- Open the Employees app, open each cashier, and go to the Settings tab. Enter a PIN Code. To use badges, fill in Badge ID or click Generate, then Print Badge.
- Back in the Point of Sale app, open the register from the dashboard so it picks up the new setting. It now opens on a lock screen.
To start a shift, the cashier clicks Unlock Register (or Open Register if no session is open yet), then types their PIN in the Enter your PIN field, picks their name from the list, or scans their badge. To hand over, they click the lock icon at the top right, or click their own name there to switch to another cashier. An employee with a PIN is always asked for it, even after picking their name or scanning a badge. An employee without a PIN can be picked by anyone at the till, so give every cashier one.
Report sales per cashier
With employee login on, each order stores the employee as its Cashier. Odoo sets it when items are added and again when the payment is validated, so a sale is credited to whoever is logged in when the payment is validated. Cashiers should switch before starting a sale, not partway through one. Several cashiers can share one session and their sales stay separate.
To see one session, for example to work out a bonus per shift:
- Open the Point of Sale app and go to Reporting > Session Report.
- Choose the session.
- Leave Add a report per each employee ticked and click Print. After the session summary, the PDF adds an Employee Sales Report for each cashier, with the products and quantities they sold.
If no order in that session was made by an employee cashier, the option is greyed out and a note says a per-employee report cannot be generated.
To compare cashiers across several sessions:
- Go to Reporting > Orders. The Orders Analysis report opens as a chart.
- Switch to the pivot view.
- In the search options, group by Employee, choose Product Quantity as the measure, and filter on the dates of your bonus period.
Group by Employee, not by User. On a shared till, the User figure is the shared Odoo login, which can also be the stale user described above.
Check that it worked
- On a shared till with employee login, have one cashier ring up a small sale and lock the register, then have a second cashier unlock it with their PIN and ring up another.
- In the Point of Sale app, go to Orders > Orders. The Cashier column should show a different name on each order.
- Without employee login, have cashier A open the register from the dashboard straight after cashier B has used it, and make a sale. In the same list, the Employee column for that order should show A.
Odoo 20 and later
In the Odoo 20 source, the register asks the server for fresh data every time it starts while it is online, and replaces the stored user with the one logged in. The stale cashier problem should therefore not occur there. This was checked in the code, not on a running Odoo 20 register.
Steps verified on Odoo 19. Menus and labels can differ on other versions.
Common questions
Why does Odoo 19 POS record sales under the previous cashier?
Odoo 19 keeps a copy of the register's data in the browser, including the Odoo user who last loaded it. If the register is reopened from a bookmark, a refreshed tab or an app icon while the same session is still open, it reuses that copy and puts the stored user on new orders.
How do I stop Odoo 19 POS using the wrong cashier?
Open the register from the Point of Sale dashboard with Continue Selling or Open Register, which forces a fresh load. On shared tills, turn on Log in with Employees so each cashier logs in on the register with a name, PIN or badge.
Does Reload Data fix the wrong cashier in Odoo 19 POS?
Yes, for that moment. Both the Limited and Full options of Reload Data delete the stored copy, so the register loads the current Odoo user from the server.
Can Odoo POS report sales per cashier when everyone shares one login?
Yes, with Log in with Employees turned on. Point of Sale > Reporting > Session Report can add an Employee Sales Report per cashier, and Reporting > Orders can be grouped by Employee across sessions.
Which cashier gets credit for an Odoo POS sale when cashiers switch mid-order?
With employee login on, Odoo records the cashier who is logged in when the payment is validated. Cashiers should switch before starting a sale.
Talk to the team.
If you are setting this up, or Odoo is not behaving the way this guide describes, book a 30-minute call. We will look at your configuration and tell you what it needs. Calgary studio, in-house team, no offshore handoffs.
Book the call →