Salary Formulate for Working Hour Based Salary

Hi everyone,

So currently i have 2 type of shift (normal & overtime), and i want to pay my employee based on their total working hour per week/per month.

At current system I set 2 shift type, normal (8-17) and overtime (17-24) and i thought i would use the late entry and late exit to adjust their working hour (if overtime end past 24 or before 24 or something like that). But i find i can’t input the number for late entry/early exit to adjust that working hour.

Other problem is i find the working hour on Attendance report is 0 even though i already set the shift type to the employee.

From my problem above, i thought i don’t have Base Salary for my employee? Since their salary is paid based on Total working hour. Am i right?

Hope someone can give insight to my problem.

Thanks & regards,

Do you want to pay your employees based on working hours only? If so, you can do so by creating timesheets and then linking it to your payroll entry. To know how to configure this, kindly refer this link.

Hope this helps.

Hi Michelle,

Thanks for the reference. Yes i would like to pay my employee based on their working hours. Based on what i read, it’s mean i have to create timesheet for every employee?

Simple example is like this : A come to office and do normal working hours from 8:00 tp 17:00 (8 Working hours, 1 hour of lunch time). After office hour A do OT from 17:00 to 20:00 (3 hour of OT).

So in current ERP system i need to input 2 timesheet for A ? 8 hours of normal hours and 3 hours of OT ? Becase normal and OT has different rate.

Thanks & regards,

Hey Randy,

Don’t you have a fixed salary structure for normal hours? Usually, there is a fixed salary for normal working hours which can be tracked by created a salary structure. If you need to track OT, you can create timesheets for employees. These timesheets (OT) will be fetched in the salary structure (normal) and the salary for both these cases will be calculated accordingly in a single payslip.

Let me know if you have any queries.

Hi Michelle,

Yes even though i have normal office hour (8:00-17:00), sometimes if employee come at 10:00, i only count their work hour as 6 hours (1 hour deduction for lunch break).

If that so, can i create 2 TimeSheet? one for Normal Office Hour and one for Over Time?

Thanks & regards,

Hello Randy,

Yes you can create as many timesheets as you wish. In your case, you can create two timesheets: one for normal hours and the other for OT. You can keep both these timesheets in defat state and fill in daily working hours in each row, each row of the timesheet corresponding to one working day. At the end of the month, you can submit the timesheet.

Hope this helps.

Hi Michelle,

Thanks, it’s really helpful. I already create timesheet and i can assign it to employee.

Anyway i have another question, in Salary Component, if we already set the Hour Rate to let’s say 100, we can just change it at the salary slip, isn’t it?

And in Timesheet - Billing Detail, there are Billing rate and Costing rate, should i just fill in to 0 ?

Thanks & regards,

Hello Randy,

You have to set the hour rate in the Salary Structure and not in the Salary Component. In Payroll Entry however, the rate cannot be changed.

yes, you can keep this 0.

Hope this helps.

Hi Michelle,

I found out we can only assign 1 Salary Structure to 1 employee, it’s logical, of course.
But in my case, i can’t divide the payment for normal hour and overtime, since hour rate is different. (Overtime rate is 1.2x Normal Hour)

I try to create dependent Salary Slip, and adjust the hour rate (next to the Salary Slip Timesheet), but the earning didn’t change, even after i save the Salary Slip. If it’s change according to the adjusted hour rate. It would be solve my problem. Maybe that’s a bug?

Is there anyway i can do ?

Thanks & regards,

Edit : i can adjust the hour rate, but result is i have 2 salary slip (normal & OT) per employee every month… Is there any other way i can do to stick 1 salary Slip with the different rate? i think about adjust manually the OT hour (time 1.2 manually for amount of hour in timesheet). that way i just need same hour rate and the salary slip is 1 per employee.

Hello @michelle and @higuain.20. I hope you won’t mind the direct mention.

After reading your replies to the post, I am confident enough that it’s possible to pay employees based on their working hours, through timesheets. But to lay a firm foundation for my query, I will briefly discuss what I already have set up in ERPNExt.

We have 67 employees currently working at our company. I am able to fetch their check-in logs from the biometric device and mark their attendance. The attendance workflow is amazing, I can mark the status as work from home, present, absent, half-day, and on leave, based on employees check-in logs and shift timings.

Now I have employees’ attendance for a month with already calculated “Working Hours” in the attendance report. I created “Salary Components” based on which I created “Salary Structure”, also assigned those to employees, and created Payslips.

I noticed that ERPNext does not consider working hours when calculating Payslip, all it takes into account is the attendance status based on which it fetches “Working Days”, “Absents”, “Payment Days” and “Leave without Pay”. The salary calculation is based on fixed status, which does not provide any detail about how many hours an employee has worked for this particular month?

Alternatively, if I’m using Timesheets, I would need to create timesheets for all employees individually, that would be 67 sheets for all employees for one day. Can we automate this to fetch data from employees’ working hours in attendance, and create timesheets for a month? This will be super amazing.

If not, is there any other workflow I can use to automate attendance and payroll with having minimum manual settings?

Suppose, an employee has worked for 4 hours yesterday and 12 hours today. His total working hours for these days is 16. An employee can work any hours in a day but have to complete his weekly working hours. This is our current policy. Is it possible to utilize any feature of ERPNext to create this workflow? I really would appreciate your help on this.

Thank you. Stay blessed and safe.

1 Like

Hi @Aamir_Khan I am working on something very similar. I will keep you posted if I make any progress.

Have a great day!

1 Like

We are facing the same issue. We would like to use an auto-attendance device that calculate working hours throughout the month. Sometime our employees work from 8:00 to 17:00 sometime they work from 10: to 18:00. As said before we would prefer not to create so many timesheet manually.

Thank you for all your input!

I dealing with this issue too. What I have found so far is:

  1. There is a Working Hour field in the Attendance doctype which could be populated via the Mark Attendance button in Shift Type doctype (assuming it is well configured). The Working Hours are calculated using the Employee checkin records (IN/OUT), which can be recorded manually or via integration with biometric device (link).
  2. Apparently, this Working Hour is not taken into account while doing the Salary Slip / Payroll Entry, only the Working Hour recorded through Timesheep, at least not automatically. Am I right in this point?

Assuming that my second point is right, then the change that needs to be done is: bring the Working Hour data from Attendance and calculate the salary base on cost per hour. (I’m aware this is a over-simplification because there are other variables like: late/early check in/out, but I speak in basic terms just to understand the problem and possible solution).

What do you say?

Here is what the support team told me :


Feature for Hourly Payment through Biometric/Check-ins Record is not available for now, We will add that feature in our roadmap.

Till then you can use a timesheet for capturing working hours and for payment you have to create a Salary Structure based on the timesheet. Where You can define the salary Component and Hourly Rate for payment. Please refer to the screenshot.


So, there is no way to do it now, except by timesheet.

Will give it a try.

ERPNext: v15.0.0 (version-15)
Frappe Framework: v15.0.0 (version-15)
Frappe HR: v15.0.0-dev (version-15-beta)

Assigned shift to Employee, did Employee check-in and check-out manually.
Hours do not work while clicking on Mark Attendance in Shift type.

Our employees are paid hourly.
we already work out how many they work. Can I not just put in
115 hours (for example) then it use employees hours wage to work out what the employee is due.
The Timesheets want us to allocate this to a project. So we would not be able to add the employee’s hours into this easily. (also your input box is so cumbersome for date and time).
Is there a simple way to do this?