# How attendance works

What an attendance records, the ways it is created, the rules that keep it consistent, how extra hours are computed and approved, who may do what, and what the app does not do.

**Attendances** keeps one kind of record: an attendance, a stretch of work by one employee. Everything else, from the top bar circle to the reports, creates, reads or judges those records.

## The attendance {#the-record}

An attendance holds an **Employee**, a **Check In** and a **Check Out**. While the check-out is empty, the employee is at work; the next check-out closes it. Its date is the day of the check-in in the employee's time zone, so a night shift belongs to the day it started.

**Worked Time** is the time between the two, less the lunch break of the employee's working schedule when the attendance covers it; a flexible schedule has no break taken off. A day can hold several attendances, for instance before and after lunch, and the reports add them up.

Each attendance also keeps how it was recorded, once for the check-in and once for the check-out, in **Mode**:

- **Systray**, from the circle of the top bar;
- **Kiosk**, at the shared kiosk;
- **Manual**, typed by a manager;
- **Automatic Check-Out**, closed by the app when someone forgot;
- **Technical**, the one-second attendances that record a missed day when absences are managed.

With **Device & Location Tracking** on, the top bar and the kiosk also keep the place, IP address and browser of each action.

## The state of an employee {#states}

From the last attendance, each employee is either checked in or checked out. The top bar circle is green or red, the kiosk cards read **On site**, **Online** or **Absent**, and the employee cards of the Employees app show the same state with their presence dot.

## The rules that keep the records consistent {#rules}

The app refuses an attendance whose check-out is earlier than its check-in, a second open attendance for the same employee, and two attendances of the same employee that overlap. Attendances cannot be duplicated. Every change of the times is written in the chatter, with who made it.

## Extra hours {#extra-hours}

Extra hours are computed, never typed. Each employee version carries an **Overtime Ruleset**; each time an attendance is saved, changed or deleted, the app applies the rules of that ruleset to the days concerned:

- a **Quantity** rule compares the hours of a day or a week with the employee's schedule, or with a fixed duration, within its tolerances;
- a **Timing** rule counts the hours worked at given moments, such as non-working days.

The result is one or more extra hours lines on the attendance, under **Overtime Details**, each with its rules, its hours, its pay rate and a status: **To Approve**, **Approved** or **Refused**. The setting **Extra Hours Validation** decides whether new lines start approved or wait for a manager. **Worked Extra Hours** sums every line; **Validated Extra Hours** only the approved ones, and that is the figure the reports and the time off bridge use. When **Absence Management** is on, missing time becomes negative extra hours.

Lines are computed again from the attendances whenever those change, or when a ruleset is regenerated; a rule changed later does not touch past lines by itself. [Set up overtime rules](set-up-overtime-rules) and [Approve extra hours](approve-extra-hours) go through both.

## Access rights {#access-rights}

| Access right | Can |
|---|---|
| **User: Read his own attendances** | Every internal user: read their own attendances and extra hours, and check in from the top bar when it is allowed |
| **Officer: Manage attendances** | Open the app, and record, correct and approve the attendances of the employees whose **Attendance** approver they are |
| **Officer: Manage all attendances** | The same for every employee, plus **Kiosk Mode** |
| **Administrator** | Also the settings, the rulesets and the **Configuration** menu |

**Officer: Manage attendances** is not chosen on the user's form: naming someone **Attendance** approver on an employee's **Settings** tab gives it, and it goes away when they approve nobody. The other rights are set as [Create a user and set access rights](/docs/general-settings/create-a-user-and-set-access-rights) explains.

## What connects to what {#connections}

- **Employees**: the approver, the badge number, the PIN and the ruleset sit on the employee's form, with the **Monthly Hours** button: [How employee records work](/docs/employees/how-employee-records-work).
- **Time Off**: the **Time Off Ledger** compares each day with the schedule and approved time off, and extra hours from a rule that gives them back can be taken as time off: [How time off works](/docs/time-off/how-time-off-works).
- **Timesheets**: a report there compares attendances with the time logged on tasks: [How projects and timesheets work](/docs/projects/how-projects-and-timesheets-work).
- **Analysis**: the ready-made **Attendances Analysis** dashboard: [Ready-made dashboards](/docs/analysis/ready-made-dashboards).

## What the app does not do {#does-not}

- It does not pay anyone: **Pay extra hours** and its rate only mark the hours.
- It does not refuse a check-in by place or by hour; tracking records where people were, nothing more.
- It sends no reminder to someone who forgot to check in or out; **Automatic Check-Out** only closes forgotten attendances.
- It does not plan shifts: the expected hours come from each employee's working schedule.

---

- Source: https://jaah.app/docs/attendance/how-attendance-works
- Updated: 2026-10-28
- Version: Attendances 19.0.2.0
