Skip to content

Attendance & Shifts

The Attendance module tracks when employees are present, absent, late, or on leave. It supports both manual attendance entry by HR staff and API-driven clock-in/out for kiosk or mobile integrations. Attendance data flows into reports, payroll calculations, and compliance monitoring.


Overview

Navigate to HR Panel → Attendance or /attendance. The module provides:

  • Daily attendance recording per employee
  • Shift management
  • Attendance status tracking with colour-coded indicators
  • Monthly attendance reports
  • API endpoints for clock-in/clock-out integrations

Attendance Statuses

Every attendance record has one of the following statuses:

StatusBadge ColourDescription
PresentGreenEmployee attended for the full working day
LateYellowEmployee arrived after the defined late threshold
AbsentRedEmployee did not attend and has no approved leave
Half DayOrangeEmployee attended for half of the standard working hours
HolidayBluePublic or company holiday — no attendance required
WeekendGreyNon-working day per the employee's shift schedule
On LeavePurpleEmployee has approved leave for this day (synced from Leave module)

Automatic Holiday and Weekend Marking

When you record attendance for a period, the system automatically marks days that fall on weekends (based on the employee's shift) or configured public holidays as Weekend or Holiday. You do not need to manually enter these.


Shift Management

Shifts define the working hours schedule for a group of employees.

Creating a Shift

  1. Navigate to Attendance → Shifts
  2. Click Add Shift
  3. Fill in the shift details:
FieldRequiredDescription
Shift NameYesDescriptive name (e.g., Day Shift, Night Shift)
Start TimeYesWhen the shift begins (e.g., 09:00)
End TimeYesWhen the shift ends (e.g., 18:00)
Late AfterNoMinutes after start time before an arrival is marked Late (e.g., 15)
Working DaysYesCheckboxes for Mon–Sun (select all days this shift works)
Break DurationNoTotal break time in minutes (e.g., 60)
  1. Click Save Shift

Assigning a Shift to an Employee

  1. Open an employee's profile
  2. Click Edit
  3. Select a Shift from the dropdown
  4. Save

All employees on the same shift share the same schedule. If a single employee has a different schedule, create a custom shift for them.


Recording Attendance Manually

HR staff can record attendance for any employee or date.

Single-Day Entry

  1. Navigate to Attendance → Add Attendance
  2. Select the employee
  3. Select the date
  4. Choose the status (Present, Late, Absent, Half Day)
  5. If Present or Late, enter Check-in Time and Check-out Time
  6. Add optional notes
  7. Click Save

Bulk Attendance Entry

To record attendance for an entire team or date range:

  1. Navigate to Attendance → Bulk Entry
  2. Select the Department and Date Range
  3. The system lists all employees in that department
  4. Click the status for each employee on each day
  5. Click Save All

Attendance Report

The monthly attendance report is available at Reports → Attendance.

ColumnDescription
EmployeeName and ID
DepartmentEmployee's current department
Present DaysCount of Present status records
Late DaysCount of Late status records
Absent DaysCount of Absent status records
Half DaysCount of Half Day records
Leave DaysCount of On Leave records
Total Working DaysPresent + Late + Half (0.5 each)

Filters Available

FilterOptions
Month1–12
YearAny year with data
DepartmentAll departments
EmployeeSpecific employee
StatusSpecific attendance status

API Check-In / Check-Out

GeniusHRM provides API endpoints for integrating with physical time clocks, kiosks, or mobile apps.

Check-In

http
POST /api/v1/attendance/check-in
Authorization: Bearer {token}
Content-Type: application/json

{
  "employee_id": 42,
  "check_in_time": "2026-04-03T08:55:00Z",
  "location": "Main Office",
  "device_id": "KIOSK-01"
}

Response:

json
{
  "success": true,
  "message": "Check-in recorded",
  "data": {
    "id": 1201,
    "employee_id": 42,
    "date": "2026-04-03",
    "check_in": "08:55",
    "status": "Present"
  }
}

Check-Out

http
POST /api/v1/attendance/check-out
Authorization: Bearer {token}
Content-Type: application/json

{
  "employee_id": 42,
  "check_out_time": "2026-04-03T17:30:00Z"
}

Late Threshold Configuration

The late threshold determines how many minutes after the shift start time an arrival is classified as Late rather than Present.

  1. Go to Settings → Attendance
  2. Set Late Arrival Threshold (in minutes, e.g., 15)
  3. Save

Any check-in more than 15 minutes after shift start will be automatically marked as Late.


Leave and Attendance Sync

When a leave request is Approved in the Leave module, the corresponding attendance days are automatically updated:

  • Status is set to On Leave
  • Check-in and check-out times are cleared
  • The leave type is stored on the attendance record for reporting

This sync prevents double-entry and ensures leave days are not counted as absent in reports.


Exporting Attendance Data

From the Attendance list:

  1. Apply any desired filters (month, department, status)
  2. Click Export CSV
  3. The file downloads as attendance-YYYY-MM.csv

The export includes all filtered records with all columns.

Released under the MIT License.