> ## Documentation Index
> Fetch the complete documentation index at: https://docs.filexpress.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Schedule compliance

> Late arrivals, early departures, absences and classified hours by day and by employee

**Human Resources → Schedule compliance** shows, for each employee and day, how attendance compares with their [schedule](https://docs.filexpress.app/en/docs/rrhh/horarios.md): late arrivals, early departures, absences and the classification of hours according to the [labor rules](https://docs.filexpress.app/en/docs/rrhh/reglas-laborales.md).

Results are calculated automatically every time attendance is recorded or imported, and when the rules, schedules, assignments or holidays change.

## Filters

Choose the date range and, optionally, an employee and a status.

## Daily detail

One row per employee and day:

| Column | Description |
| - | - |
| **Status** | See the statuses table. |
| **Day / shift** | Day type (Working, Rest, Holiday) and shift class (Day, Night, Mixed). |
| **Scheduled / Worked** | Schedule hours and hours actually worked. |
| **Late / Early departure** | Minutes outside the configured tolerance. |
| **Reg. day / Reg. night / Overtime day / Overtime night** | Classified hours. |
| **Overtime approval** | Only if the rules require approval: status of the decision on the day's overtime (see [Overtime approval](#overtime-approval)). |
| **Warnings** | For example: missing check-out, punches outside the schedule, overtime cap exceeded, overtime pending approval. |

### Statuses

| Status | Meaning |
| - | - |
| **Compliant** | Worked with no late arrival or early departure outside tolerance. |
| **Late** | Arrived after the scheduled time plus tolerance. |
| **Early departure** | Left before the scheduled time minus tolerance. |
| **Late and early departure** | Both. |
| **Absent** | Working day with a schedule, with no punches, no approved leave and not a holiday. Also if the late arrival exceeds the configured absence limit. |
| **Incomplete** | Has a check-in without a check-out (or the reverse). |
| **Leave** | Has an approved leave that day. |
| **Holiday** / **Rest** | Did not work on a holiday or rest day. |
| **Worked on holiday** / **Worked on rest day** | Worked on a holiday or rest day; the hours carry the corresponding premium. |
| **No schedule** | Worked, but has no assigned schedule. Hours are classified anyway. |

> [!NOTE]
>
> Late arrival, early departure and absence are only calculated for employees with a schedule, on working days that are not holidays.

## Overtime approval

If the [labor rules](https://docs.filexpress.app/en/docs/rrhh/reglas-laborales.md#what-is-configured) have **Requires approval** enabled, each day with overtime generates an approval request. Until it is approved, that overtime is **not paid**: the suggested amount and the [payroll attendance review](https://docs.filexpress.app/en/docs/rrhh/nominas.md#attendance-review) only include approved overtime minutes.

### Approval statuses

| Status | Meaning |
| - | - |
| **Pending** | There are overtime hours not yet decided. They are not included in the amount. |
| **Approved** | All of the day's overtime was approved. |
| **Partially approved** | Only part was approved (the approved minutes are shown); the rest is rejected. |
| **Rejected** | The day's overtime is not paid. |

### Decide a day

**1. Turn on Pending approval (optional)**

Filters the table to days with undecided overtime; the switch shows how many there are.

**2. Click Decide in the Overtime approval column**

**3. Choose Approve all, Approve partially or Reject**

In a partial approval, you enter the **approved minutes** (between 0 and the calculated overtime). Approving 0 minutes is equivalent to rejecting.

**4. Write a comment and click Save decision**

The comment is mandatory when rejecting.

When you save, the day is recalculated and the suggested amount reflects the decision. In a partial approval, approved minutes are taken in chronological order: day overtime first and then night overtime.

### Decide in bulk

Check the boxes of several days (for one or several employees) and use **Approve selected** or **Reject selected**. In bulk, each day's full overtime is approved; to approve a portion use **Decide** on the day. **Clear selection** unchecks everything. If any day cannot be decided, the rest are processed anyway and you are told which ones failed.

### Who can approve

* Company administrators, for any employee.
* The employee's **direct manager** (*Manager* field on their record), only for their direct reports. A manager only sees their team's approvals in the list.
* Nobody can decide their own overtime, even if they are an administrator.

### Important rules

* Days included in a **processed** or **paid** payroll (locked) can no longer be decided.
* If the attendance of an already decided day changes and the calculated overtime is different, the approval goes back to **Pending** with the warning *Overtime changed after the decision: requires new approval*. If the minutes do not change, the decision is kept.
* If the day no longer has overtime, or the rules stop requiring approval, the approval disappears.
* The **Overtime day** and **Overtime night** columns always show the **calculated** overtime; what is payable depends on the approval.

## Summary by employee

Range totals per employee: days worked, number of late arrivals, minutes late and of early departure, absences, hours by category and the **suggested amount** of premiums and overtime according to their [payment mode](https://docs.filexpress.app/en/docs/rrhh/empleados.md#pay-type).

With overtime approval, the **Pending overtime** (not yet decided) and **Rejected overtime** columns are added; the suggested amount only includes approved overtime.

## Recalculate

The **Recalculate** button recalculates the selected range (and employee). Use it, for example, after correcting rules with an effective date more than 90 days ago, which the automatic recalculation does not reach.

> [!NOTE]
>
> Days included in a **processed** or **paid** payroll are locked and are not recalculated, so the result matches what was paid.

## See also

* [Attendance](https://docs.filexpress.app/en/docs/rrhh/asistencia.md)
* [Payrolls: attendance review](https://docs.filexpress.app/en/docs/rrhh/nominas.md#attendance-review)
* [API: Attendance results](https://docs.filexpress.app/en/docs/api/rrhh/resultados-asistencia.md)
* [API: Overtime approval](https://docs.filexpress.app/en/docs/api/rrhh/resultados-asistencia.md#overtime-approval)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.