Overtime Compliance
Calculating overtime can be one of the more difficult processes when running payroll. Along with federal regulation surrounding overtime, each state may also have their own regulation. Adding overtime rules to your timekeeping system can take many developer hours. For this, Zeal offers our overtime recommendation engine.
In this guide
- What is overtime.
- How to report overtime hours to Zeal.
- How to offload overtime calculations to Zeal.
What is overtime?
Overtime pay is essentially additional compensation that an employee is owed for working extra hours. At the federal level, overtime is defined in the Fair Labor Standards Act (FLSA) as any hours worked over 40 in a workweek (see Department of Labor for definition of a workweek). Any overtime should be paid at a rate of 1.5x the employee’s regular rate of pay.
As with most legislation in the United States, each state may also have its own rules and regulations on overtime. For example a few states, such as Alaska and California, mandate that any hours worked over 8 in a workday also be considered overtime.
Finally, there may be industry-specific overtime standards that need to be accounted for. With all this considered, calculating overtime can get complicated.
When accounting for overtime with Zeal there are two options:
- Calculate overtime hours in your system and report them to Zeal
- Report regular hours and let Zeal’s overtime recommendation engine do the work
Report overtime to Zeal
To report overtime hours to Zeal, the first step is to calculate the overtime hours on your system. You’ll need to reference relevant federal, state, and industry-specific regulations, then build rules into your system to convert regular hours to overtime. Alternatively, you could partner with a 3rd party time and attendance system that has this functionality built in.
Once you have the overtime calculations, you can simply report them to Zeal as an overtime
earning component on a Shift.
Add a shift to an existing check
curl --request POST \
--url https://api.zeal.com/shifts \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {{testApiKey}}' \
--header 'Content-Type: application/json' \
--data '
{
"shifts": [
{
"hourly": {
"hours": 8,
"wage": 25
},
"overtime": {
"hours": 2,
"wage": 37.5
},
"workLocationID": "{{workLocationID}}
"time": "2023-01-01T21:00Z"
}
],
"companyID": "{{companyID}}",
"employeeID": "{{employeeCheckID}}"
}
'
Omitting the wage
If you omit the
wage
on anovertime
earning component, Zeal will take thedefault_ot_wage
from the employee object.
Use Zeal’s overtime recommendations
To make our partners' lives easier, Zeal offers an overtime recommendation engine based on FSLA regulation. It accounts for both federal and state overtime rules.
The first step to take advantage of this feature is to ensure you’re properly reporting a shift’s work location. If an employee only works in one location, nothing is required after onboarding - Zeal will automatically apply the default work location to all shifts. However, if you have employees that work across various jurisdictions, to get the most accurate recommendations, you’ll need to ensure you’re reporting the workLocationID
of each shift.
When work locations vary
Check out our guide on Tax Compliance Across Multiple Jurisdictions to learn how to submit work locations for employees that work in varying jurisdictions.
Set the employee's work_week_start
, which defines a fixed, 168-hour period that consists of seven consecutive 24-hour periods. It can start on any day of the week and at any time of day, and it doesn't have to match the calendar week. work_week_start
should be a timezone specific ISO-8601 date-time.
curl --request PATCH \
--url https://api.zeal.com/employees \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {{testApiKey}}' \
--header 'Content-Type: application/json' \
--data '
{
"companyID": "{{companyID}}",
"employee": {
"employeeID": "{{employeeID}}",
"work_week_start": "2023-01-01T00:00:00.000-07:00"
}
}
'
Once this is in place, it's a simple matter of enabling the flsa_ot_recommendation
flag on any check you want to use overtime recommendations.
curl --request POST \
--url https://api.zeal.com/employeeCheck \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {{testApiKey}}' \
--header 'Content-Type: application/json' \
--data '
{
"flsa_ot_recommendation": true
"shifts": [
...
],
"companyID": "{{companyID}}",
"employeeID": "{{employeeID}}",
"reportingPeriodID": "{{reportingPeriodID}}",
"check_date": "2023-03-05",
}
'
With this flag enabled, you can submit your shifts with only regular hours.
curl --request POST \
--url https://api.zeal.com/employeeCheck \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {{testApiKey}}' \
--header 'Content-Type: application/json' \
--data '
{
"shifts": [
{
"hourly": {
"hours": 8,
"wage": 25
},
"time": "2023-02-24T17:00"
},
{
"hourly": {
"hours": 9,
"wage": 25
},
"time": "2023-02-25T18:00"
},
{
"hourly": {
"hours": 10,
"wage": 25
},
"time": "2023-02-26T19:00"
},
{
"hourly": {
"hours": 10,
"wage": 25
},
"time": "2023-02-27T19:00"
},
{
"hourly": {
"hours": 8,
"wage": 25
},
"time": "2023-02-28T17:00"
},
],
"companyID": "{{companyID}}",
"employeeID": "{{employeeID}}",
"reportingPeriodID": "{{reportingPeriodID}}",
"check_date": "2023-03-05",
"flsa_ot_recommendation": true
}
'
Then, when the check is processed, the regular hours will be converted to meet the overtime recommendations.
{
"status": 200,
"success": true,
"data": {
"shifts": [
{
"hourly": {
"hours": 8,
"wage": 25
},
"time": "2023-02-24T17:00"
},
{
"hourly": {
"hours": 8,
"wage": 25
},
"overtime": {
"hours": 1,
"wage": 37.5
}
"time": "2023-02-25T18:00"
},
{
"hourly": {
"hours": 8,
"wage": 25
},
"overtime": {
"hours": 2,
"wage": 37.5
}
"time": "2023-02-26T19:00"
},
{
"hourly": {
"hours": 8,
"wage": 25
},
"overtime": {
"hours": 2,
"wage": 37.5
}
"time": "2023-02-27T19:00"
},
{
"hourly": {
"hours": 3,
"wage": 25
},
"overtime": {
"hours": 5,
"wage": 37.5
},
"time": "2023-02-28T17:00"
},
],
"companyID": "{{companyID}}",
"employeeID": "{{employeeID}}",
"reportingPeriodID": "{{reportingPeriodID}}",
"check_date": "2023-03-05",
"flsa_ot_recommendation": true
}
}
And like that, overtime compliance is managed without having to add complicated rules to your system.
Errors
Zeal will reject (i.e. fail at processing) any new employee checks with the flsa_ot_recommendation attribute during processing if Overtime calculations have already been applied to other employee checks within the same reporting period. In other words, once Zeal has processed and applied Overtime calculations to checks for a given reporting period, no additional checks can be created for that period, as doing so would alter the previously applied calculations.
Recap
- Overtime pay is essentially additional compensation for extra hours worked.
- Overtime regulation exists at the federal, state, and sometimes even industry level.
- You can calculate overtime hours on your system and report them to Zeal.
- You can alternatively use Zeal’s overtime recommendation engine to convert regular hours to overtime hours.
Updated 17 days ago