Payroll Deductions and Contributions in Odoo HR#
Payslips consist of more than just base salary - income tax, social security, pension, and health insurance deductions reduce the employee's net pay, while employer contributions add to the total employment cost. Odoo's payroll rules compute these automatically.
Salary Rule Structure#
Payroll → Configuration → Salary Rules:
Every payroll component is a rule with:
- Code: identifier used in formulas (e.g., BASIC, GROSS, NET)
- Category: Allowances, Deductions, Employer Contributions
- Amount Type: Fixed, % of another rule, or Python formula
- Condition: when this rule applies (all employees, or specific conditions)
Common Rules#
Basic Salary#
- Code: BASIC
- Amount: contract.wage (pulls from the employee's salary contract)
Income Tax (example: flat rate)#
- Code: INCOME_TAX
- Category: Deductions
- Amount Type: % of GROSS
- Amount: -25% (negative = deducted from employee)
For progressive tax brackets: use a Python formula that applies the correct rate based on GROSS.
Employee Pension Contribution#
- Code: EMP_PENSION
- Category: Deductions
- Amount: -5% of BASIC
Employer Pension Contribution#
- Code: ER_PENSION
- Category: Employer Contributions
- Amount: 8% of BASIC (employer pays this in addition to salary - not on the payslip deduction side)
Health Insurance#
- Code: HEALTH_INS
- Category: Deductions
- Amount: -$150/month (fixed amount)
Computing Net Pay#
The payroll engine computes:
GROSS = BASIC + all allowances
Deductions = INCOME_TAX + EMP_PENSION + HEALTH_INS
NET = GROSS − DeductionsAccounting Entries#
When a payslip is confirmed, Odoo posts:
- Debit: Salary Expense (BASIC + employer contributions)
- Credit: Employee Payable (NET - what is owed to the employee)
- Credit: Tax Withholding Payable (INCOME_TAX)
- Credit: Pension Payable (EMP_PENSION + ER_PENSION)
- Credit: Health Insurance Payable (HEALTH_INS)
Each payable account is cleared when the corresponding payment is made (to employee, to tax authority, to pension fund).
Localisation#
Odoo provides country-specific payroll packages:
- Odoo Payroll - Belgium: Belgian social security, holiday pay, meal vouchers
- Odoo Payroll - France: French cotisations sociales
- Odoo Payroll - UK: PAYE, National Insurance
- Odoo Payroll - US: Federal + state taxes (limited support)
Install the relevant localization to get pre-built rules for your jurisdiction.

