Overtime Fixed Rate should be configurable per Employee, not just per Shift Type

Module: HR → Shift Management → Overtime
Version: ERPNext v16 / Frappe HR


The Situation

We have a large number of hourly-wage employees, each with a different pay rate. We need to calculate overtime using Fixed Rate, where each employee has their own specific overtime rate.

The issue we’re running into: the Fixed Rate in Overtime Type is defined at the Shift Type level, not at the employee level.

This means if we have 100 employees all on the same shift but with different wages, they would all get the same overtime rate — which is incorrect.


Our Questions

  1. Is there a built-in way in Frappe HR to handle per-employee overtime rates that we might have missed?
  2. If not, how are others handling this in real-world setups with large hourly workforces?
  3. Is this something the Frappe team is planning to address in a future release?

Any guidance or experience from the community would be greatly appreciated!

@match_systems Hello, let me try to answer some of the questions if it might help

1. Built-in Per-Employee Overtime Rates?

No built-in support exists in Frappe HR/ERPNext v16. Overtime Type is configured at Shift Type level only — Fixed Hourly Rate applies uniformly across all employees on that shift, or Salary Component-Based derives from individual base pay. Your scenario (100 hourly employees, different rates, same shift) cannot be handled natively.

2. Real-World Solutions + Implementation

Option 1 — Custom Field + Salary Structure (Recommended)

Step 1: Add a Custom Field to Employee: overtime_hourly_rate (Currency)

Step 2: Salary Structure → Formula:

overtime_hourly_rate * overtime_hours * 1.5

Step 3: Import overtime hours monthly via Data Import → Additional Salary (Amount = formula result)

Result: Scales to 100+ employees, preserves audit trail.

Option 2 — Server Script Alternative

# On Submit of Attendance/Check-in

if doc.overtime_hours:

overtime_slip = frappe.get_doc({

    "doctype": "Overtime Request",

    "employee": doc.employee,

    "overtime_type": "Standard Overtime",

    "overtime_amount": doc.overtime_hourly_rate \* doc.overtime_hours \* 1.5

})

3. Frappe Team Future Plans?

No confirmed per-employee fixed rate feature. v16 improved overtime automation (check-in → slip → approval) but kept rates Shift Type-bound.