Skip to main content

Attendance

The Attendance area lets you see who was present each day, correct records, define working shifts, review employee requests, and pull punches from biometric devices. Everything below lives under Attendance and Biometric in the admin sidebar.

ScreenRouteWhat it's for
Daily Attendance/admin/attendanceView attendance by date or by employee/month
Mark Attendance/admin/attendance/markRecord or edit attendance by hand
Bulk Upload/admin/attendance/uploadImport attendance from a CSV file
Attendance Logs/admin/attendance/logsRaw punch records (clock-in/out events)
Regularizations/admin/attendance/regularizationsApprove employee correction requests
Overtime Requests/admin/attendance/overtimeApprove overtime requests
Shifts/admin/attendance/shiftsWorking hours, weekly off, attendance mode
Attendance Settings/admin/attendance/settingsGrace, lateness, overtime and reminder rules
Biometric Devices/admin/biometricConnect and manage ZKTeco devices

Employees see their own attendance and file correction requests from their portal at /portal/attendance.

Daily attendance

Open Daily Attendance to see one row per employee for a chosen date. Use the Today / Yesterday chips, the day stepper, or the calendar to move around, and filter by Department. Summary cards at the top count Total, Present, Absent, Late and On Leave.

Each row shows the status, clock-in, clock-out, late minutes, working hours and the source of the record (Auto, Biometric, Manual or Import). Days that were worked on a holiday or weekend are highlighted in amber so you can spot overtime-eligible work at a glance.

To see one person's whole month, pick an employee from the Employee dropdown — the page switches to a per-day monthly view with its own summary (present, absent, late, leave days and total hours). Use Export CSV to download the current view or Print for a paper attendance register.

note

A day where someone punched in but never punched out is tagged Missing Clock-out (once the shift-end plus checkout-grace window has passed). This is only a flag for follow-up — it does not change the day's status or reduce pay. Fix it by filing a regularization.

Marking attendance by hand

Mark Attendance works in two modes:

  • Daily mode (default) — every employee for a single date. Set each person's status, clock-in and clock-out, add an optional remark, then Submit Attendance. The Mark All Present button fills everyone in with the default 09:00–18:00 times.
  • Monthly mode — pick an employee to edit their full month. Each day is an editable row; changed rows are highlighted and Save only writes the days you touched. Mark All Working Days Present fills in every non-weekend, non-holiday, non-leave day.

Available statuses include Present, Absent, Half Day, Late, Early Leave, On Leave, Holiday, Weekend, Work From Home and Comp Off.

The Force (override) lock

In monthly mode each row has a Force checkbox. Normally the clock-in time drives the status — an on-time punch becomes Present, a late one becomes Late/Half-day/Absent, and the system may recompute this in the background. Tick Force to pin the exact status you chose while keeping the real punch times on record. Typical uses:

  • Keep an employee Present even though they clocked in two hours late.
  • Mark someone Absent for policy reasons even though a punch exists.

If the times themselves are wrong (for example a bogus auto-present time), clear the punch with the small next to the time field instead of using Force.

Rest-day swaps

In monthly mode, Swap Rest Day records that an employee worked a weekly-off or holiday and takes their rest on a different day instead. The worked day is paid as a normal day and the substitute day shows as the rest day; both are tagged with a Swap marker wherever attendance is displayed.

Shifts

A shift defines working hours and the rules that turn punches into attendance. Open Shifts to add or edit them. Each shift has:

  • Start / End time, Break (min), Grace (min) and Late Threshold (min).
  • Weekly Off days (tap the day chips).
  • Attendance Mode (see below).
  • Attendance affects salary — on by default. Turn it off for directors or fixed-retainer staff so absences, half-days and lates never reduce pay (leave balances are still deducted normally). A shift with this off shows a Fixed Pay tag.
  • Default Leave Group inherited by employees on the shift.
  • Default shift — the shift assigned automatically to every new employee created without an explicit shift (including bulk-imported ones), so nobody ends up with no working pattern. An employee with no shift is never auto-marked present — payroll would read their whole month as absence and deduct nearly the entire salary — so payroll approval is blocked while the workspace has no default shift or while any employee has none (see pre-flight checks). Keep exactly one shift flagged as the default: flagging several makes it undefined which one a new employee inherits, and payroll pre-flight warns about it. New workspaces come seeded with a generic Office Shift (09:00–17:00, auto-present, Sat/Sun off) already flagged as the default.

Attendance modes

The mode decides how a working day is treated when there is no punch.

ModeBehaviour
Punch RequiredBiometric/manual in-out is enforced. A working day with no punch becomes Absent.
Auto-PresentFor residential or trusted staff. A background job marks working days Present; HR can still override any day by hand.
Punch Not RequiredExempt staff. No attendance rows are written on working days, biometric punches are ignored, and the employee is paid in full.
warning

Punch Not Required always behaves as a fixed-pay shift — the Attendance affects salary toggle is locked off for it. Choose a different mode if you need attendance to influence pay.

Exempt days appear as Exempt in attendance views, and monthly summaries count exempt days separately from present/absent totals. Because exempt staff never produce attendance rows by design, the payroll pre-flight check that demands attendance before approval skips employees on Punch Not Required shifts — an exempt shift never blocks payroll.

Regularizations

When an employee's record is wrong (missed punch, working from a client site, etc.) they file a regularization request from their portal Attendance page. Requests land on the Regularizations screen for review.

Each row shows the date, the current status and times, the requested status and times, and the employee's reason (click the eye icon to read a long reason in full). Filter by All, Pending, Approved or Rejected, then Approve or Reject. Approving writes the requested status/times onto the day; these human-approved records are protected and will not be overwritten by later biometric syncs.

Overtime requests

The Overtime Requests screen lists extra-hours requests with the employee, date, hours and reason. Filter and Approve / Reject the same way as regularizations.

How overtime is credited is controlled in Attendance SettingsOvertime:

  • Require OT Approval — when on, overtime is paid only for approved requests; unapproved extra hours are recorded but not paid.
  • Auto-Approve OT Requests — auto-approves submitted requests while keeping an audit trail.
  • Minimum Overtime (minutes) — how long past shift end counts as overtime.
  • Overtime Rate Multiplier — e.g. 1.5 for 1.5× pay.

Bulk upload

To import many records at once, use Bulk Upload. Download the template, fill it in and drop the file back. The CSV columns are:

employeeCode,date,status,clockIn,clockOut
EMP001,2024-01-15,present,09:00,18:00
EMP002,2024-01-15,absent,,
EMP003,2024-01-15,half_day,09:00,13:00

Status values are present, absent, half_day, late or work_from_home. Times are HH:MM (24-hour) and dates are YYYY-MM-DD. Imported rows show a source of Import.

Attendance logs

Attendance Logs shows the raw punch stream — every clock-in and clock-out event with its time, type, source, device and IP address. Filter with the date presets (Today, This week, This month, and so on), the month stepper, or by employee. This is the audit trail behind the processed attendance you see on the other screens.

Attendance settings

Attendance Settings holds the company-wide rules:

  • Grace Period — minutes after shift start before a late mark.
  • Checkout Grace — how long after shift end a punch-out still counts; beyond it the day is flagged as missing a check-out.
  • Late Thresholds 1–3 — each threshold has a minute value and an action: No Action, Warning, Mark as Half Day, Mark as Absent, or Salary Deduction.
  • Lates per month for Absent — how many lates in a month equal one absent.
  • Missing Punch Reminders — email employees who forget to check in or out, after a configurable offset. Holidays, weekly offs, approved leaves and trust-based shifts are skipped.
  • Working Days — working days per week and which days are weekly offs.

Biometric devices (ZKTeco)

The Biometric Devices screen connects ZKTeco fingerprint/face terminals so punches flow into attendance automatically.

Adding a device

Click Add Device and the wizard first probes the connection, then collects the details:

  • Host and Port (ZKTeco default 4370), Connection type (TCP/UDP) and Comm key if the device uses one.
  • Timezone and optional Area.
  • Auto-sync on/off and its interval in minutes, so punches are pulled on a schedule.

Use Test Connection on any device to confirm it is reachable.

Syncing punches and users

From a device you can:

  • Fetch Attendance — pull the latest punches into the workspace. Punches are merged into attendance without overwriting human-approved records (regularizations, leave, holidays).
  • Fetch Users — pull the device's user list so you can map each device user to an employee (bind). Unmapped punches stay visible until they are bound.
  • Sync Fingerprints — pull enrolled fingerprint templates into the employee library.
  • Push Employees — send selected employees down to the device.

Punches pulled from devices appear on the Biometric Punches page (/admin/biometric/punches) and can be exported to CSV. Per-device Sync History, a Command Log, Device Controls (enable/disable, restart, power-off, clear data, network/time settings) and Backups (create and restore device data) are available from each device's pages.

Geo attendance (GPS clock in/out)

Enterprise plan

Geo attendance is an Enterprise feature. On other plans the menu entries appear locked.

Employees can clock in and out from the employee portal when they are physically at a company site. The check runs on the server: the browser only reports the phone's or laptop's coordinates, and the workspace decides whether they are close enough.

Turn it on under Attendance Settings → Geo Attendance. Two settings live there:

  • Enable Geo Attendance — the master switch, off until you turn it on.
  • Max GPS Accuracy (meters) — punches whose reported accuracy is worse than this are refused. The default of 100 m keeps out coarse wifi- or IP-based location guesses that could otherwise place someone inside a site they are nowhere near.

Setting up locations

Geo Locations (/admin/attendance/geo-locations) is where you define the sites:

  • Name, Latitude and Longitude. Stand at the site and press Use my current location to fill the coordinates from your own device, or paste them from a map. View on map opens the point in Google Maps so you can sanity-check it.
  • Radius (m) — how far from that point still counts, from 10 m up to 10 km. A small office might use 100 m; a factory compound, warehouse yard or event venue needs more. The radius is per location, so each site can differ.
  • Branch — optional link to a company branch, for reporting.
  • Status — set a location to Inactive to pause it without deleting its history.

Assigning employees

Defining a site does not by itself let anyone punch from it. Open Assignments on a location and select the employees who may use it. Only assigned employees can clock in there, and only at the locations they are assigned to. Saving replaces the whole list, so unticking someone removes their access.

Reviewing attempts

Geo Punch Attempts (/admin/attendance/geo-attempts) records every attempt, the successful ones and the refused ones, with the employee, time, the nearest site, how far away they were, the accuracy their device reported, and the coordinates. When an employee says "it won't let me clock in", the reason is on this page. Refusals are one of:

ReasonWhat happened
Geo attendance disabledThe company switch is off.
Not assigned to any siteNobody has assigned them to a location yet.
GPS accuracy too lowTheir device's fix was vaguer than the configured maximum.
Outside site radiusThey were too far away; the message tells them the site and distance.
Punch-exempt shiftTheir shift is Punch Not Required on that date.
Day finalized by HRThe day was regularized or force-set, so a punch cannot change it.
Checkout window closedToo long after shift end — they should file a regularization.
Already recordedThe day already had a record the punch could not change.

Accepted geo punches become ordinary attendance: the same late grading, overtime and shift rules as a biometric punch, recorded with a source of "geo". Days that HR has already regularized or force-set are never overwritten.

What employees see

On My Attendance in the portal, assigned employees get a Clock In / Clock Out button. Their browser asks permission to use their location the first time. The button knows which action is next, so they cannot clock in twice. If they are out of range the message names the site and how far away they are.

Who can do what

Attendance and biometric actions are gated by permissions:

  • attendance.view_all — view all attendance, logs, settings and geo punch attempts.
  • attendance.mark — mark and edit attendance (and rest-day swaps).
  • attendance.bulk_mark — bulk mark / CSV upload.
  • attendance.regularize_approve — review and approve regularizations.
  • attendance.overtime_approve — review and approve overtime.
  • attendance.geo_manage — create geo locations and assign employees to them.
  • company.settings — change attendance settings.
  • biometric.view and biometric.manage — view or manage devices.

Employees need no extra permission to clock in — being assigned to a location is what grants it.

Employees use attendance.view_own and attendance.regularize_request to see their own records and file correction requests from the portal.