The time matrix, confirmations, and devices

As a time manager you own the recorded working time of the whole organisation. Your sidebar card reads TIME MGR, and on top of the regular employee pages you get:
Shift scheduling is not part of this role — it moved to its own Shift manager role, with its own guide.
A punch carries the source it came from, and the drawer names it: FACE · TERMINAL, PHONE + QR, PHONE, BROWSER (the HR.Click browser extension), MANUAL ENTRY, SELF-REPORTED (an employee logging a whole day), MISSED PUNCH (an employee asking for one forgotten or wrong punch) and EXTERNAL SYSTEM (an integration pushing punches in).
Phone and browser check-in are each governed by a company-wide policy an admin sets in System settings → Time tracking — office network only, anywhere, or disabled. The face terminal is never affected by it. The HR.Click web app itself still has no check-in button: from a browser, people punch through the extension, and everything else they can only log for confirmation. You are that confirmation — nothing unconfirmed counts into totals until you approve it.
Time report → Matrix: one row per person, one column per day, each cell = the day total with a micro-bar of the day’s structure. Navigate months or set a custom range; filter by office, department, position or team; Find a person… narrows the matrix to the matching rows; the Pending toggle keeps only rows that need attention.

Click any cell (even an empty or future one) to open the day: every punch with its source and note, any leave that covers the day, and a KPI strip against the target. You can:
Leave on this day lists the leave covering the date, one click from the request itself.
The Unpunched break rule decides what happens on a day where nobody punched a break at all. It is set per office for office-schedule people, and on the shift itself for shift workers — a shift carries its own break and its own rule, so the office setting never reaches a shift day. Deduct the default break charges the office break once the day is worked at least 75% of its norm — this can bring the day below the norm. Deduct from overtime only never does that: it trims the break only from whatever was worked past the norm, so the norm itself is always protected — a day that's short of the norm, or lands right on it, is never touched. Either way the per-day breakdown prints the deducted amount in a lighter tint next to the break, with the hint “Break not punched — counted by default”. Any punched break, however short, opts the day out.
Export CSV / Export XLSX on the toolbar download the whole matrix for payroll; in the XLSX a day’s note rides along as a cell comment. Both carry Employee, Office, the day columns, Total, Norm, Balance, In office and Remote — the CSV as decimal hours, the XLSX as H:MM; Total, In office and Remote cover the whole period, while Norm and Balance cover closed days only. People close their days at different times, so the XLSX additionally gives every row its own Measured to date (blank if nothing closed yet) — read a row’s balance against that date and it always matches the popover on screen — and ends with a Balance % column: the balance as a share of that row’s norm, green when it is over and red when it is under. If you also hold the Admin role, an Import button sits next to them for bulk-loading a ZKTeco/Anviz-style clock export (CSV, TXT or XLSX) — it matches each row’s device user ID to a person and reports how many records were imported, skipped as duplicates, or left unmatched.

Time report → Approvals collects every record still awaiting a decision, grouped per person per day: employees’ self-reported time (a whole day logged by hand), their missed-punch requests (one forgotten or wrong punch), manual back-fill, and conflicted terminal punches — e.g. a punch that arrived late from an offline terminal and no longer fits the day. Each card shows the source chips, the raw punches and the day shape.
A card reading MISSED PUNCH shows One punch instead of a duration — one punch has no duration to approve. Underneath it, the day’s already-confirmed punches are printed in a lighter, dashed style: a lone OUT 18:30 means nothing until you can see the IN 09:02 it closes. A correction also prints the punch it would retire, struck through — approving replaces one with the other in a single step, and until you do, the original keeps counting.
Employees can only file these for roughly the last day (longer where shifts are longer), one punch at a time, within a monthly allowance — the rules are in System settings, and anything older still comes to you.

Devices is the verification queue for employees’ phones: the device asks to be trusted, you decide, and an approved one can then check its owner in as far as the company’s phone check-in policy allows (section 1). Approve only devices you recognise — each row shows the owner, platform and fingerprint. Approved devices lists everything verified, with a revoke action.
Nothing reaches this queue yet: the request comes from the HR.Click mobile app, which is not released. The page is therefore out of the sidebar too — it stays reachable by URL (add /devices to your HR.Click address) so the queue can be worked the day the app arrives.

| Signal | What it means |
|---|---|
| “Conflicting punch needs review” (push / in-app) | A terminal punch didn’t fit the existing day (often after an offline period) and was saved deactivated — resolve it in Approvals or the day drawer. |
| “Missed punch requested” (e-mail / push / in-app) | Someone asked for a forgotten punch to be added, or a wrong one replaced. Their hours do not count until you answer, so this one does page you. |
| Badge on Time report | Pending self-reports / unconfirmed records — the Approvals queue. |
| Pending phones | No badge while Devices is out of the sidebar — open /devices to see what is waiting. |
| “… checked in late” | Goes to the person’s team lead — you’ll see it only for teams you lead. Lateness is visible in the matrix regardless. |
There is deliberately no e-mail per submitted self-report — the badge and queue are your workflow. A missed-punch request is the exception: it is one punch blocking one person’s day, and it is cheap to answer. Whoever filed it is told the outcome either way, with your reason when you rejected it.

| Situation | What to do |
|---|---|
| Red ! in the matrix | Open the day drawer — usually a missing checkout. Add the missing OUT as a manual record and activate it. If it is yesterday’s, the person can file it themselves and you just confirm it. |
| “Conflicting punch needs review” | Approvals (complete pairs) or the day drawer (single punches): activate what’s genuine, reject duplicates. |
| Employee logged time | Approvals → check the interval against the day → Approve or Reject. It counts only after approval. |
| Employee logged one missing punch | Approvals → read their comment against the day’s confirmed punches shown beneath it → Approve or Reject with a reason. |
| Employee asks to fix a wrong day | Recent day: point them at Log time → One punch — they can propose the correction themselves and you confirm it. Older, or several punches at once: day drawer — deactivate the bad punch, add a manual correction, activate. |
| Someone asks for their phone to be approved | Open /devices, confirm with the owner it’s really theirs, then Approve. Unknown device — Reject. |
| Payroll asks for hours | Matrix → set the period → Export XLSX. |
A period’s norm is never just “working days × office hours” — leave already covers part of it. A day fully covered by approved leave asks for no norm at all; a half-day leave asks only for its remainder; a day worked outside any shift adds no norm either. The same trimmed figure backs the Personal report’s per-day table header (TARGET) and its Overtime tile, and the matrix’s per-user popover (section 2) — all three read the same number.
Wherever a period balance is shown — the Personal report’s Overtime tile (“worked of norm working hours”, signed and coloured) or the matrix’s per-user popover — it is a straight over/under call against that trimmed norm, never a flat weekly number. Both also measure closed days only: a day is weighed against its norm once it is finished — either it is in the past, or it is today and the person has already checked out. A day still on the clock is never judged against a norm it has not earned (a lunch break does not close a day), and a period with no closed day yet shows no figures rather than a misleading row of zeroes. A day nobody has punched at all today stays unjudged until tomorrow.
Time report → Personal → Export CSV / XLSX / PDF totals the same closed-days figures. When the export range reaches today, the totals row is labelled “measured to <date>” so it is never mistaken for a plain sum of the rows above it. The per-day overtime column stays in the file; the period total drops it, since summing individual days’ overtime would contradict the balance printed beside it.
HR.Click — Time Manager Guide · v1.2 · September 2026. Product screens shown with sample data; names of persons are fictitious examples.