Enable Dark Mode!
By: Hilar AK

Odoo HR Payroll

Functional Human Resource

Odoo Human Resource Management module deals with the management of employees and their related strategies. Here Odoo provides the features like contract management, leaves, Attendances, timesheets, and other documents related to the payroll. To generate the payslip for each employee we have to configure their contracts first. If an employee has an active contract, payslips can be generated. This contract specifies the basic pay, working schedules, duration, and other related details. Employees can have one or more contracts, but while generating the payslips, an active one or the latest one will be taken.

The Odoo Payroll system is integrated with the Accounting module. This helps to create a journal entry after the confirmation of the payslip.  This can be further processed by an account adviser or manager. To enable integration with the Account we have to install the plugin Payroll Accounts from the Odoo apps menu. The payslips thus generated can be exported as pdf and officers or managers can analyze the reports that are provided by Odoo.

To generate a payslip for the employee, first, we have to set up the contract with a salary structure. The salary structure is the record of the set of rules and these structures can be inherited or utilized for other contracts. The salary structure can be included with one or more salary rules. This will help the actual computation while generating a payslip. These configurations can be done under the payroll settings. Using salary structure and salary rules menu you can create structures and rules.

Odoo HR Payroll Management also supports the generation of payslips as batches. So we can include one or more employees or category-wise batches. The mass creation of a payslip for a group of employees can be achieved with this feature.


Employees with active contracts are valid to generate payslips. Contracts can be accessed under the Employees main menu.


Here in contracts, we specify the salary structure, Basic Wage, Duration, Working Schedule, and Scheduled pay. For the accounting part, we can select the salary Journal, which is a mandatory field on the payslip. After filling Contract form, we can see the status as running which means the contract is active. That can be done by clicking on the status button on the header.

Salary Structure:


Salary structure is the collection of a set of rules which can be used for computing the payslip. We can use a single structure for particular departments, or for other categories. Salary structures can be inherited so we can use extra rules for particular employees.

Here we made a structure for the employee tag Marketing Executive and we selected the base structure that we created as the parent. So while doing the payslip computation the rules included in the parent structure are also used.


The base structure includes the basic, Gross, Unpaid, and Net salary rules and the marketing executive structure has House Rent Allowance, Conveyance Allowance, Professional Tax, and Provident Fund. These are all of the different categories of the rule that is included in computations.

Salary Rules:

It is the set of rules which define the computation of salary amount of different category. Different salary categories are Basic, Allowance, Deduction, Gross, Net, etc. Here, we can specify the sequence of the rule to be displayed on the payslip and the unique code, that can be used for future calculations.


The tab General includes the condition and its computation to be specified. Conditions can be based on a particular range or Python. Under the computation part, we can select the computation of an amount based on Percentage, Fixed Amount, and Python Code. While using the Python expressions we can use objects specified below for accessing data.

# Available variables: #---------------------- 
# Payslip: object containing the payslips 
# Employee: HR.employee object 
# Contract: HR.contract object 
# Rules: object containing the rules code (previously computed) 
# Categories: object containing the computed salary rule categories (sum of amount of all rules belonging to that category). 
# Worked days: object containing the computed worked days. 
# Inputs: object containing the computed inputs.
# Note: returned value have to be set in the variable 'result' 
Eg: for getting the basic wage from contract we can use: result = contract.wageAnother example for making a deduction using salary rules is that we made here for Provident Fund.


From this rule deduct the 12.5 percentage from the basic wage.


If an employee is under a running contract then we can generate a payslip for those employees and hence the payslip will be calculated according to the selected salary structure in the contract. After generating a payslip it can be exported as pdf. Managers/Officers can approve payslip and while confirming payslip. It will generate its related journal entry on accounts. These can be further used for payment by the account advisor or manager. To integrate payslip with the Accounts module we have to enable under configurations.


Payslip can be created under the Employee payslips menu.


Worked days & inputs tab list out the total worked hours according to the working schedule selected on the contract. Next Tab Salary and computation list out the computations done on slip according to the salary structure and salary rules.


These computations in detail according to the rule category are on the next tab Details By Salary Rule Category.

If the Payroll Accounting is integrated by enabling the option under the configurations you can see the information under the accounting tab once the payslip is confirmed.


The generated Payslips can be exported as pdf using the print button.


Payslip Batches:

We can generate a payslip for a batch of employees. That is enabled under the Payslips batches menu. You can create payslip as batches using this feature.


Use Generate Payslip button for selecting multiple employees and use Generate Button to create a payslip for selected employees.



If you need any assistance in odoo, we are online, please chat with us.


Nauzer Talati

I have seen that we can calculate Provident Fund based on a defined percentage and shown on Payslip as a deduction. Following is required as per Pakistan rules. 1. How can I use the same amount as Employee Contribution and Employer Contribution and store it separately as Provident Fund Contribution for each employee for that fiscal year. 2. I also need option to Withdraw the amount from Employee and Employer Contribution at any given stage. 3. Also need option to generate Profit based on YTD Contribution and YTD Withdrawal Thanks Regards Nauzer





@Kevin Lee We have a free module which do the paslip with timesheet hours submitted by emnployee. You can get the app from here https://apps.odoo.com/apps/modules/10.0/payroll_timesheet/




Hilar AK

@Kevin Lee. Now In default Odoo we can't achieve the feature you had mention without customization. But If you are OK with manually entering the total timesheet hour of an employee as an 'input' on payslip Input tab, Then we can simply compute the Basic value by salary rules. Feel free to contact us if you need customization to automate the calculation of payslip including the total timesheet hours. Thanks.




Kevin Lee

Can Payroll be configured to take hours from timesheets to calculate BASIC value.





How can i add "Authorized Signature" in payslip print in odoo 11




Leave a comment




Cybrosys Technologies Pvt. Ltd.
Neospace, Kinfra Techno Park
Kakkancherry, Calicut
Kerala, India - 673635



Cybrosys Technologies Pvt. Ltd.
1st Floor, Thapasya Building,
Infopark, Kakkanad,
Kochi, India - 682030.



Cybrosys Techno Solutions
The Estate, 8th Floor,
Dickenson Road,
Bangalore, India - 560042

Send Us A Message