Attendance answers one question for every employee and every day: where were they, and does anything need a person to decide? SolaHR keeps one attendance record per employee per day (first check-in, last check-out, late, early-leave and overtime minutes), and on top of that it works out each person's day state from their schedule, holidays, approved leave and punches. Employees punch in and out from a personal link on their phone; HR records or corrects attendance on the admin screens described here.
The main screen is the Daily attendance roster. It lists everyone who was employed on the day you pick, including people who have not punched yet, so a missing check-in is visible instead of silently absent from the list. SolaHR never treats a missing punch as proof of absence: it flags the person for review once the workday is over, and nothing is deducted until someone approves it on the Attendance review page.
Where employees are allowed to check in is set on a separate page: Attendance locations. Which hours count as a normal day is set on Work schedules and Settings → Attendance Defaults (Settings).
Where to find it
| Screen | How to open it | URL |
|---|---|---|
| Daily attendance (roster) | Sidebar Time & Attendance → Attendance | /attendance |
| All records in a date range | All records in a date range (toolbar) | /attendance?view=records |
| Record one day | Record attendance (header) | /attendance/create |
| Bulk entry | Bulk entry (header) | /attendance/bulk-create |
| Attendance review | Pending actions (header) | /attendance/actions — see Attendance review |
| Monthly sheet and summary | Reports (header) | /attendance/report |
| Attendance settings | Settings (header) | /attendance/settings |
| Allowed locations | Allowed locations (header) or sidebar Attendance Locations | /attendance/locations |
The Time & Attendance group appears when your plan includes attendance and your role has Attendance → View. Scoped roles (HR Manager, Department Manager, Attendance Recorder, HR Viewer) work on their own focused page for assigned employees (see Permissions).
Before you start
Employees can check in from their phone only when all of these are true:
- At least one active location exists on Attendance locations, and the employee is allowed at it (all employees, a selected department or person, and not excluded).
- A working schedule is in place. Out of the box this is the Main work schedule, built from Settings → Attendance Defaults (work start time, work end time, late grace period and non-working days). See Work schedules.
- Employee Portal and Quick attendance are enabled for the organization on People → Portal Access (Portal Access).
- The employee is active, has a personal link, and today is on or after their Start date. Before the start date the employee's page says "Your employment has not started yet — Attendance opens on date", and HR, bulk entry and the API are refused too: "Attendance cannot be recorded before the employee start date (date)."
Also decide which automatic rules you want on Settings → Attendance Defaults and Settings → Payroll Defaults → Lateness deduction rule. Late, early-leave and absence deductions and overtime detection are all explained under How SolaHR turns punches into review items.
The Daily attendance roster
The header reads Daily attendance — "Everyone employed on the selected day, including people with no check-in yet." The line under the toolbar shows the weekday, the date and "n employed on this day".
Toolbar
| Control | What it does |
|---|---|
| Workday | A date box with Previous day and Next day arrows. The page opens on today. |
| Search | "Name or employee code". Applies after you pause typing. |
| Department | A searchable list; All departments by default. |
| Day state | All states, Needs review, or one of the day states below. |
| Today | Appears when you are looking at another day; jumps back to today. |
| Reset | Clears search, department, state and the single-employee filter. |
| All records in a date range | Switches to the raw records view (see below). |
Under the toolbar, coloured chips count the people in each state, for example Need attention 3, Completed 18. Click a chip to filter; click it again to clear. Only states that have people on the day are shown. If you came from the monthly sheet for one person, a chip One employee — show everyone removes that filter.
Notices above the table
| Notice | Meaning |
|---|---|
| "This day has not happened yet — nothing is expected or flagged." | A future date. |
| "This is a weekend day in your calendar (days). Nobody is expected to work; no absence is recorded." | Everyone is off because of the weekly rest days. |
| "Holiday name is a holiday" with the scope and counts | An active holiday falls on the day. It shows the scope (the whole organization or named departments) and "n on holiday · n expected at work · n worked on the holiday". |
| "Automatic review has not covered this date (active since date)…" | A past day before the automatic review was switched on, with people who need attention. Missing punches there have no review items; use Review older dates on the review page. |
| "n rows use the current schedule because the schedule in force on this date was not recorded (settings changed later)." | Some rows are shown with today's schedule because the schedule that applied on that date was not stored. |
| "n former employees have no recorded leaving date and cannot be placed on this day." | Some people are marked as left but have no end-of-service or dated status change. Show who lists them; Record end of service opens End of Service for them. |
| "Not yet in the daily register: shown from live data. The register stores each day after it is over." | A day that has finished but is not stored yet; the screen computes it live. |
The table
The roster shows 25 people per page, with page controls at the bottom.
| Column | Meaning |
|---|---|
| Employee | Name, employee number, department, and small tags: first day, starts date (a person who has not started), last day, left date. |
| Day state | A coloured badge (see the table below), with a line of detail underneath: why (weekend, not on their schedule, not on the job), the review status, part-day leave, worked on a day off, the holiday name, or "n pending items". A Holiday duty or Worked on holiday tag can appear next to the badge. |
| Shift | The shift for that person on that day, for example 08:00–17:00; overnight under a shift that ends the next morning; "Holiday — no shift" on a holiday without duty. |
| Check-in / out | In and Out times. When a person punched several times in the day, all intervals are listed (08:00–12:30, 13:30–17:10), with "break 1:00". Late minutes and overtime are shown underneath. |
| Next step | What can be done now: Review, Record attendance, Add check-out, the row ⋯ menu (Edit, Delete), Wait for the shift, or Review after check-out. |
Day states
| Day state | What it means | Counts as absent? |
|---|---|---|
| Not scheduled | Not a workday for this person: weekend, not on their schedule, or not on the job. | No |
| Public holiday | An active holiday applies and the person has no holiday duty. | No |
| On leave | Approved leave (a full day, or part-day leave with no punches). If leave covers a holiday, the day shows as the holiday unless the leave type counts holidays. | No |
| Shift not started | The shift has not started yet. | No |
| Shift in progress, no check-in | The shift is under way and nobody has checked in. Nothing is flagged yet. | No |
| Checked in, shift in progress | Checked in, shift still running. | No |
| Shift ended, no check-in | The workday is over and there is no punch. It needs review. A missing punch is not proof of absence. | Not until approved |
| No check-out | Checked in, workday over, no check-out. Flag only: no deduction rule exists for it. Add the check-out. | No |
| Completed | Checked in and out, or recorded by HR. | No |
| Absence confirmed | A reviewer approved the absence, or HR recorded Absent. | Yes |
| Excused after review | A missing punch was reviewed and rejected (not counted as absence). | No |
Under Day state the review status explains what happens next: "Review item pending — not an absence until approved", "Not yet reviewed — no review item for this day", "Reviewable once the workday is over", "Approved by a reviewer", "Reviewed and not counted", "Recorded by HR".
A workday is over at the later of the next midnight and the shift end plus the Flag a missing punch after (minutes past shift end) setting (default 30, up to 2880), in your organization's time zone. An overnight shift therefore ends the next morning. Until the workday is over, a late check-out or a correction can still change the record, so SolaHR does not flag or decide anything.
Common actions on a row
- Record attendance (no record yet) opens the form with the employee and date filled in.
- Add check-out (state No check-out) opens Edit attendance record so you can type the missing time.
- Review (pending items) opens the Attendance review page for that employee and day.
- ⋯ → Edit / Delete work on real records only. Delete asks "Are you sure you want to delete this record? (name)".
All records in a date range
Click All records in a date range for the plain list of what was recorded, with no padding rows. The title is All records in a date range; a Daily roster button returns to the roster.
Filters: Employee (includes former employees), Status, From date, To date, Reset. Columns: Employee, Date, Check-in, Check-out, Working hours (with "break h:mm"), Status and Actions (edit pencil, delete bin). A record created by a missing-punch placeholder shows the badge Shift ended, no check-in instead of a status. Empty state: "There are no attendance records".
Attendance record statuses
| Status | Meaning | Deductions / overtime created |
|---|---|---|
| Present | Attended. | Late, early-leave and overtime as calculated |
| Late | Checked in after shift start plus grace. | Late deduction, plus early-leave and overtime |
| Early leave | Checked out before shift end. | Early-leave deduction, plus late |
| Half day | Worked a half day. | As calculated |
| Absent | Did not attend (recorded by HR). | Absence deduction (one day's pay) |
| Official holiday | Public holiday or day off. | None |
| Leave | On leave. | None |
The status you choose is kept. If you type 08:25 but leave Present, the record stays Present but shows the late minutes and can still create a late review item.
Record attendance for one employee
-
Click Record attendance. Title Record new attendance — "Enter the employee attendance data". Back to list is top-right.
-
Fill in:
Field Required Rules / defaults Notes Employee Yes A searchable picker, "Search by name or employee code". Pre-filled when you come from the roster. Date Yes Defaults to today (or the day from the roster). Not before the employee's start date. Check-in time No HH:MM.Hint shows Work start. Check-out time No HH:MM.Hint shows Work end. Status Yes Default Present. Notes No Up to 500 characters. "Any additional notes…" -
The Important notes card repeats the organization's hours, for example "Late minutes are calculated automatically if check-in is after 08:00 + 15 grace minutes". The minutes themselves are measured against the employee's own schedule for the day (see below).
-
Click Save. You see "Created successfully" and land on the roster for that date. Cancel leaves without saving.
How minutes are calculated:
| Minutes | Rule |
|---|---|
| Late | Counted once, from the first check-in, when it is later than the shift start plus the schedule's grace. The whole time from the shift start is counted, not only the part after grace. 08:20 with 15 minutes' grace is 20 late minutes. |
| Early leave | Counted once, from the last check-out, when it is before the shift end. |
| Overtime | Time after the shift end. Time spent on breaks is never overtime: staying late to make up a break does not count. |
| Overnight shifts | A check-out earlier than the check-in is read as the next morning. An open overnight shift is checked out the next morning rather than refused. |
| Holidays | On a holiday without duty nobody is expected, so there is no late, early leave or absence; every worked minute is holiday work (it needs a real check-in and check-out). |
One record per employee per day. If one exists, saving is refused with "Action could not be completed"; edit the existing record instead. A missing-punch placeholder is replaced by what you record, and its pending review item is removed.
Edit or delete a record
Edit
- Click Edit on the row (the ⋯ menu on the roster, the pencil in the records view). Edit attendance record shows the employee and date (fixed).
- Change Check-in time, Check-out time, Status (required) or Notes.
- Click Save changes. Minutes are recalculated and you see "Updated successfully".
Editing replaces review items that are still Pending with freshly calculated ones. A decision that was already approved stands if the recalculated figure is the same; if the correction no longer supports it, the approval is withdrawn: it is removed from a draft payroll, or reversed in the next open payroll when its month is already finalized. The note records who corrected the attendance and when.
Delete asks for confirmation and shows "Deleted successfully".
Bulk entry (one day, all employees)
Use it after a paper register or to set a whole team's times at once.
- Click Bulk entry. Title Bulk attendance entry — "Record attendance for all employees for one day".
- Pick the day in Choose date (defaults to today). Every active employee is listed. Saved records show their status and times. On a day that is a holiday for an employee (and they have no holiday duty), the row starts as Official holiday instead of Present, with the holiday name next to the name. A notice above the table says "Employees on holiday are not expected at work. Record attendance only for those who worked; their time is holiday work, never lateness or absence."
- Set all buttons fill every row: Present, Absent, Official holiday, Default check-in and Default check-out.
- Adjust rows: Status, Check-in time, Check-out time.
- Check Total employees: n and click Save all. Cancel leaves.
You see "Added 12, updated 3, unchanged 25". Rows whose status and times did not change are skipped. After saving you return to the daily attendance roster for the day you entered, so you can check the result straight away. Row errors appear under the row; nothing is saved until all rows are valid. A row for an employee whose start date is later than the chosen day is refused with the start-date message.
Monthly attendance: sheet and summary
Click Reports on the attendance screen. The page has two tabs.
Monthly attendance sheet
Title Monthly attendance sheet — "Each employee employed in the month, one cell per day. Select a cell to open that day." Filters: Month, Year (the current year and five before), Search, Department. Each row is an employee employed in the month; each column is a calendar day (holiday columns are shaded, future days are dimmed). Click a cell to open that person's day on the roster.
| Symbol | Day state |
|---|---|
| ✓ | Completed |
| • | Checked in, shift in progress |
| ½ | No check-out |
| ? | Shift ended, no check-in (needs review) |
| A | Absence confirmed |
| E | Excused after review |
| L | On leave |
| H | Public holiday |
| – | Not scheduled |
| … | Shift not started, or in progress with no check-in |
Right-hand totals: Worked (days worked), Review (needs review), Absent, Leave, Hol. work (days worked on a holiday) and Late (late time in h:mm).
Summary by status
The second tab, Summary by status, is the older monthly table: Employee, Present (Present + Late + Early leave + Half day records), Absent, Missing punch, Late, Half day, Leave (Leave + Official holiday), Late minutes and Overtime hours, with a Color guide. Days with no record are not counted.
How SolaHR turns punches into review items
Every time a record is saved (by HR, bulk entry, a phone punch or the automatic review), SolaHR applies the rules and creates review items: a deduction or an overtime entry waiting for a decision on the Attendance review page.
| Item | When | Amount |
|---|---|---|
| Late arrival | Late minutes above zero and Deduct pay for lateness ticked. | Late hours × the employee's hourly pay × the Hourly pay multiplier (default 1), or late hours × a fixed Fixed deduction per late hour if that mode is chosen. Hours are rounded up to whole hours when Round late time up to the full hour is on. See Payroll Settings and Settings. |
| Early leave | Early minutes above zero and Deduct pay for leaving early ticked. | Early hours rounded up × hourly pay. |
| Absence | A missing punch that a reviewer approves, or Absent recorded by HR, with Deduct pay for absences ticked. | One day's pay: monthly salary ÷ working days per month (from Payroll Defaults). |
| Overtime (weekday) | Overtime minutes on a workday and Detect overtime from check-out ticked. | Hours × hourly pay × the Overtime rate (normal days) from Payroll Defaults. |
| Overtime (holiday) | Overtime minutes on a rest day or holiday. | Hours × hourly pay × the Overtime rate (holidays). |
Hourly pay is monthly salary ÷ working days per month ÷ working hours per day, both from Settings → Payroll Defaults. Overtime and its multipliers always come from Payroll Defaults, never from the Attendance tab.
A day that is a holiday for the person (without duty) creates no absence, lateness or early-leave item. Work on it becomes one holiday-overtime item; when overtime detection is off it still becomes a review item that is never approved automatically, tagged "No compensation rule yet (overtime detection is off) — decide how to compensate these hours."
If Attendance actions need approval (setting require approval) is switched off, calculated items are accepted automatically, but only once the workday is over and never a missing punch.
Attendance settings
Open Settings on the roster. Title Attendance settings — "Define working times and grace periods". Users with Settings → View see it read-only; Settings → Manage can change it.
| Card | Field | Required | Rules |
|---|---|---|---|
| Working times | Work start and Work end | Yes | HH:MM |
| Weekend days | Seven checkboxes, Saturday to Friday | No | "Days nobody is expected to work. No absence or lateness is recorded on them. An employee whose work schedule includes one of these days is still expected that day." With none ticked: "No weekend (seven-day work)". Until you save a selection: "Not configured yet: Friday and Saturday are used". |
| Grace period | Late grace period (minutes) | Yes | 0–60. "Lateness is not recorded if the employee arrives within this period after the shift starts" |
| Missing punches | Flag a missing punch after (minutes past shift end) | Yes | 0–2880, default 30. "Room for attendance entered later by HR. Until then nothing is flagged and the day cannot be decided; a punch recorded later always replaces the flag." |
| Half day | Working hours for a half day | Yes | 1–12 |
Click Save settings: "Saved successfully". Saving the times, grace or weekend days also updates the Main work schedule so the two always agree (see Work schedules). The note on the page says that changes affect new records only.
How employees check in (personal link)
Each employee has one personal link, created and sent from their profile or in bulk from Portal Access. The employee page shows Today's attendance, today's check-in and check-out, and Today's schedule.
- Tap Locate next to Verify your location and allow location. "Location ready" appears with the accuracy (
± 12 m). - Tap Check in ("Start your day") or Check out ("Finish your day").
What SolaHR saves:
- Check in: status Present, or Late with late minutes if after the employee's shift start plus grace. The time is the server time in your organization's time zone.
- Check in again after checking out (lunch, split shift): opens a new interval of the same day. The day stays one record: first check-in, last check-out, with the gap saved as break minutes.
- Check out: before the shift end gives early-leave minutes (Present becomes Early leave); after it gives overtime minutes. An overnight shift started yesterday is closed by the check-out next morning.
- The matched location and distance are stored with each time.
| Message | Meaning |
|---|---|
| Check-in recorded successfully. / Check-out recorded successfully. | Saved. |
| You are outside the allowed attendance locations. | Not inside an active location this employee is allowed at. |
| Check-in has already been recorded today. / Check-out has already been recorded today. | A check-in is open, or the day is complete and the check-out is done. HR corrects with Edit. |
| You cannot check out before checking in. | No open check-in. |
| Your employment starts on date. Attendance can be recorded from that day. | Before the start date. |
| This link is connected to another device. Ask HR to reset the device. | The first successful attendance binds the link to that browser. |
| This phone is connected to another employee. Each employee must use their own phone. | One phone, one employee. |
| Please allow location access first. | No position sent. |
| Attendance cannot currently be recorded for this employee. | Employee not active. |
Every accepted and rejected attempt is logged with time, device and coordinates.
Permissions
| Role | View roster, sheet, locations | Record / bulk / edit / delete | Review items | Attendance settings |
|---|---|---|---|---|
| Owner (Full access) | Yes | Yes | Approve / reject | View and change |
| SolaHR Administrator | Yes | Yes | Approve / reject | View and change |
| HR Operations Manager (older role) | Yes | Yes | Approve / reject | View only |
| HR Records Viewer (older role) | Yes | No | No | View only |
| HR Manager, Department Manager, Attendance Recorder (scoped) | Their own workspace, assigned employees only | Record today only (Present, Absent, Late, Early leave, Half day); no edits — "For corrections, contact your administrator." | No | No |
| HR Viewer (scoped) | Assigned employees, read-only | No | No | No |
| Employee | Own check-in page and My Portal | Own check-in/out | No | No |
Scope is set on Team access. Pending review items also appear (read-only) on the Approvals inbox and as a count on the Dashboard.
Worked example 1: a normal day
Al Noor Trading LLC (Dubai) works 08:00–17:00 with 15 minutes' grace and the default lateness rule (hourly pay × 1, rounded up to whole hours). Omar Haddad earns AED 12,000 a month; with 30 working days and 8 hours, his hourly pay is 12,000 ÷ 30 ÷ 8 = AED 50. The weekday overtime rate in Payroll Defaults is 1.25.
- Monday, Omar checks in at 08:12 at Dubai Main Office: Present, no late minutes. The roster shows Completed after his check-out.
- Tuesday he checks in at 08:20: Late, "20 min late". A Late arrival item appears: 0:20, AED 50.00 (20 minutes rounded up to 1 hour × AED 50 × 1).
- He checks out at 18:15. Check-in / out shows
08:20 18:15, "+1:15". An Overtime (weekday) item: 1:15, AED 78.13 (1.25 h × 50 × 1.25). - The next morning, after the workday is over, HR opens Attendance review. Omar's manager explained a traffic accident on the E11, so HR clicks Approve on the late item, sets Approved amount to 0 with the note "Excused – accident on E11", and approves the overtime as calculated. Only the overtime reaches payroll.
Worked example 2: National Day, a missed check-out and a missing punch
- On 2 December (UAE National Day) HR has already added the holiday for the whole organization on Holidays. The roster for 2 December shows "UAE National Day is a holiday" and every employee as Public holiday; nobody is flagged. Two warehouse supervisors were asked to work, so HR gave them Holiday duty: their rows show Holiday duty and their usual shift.
- On 3 December Sara Khan forgets to check out. After the workday is over her row reads No check-out. HR clicks Add check-out, enters 17:05 and Save changes: working hours
9:02, overtime 5 minutes. - On 7 December two drivers were on site visits with no signal. At 18:00 their rows read Shift ended, no check-in. The review page shows two Missing punch items for AED 300 each (salary AED 9,000 ÷ 30), pending. HR records both drivers with Record attendance, 07:30–16:30, Present: the placeholders are replaced and the pending items disappear. No deduction was ever made.
- On 31 December HR opens Reports, sheet for December 2026. Omar's row shows
✓for 21 days,Lfor 2,Hfor 2, Worked 21, Review 0, Late 0:35.
How it connects
| Area | Connection |
|---|---|
| Attendance review | Where late, early-leave, overtime and missing-punch items are approved. Approved items reach payroll once. |
| Attendance locations | Decide where, and for whom, phone check-ins are accepted. |
| Work schedules | Each employee's own schedule decides their shift, working days and grace; the Main work schedule applies otherwise. |
| Holidays | One holiday resolver feeds the roster, the review, the dashboard, leave and payroll. |
| Leave | Approved leave shows as On leave on the roster; it does not create attendance records. |
| Timesheets | A new timesheet is pre-filled from attendance. |
| Payroll | Approved deductions and overtime are added to the payroll of the attendance month, or to the next open payroll as a labelled adjustment. |
| Settings | Deduction and overtime switches and rates. |
| End of Service | A leaving date places a former employee on the right days. |
Tips and common problems
| Problem | Cause | Fix |
|---|---|---|
| Every phone check-in is rejected. | No active location, the person is not allowed at it, or the marker is wrong. | Check Attendance locations and the person's Allowed attendance locations card. |
| Someone shows Shift ended, no check-in but was at work. | They did not punch. | Click Record attendance; the placeholder is replaced and no deduction is made. |
| The same day has two check-in/out pairs. | The person punched again after lunch. | Expected: the day shows each interval and the break. |
| A weekend day shows everyone Not scheduled. | Weekend days are not working days. | Expected. Change Weekend days or give a person a schedule that includes the day. |
| "Attendance cannot be recorded before the employee start date" | The date is before the employee's Start date. | Fix the start date on the profile if it is wrong. |
| Changing work times did not fix old days. | Days that are over keep the schedule recorded for them. | Edit the records, or accept that history is not rewritten. |
| Late but no item. | Late deduction is switched off, the day is Leave or Official holiday, or it is a holiday for that person. | Check Settings. |
| "Action could not be completed" on Save. | A record already exists for that employee and day. | Edit it from the roster. |
| After Save all in bulk entry I land on today's roster. | The bulk page returns to the attendance screen. | Use the Workday box to go to the date you saved. |
If the connection drops while saving, you see Status not confirmed — "We could not confirm whether the change completed. Check the current status before submitting again." Click Check current status and look at the roster before you save again.