Duplicating an employee record is one of those mundane administrative tasks that HR teams do without thinking twice. You’re onboarding someone in the same department with the same job title, so you copy an existing record and change the name. It saves ten minutes of filling out the same fields. Until it doesn’t.
Odoo’s HR module had a quiet problem: when you duplicated an employee, the new record inherited the original employee’s bank account. Not a copy of the bank account details — the actual linked bank account record. Both employees now pointed to the same bank account in the system. Run payroll, and both salaries route to the same destination.

One Line, One Fix, One Prevented Disaster
The fix is exactly one line of code. The bank_account_idfield on the employee model now carries a copy=Falseattribute, which tells Odoo’s ORM to skip this field during record duplication. When an HR administrator duplicates an employee, the bank account field on the new record starts empty instead of inheriting the source employee’s financial routing.
It’s the kind of fix that feels obvious in hindsight. Odoo already sets copy=Falseon other sensitive fields like badge IDs and attendance PINs. Bank accounts should have always been in that category. The fact that they weren’t is less about an oversight in design and more about how duplication defaults work in Odoo’s ORM — fields copy by default unless explicitly told not to.
The Scenario That Makes This Dangerous
Consider the timeline. An HR coordinator duplicates Employee A to create Employee B in the same department. Both records now share the same bank account. Employee B’s HR profile looks complete — there’s a bank account attached, so the coordinator moves on to the next task. No warning, no validation error, no flag.
Payroll runs at the end of the month. Employee A receives their normal salary. Employee B’s salary also goes to Employee A’s bank account. Now you have a payroll correction to process, an employee who didn’t get paid on time, a bank transaction that needs to be reversed or redirected, and a compliance conversation with the finance team about how it happened.
Multiply this by a company that onboards in batches — seasonal retail hiring, contractor rollouts, franchise staffing — and the duplication workflow gets used heavily. Every copy was a potential mismatch.

What This Means for Existing Records
The fix prevents future duplications from carrying bank account data forward, but it doesn’t retroactively clean up records that were already duplicated. Companies that have used the duplication feature in the past should audit their employee records for shared bank account IDs — especially if they’ve noticed payroll routing anomalies that were attributed to manual entry errors.
A quick database query checking for multiple employees linked to the same bank_account_idwould surface any existing cases. It’s a five-minute check that could save a month of payroll headaches.
For Odoo deployments running the latest 19.0 update, the fix applies automatically. New employee duplications will start with a blank bank account field, and the HR team will need to deliberately enter the correct banking details — which is exactly the behavior you want for a field that controls where someone’s salary lands.