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:

  1. Calculate overtime hours in your system and report them to Zeal
  2. 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 an overtime earning component, Zeal will take the default_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.

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_reccomendation": 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_reccomendation": 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_reccomendation": true
  }
}

And like that, overtime compliance is managed without having to add complicated rules to your system.

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.