Payroll in Odoo 17 runs on salary structures made of salary rules: each rule computes one line of the payslip, from basic pay through allowances to deductions and employer contributions, and the structure is attached to the employee through their contract. The Payroll app is part of Odoo 17 Enterprise and is not available in Odoo 17 Community.
To start using payroll features:
Apps → Install "Payroll"
This activates salary structure configuration, payslip generation, and accounting integration with your HR system.
Creating Salary Structures and Components
Go to:
Payroll → Configuration → Salary Structures
Create a structure for different employee types (e.g., Full-Time, Part-Time, Interns):
- 📌 Define name, type, and associated rules
- 📆 Set frequency: monthly, weekly, or custom
- 📂 Group rules under categories like Basic, Gross, Net
Salary structures make payroll scalable and consistent across roles.
Defining Salary Rules (Basic, Allowance, Deductions)
Salary rules break down how earnings and deductions are calculated:
- 💵 Basic Pay
- 🎁 HRA, Travel, Meal or Performance Allowance
- 📉 PF, TDS, ESIC, Loan Deductions
You can use fixed amounts, percentage-based formulas, Python code, or condition-based logic for advanced payroll structures.
Assigning Structures to Employee Contracts
Each employee contract must be linked to a salary structure:
Employees → Contracts → Add Salary Structure
This ensures payslips are calculated correctly based on the employee's role and benefits.
Tip: You can create multiple contracts per employee for renewals, promotions, or variable structures.
Generating Payslips Individually or in Batches
To generate payslips:
Payroll → Payslips → Create
Or run a batch with:
Payroll → Payslip Batches → Create
Select employee(s), period, and structure. Odoo will calculate:
- 📊 Earnings and deductions
- 💰 Gross, Net, and Taxable salary
- 📄 Printable payslip with breakdown
Once confirmed, payslips can be emailed, downloaded, or stored in the employee record.
Handling Taxes, Benefits, and Compliance
Payroll rules can be configured to include statutory elements:
- 🇮🇳 Indian Payroll: PF, ESI, Professional Tax
- 🇺🇸 U.S.: Federal/state tax codes, 401(k)
- 🌍 Any region: Custom deduction formulas, tax slabs
Ensure payroll journals are mapped to your chart of accounts for accurate accounting integration.
Payroll Reports and Payslip History
View and export reports by:
- 👤 Employee
- 📅 Month or year
- 📊 Rule category (Earnings, Deductions, Net)
All records are auditable, filterable, and can be downloaded in Excel or PDF formats for review or compliance.
Conclusion
Odoo 17 gives you full control over payroll — from contract-based salary structures to payslip automation and compliance tracking. It's built to handle both simple and complex payroll scenarios at scale.
Need help customizing salary rules or automating your payroll process? Talk to our Odoo payroll experts today.
Questions we get asked
Is Payroll included in Odoo 17 Community?
No. The Payroll app, salary structures, salary rules and payslips are Odoo 17 Enterprise. Community ships the surrounding HR apps, including Employees, Contracts, Time Off, Attendances and Timesheets, but no payroll engine. Community users either run payroll outside Odoo and post the resulting journal entry, or install a third-party payroll module from the Odoo Apps store.
How does a salary rule decide an amount in Odoo 17?
Each rule has a condition and an amount, and both can be simple or scripted. The condition is always true, driven by a payslip input, a domain or a Python expression; the amount is a fixed figure, a percentage of another value, an input, or Python code. Rules run in sequence order inside categories such as Basic, Gross and Net, so later rules build on earlier results.
What does an Odoo 17 payslip take into account?
The employee's running contract, the period you generate it for, and the worked days and leaves inside that period, plus any other inputs such as bonuses or reimbursements you add to the payslip. Odoo then runs the structure's rules over that data. Recomputing the payslip repeats the whole calculation, so a corrected contract or an approved leave flows straight through.
Can one employee have more than one contract in Odoo 17?
Yes. A contract is a dated record on the employee, so a raise, a promotion or a change of salary structure is entered as a new contract starting on its own date while the previous one is closed. Odoo picks whichever contract covers the payslip period. Only one contract can be in the running state for an employee at a given date.
