FEATURE · Employee Attendance

Mark every staff member. By 9:15, the day is locked.

A purpose-built daily-attendance screen for Indian school staff — nine statuses (Present, Absent, Leave, Half Day, Short Leave, Week Off, Holiday, On Duty, WFH), punch in/out, late-by-minutes and an adjustment audit trail. Biometric, mobile or manual — every entry feeds payroll cleanly.

BG PICCOZONE

How most Indian schools mark staff attendance today

It is 8:50 a.m. The head clerk in the school office unlocks a green hardbound staff register, opens it to today's date and starts the daily ritual. The PRT teachers walk in first — Sangeeta ma'am, present, 8:45. The PGT teachers next. The TGT after that. The PE teacher signs in at 9:05 with a tick. The bus drivers, the office assistants, the lab technician, the librarian and the night-watchman all sign separately, in three different registers kept on three different desks. By 9:30 a.m. the principal has already asked twice — who has not come? — and the head clerk does not yet have an answer.

A week later the same head clerk pulls those registers out for the Employee Payroll run. Half the rows have unclear timings, the late marks are inconsistent, three teachers have signed for each other on a function day, and one full page is illegible because of a tea spill on Tuesday. The accountant prepares salary anyway because the 1st-of-month deadline does not move. By March the same data has to be reconciled into the EPFO ECR and ESI returns — the timing nobody recorded reliably is the timing the office now has to invent.

The job is small. The system is heavy. Daily Employee Attendance is the screen we built to replace the green register with a single Inkwelly screen — biometric punches when the school has a device, manual when it doesn't, and the Employee Payroll run that reads the same numbers without re-keying.

Inkwelly daily employee attendance screen showing 47 school staff members with status pills, punch in and punch out times, source badges and a filter bar by date and department
Today's staff at a glance — every row shows status, in-time, out-time, source and adjustment flags.

How Daily Employee Attendance works

A staff member walks past the biometric device at the gate at 8:42 a.m. The fingerprint or face match resolves their employeeId, the punch is timestamped to the second and a row appears on the school's daily-attendance screen with source: BIOMETRIC and firstPunchIn: 08:42:14. By 8:55 the head clerk's screen shows 38 of 47 staff have punched, with three more on the late list. There is no register to open and no ink to dry.

For schools without a biometric device, the head clerk opens Mark Attendance on her browser at 9:15, picks any pending staff member from a search box, sets status PRESENT, types 08:50 for first punch in, and saves. The same screen accepts LEAVE (and auto-links to the leave application on file), HALF_DAY with FIRST_HALF or SECOND_HALF, SHORT_LEAVE for the 30-minute medical break, WEEK_OFF for the second-Saturday rotation and WFH for the math teacher who is correcting answer sheets from home. Every save records who marked it (recordedById), from which surface (source: MANUAL from web, MOBILE from the Inkwelly app), and the exact timestamp.

If a teacher arrives at 9:18 — three minutes after the school cutoff — the screen flips on the isLateMarked flag and computes lateByMinutes: 3 automatically. If she leaves at lunchtime for a doctor's visit and returns at 2:00, the office assistant adjusts the row, types 'doctor's appointment' in adjustmentReason and the screen sets isAdjusted: true with a permanent audit entry showing the original punch versus the new one. None of that is invisible — the Employee Payroll accountant sees both states when she runs the monthly cycle.

From that one save, the biometric device's data, the office's manual entries, the principal's mobile entries and the WFH approvals all merge into one row per employee per day. That row feeds employee profiles, the Employee Payroll hours, the EPFO ECR, the ESI challan, gratuity calculation and the school's own attendance-bonus rules.

What gets captured on every save

  • Status — one of PRESENT, ABSENT, LEAVE, HALF_DAY, SHORT_LEAVE, WEEK_OFF, HOLIDAY, ON_DUTY or WFH (matches Inkwelly's AttendanceStatus enum end-to-end)
  • Source — BIOMETRIC, MOBILE, WEB or MANUAL — set automatically by the device or surface that recorded the entry, never overridden
  • First punch in and last punch out — full ISO timestamps, not just hours, so the audit trail is precise to the second
  • Total working minutes and effective work hours — computed from punches, used directly by the payroll run
  • Late marked flag with late-by-minutes — derived from the school's department time settings, not a free-text guess
  • Half-day flag with FIRST_HALF or SECOND_HALF — used for half-day deductions on the salary slip and for the leave-balance accounting
  • Short-leave flag — the 30-minute or 60-minute exception most Indian schools allow informally is now a first-class field
  • Adjustment flag with adjustmentReason — required free-text whenever the office edits a punch, visible on every payroll-run report
  • Recorded-by user ID, recorded-at timestamp, updated-by user ID, updated-at timestamp — full audit-log on every row
  • Linked leave application — when status is LEAVE the row carries the leaveApplicationId of the approved request, no double-entry
  • Department — the row picks up the staff member's current attendance department for filtering and rollups
  • Date — defaults to today, can be backdated within the academic session, with audit

See the full marking flow

BG PICCOZONE
Daily attendance dashboard — total records, present, absent, on-leave and late-arrival counts at a glance
BG PICCOZONE
Mark Attendance dialog — pick a staff member, set status, enter punch times, source and remarks
BG PICCOZONE
Bulk Mark page — every staff member listed once for the day with one-tap status pills and an Apply-to-all bar
BG PICCOZONE
Edit dialog — change a punch with a mandatory adjustment reason and a permanent audit trail

The 9-status model Indian schools actually use

Most school-ERP screens give you Present and Absent. Real Indian school staff days have nine. WFH is for the math teacher correcting Class 10 answer sheets from home during the board season. ON_DUTY is for the PE teacher escorting Class 6 to the inter-school sports tournament in Lucknow. SHORT_LEAVE is for the head clerk who left for the post office at 11:30 and returned at 12:15. HALF_DAY with FIRST_HALF or SECOND_HALF is for the librarian who only attends till lunch on PT meeting days. WEEK_OFF is for the second-Saturday and the rotational shift the bus drivers run on.

The statuses match the AttendanceStatus enum the rest of Inkwelly uses, so the same row that the office marks today is the row Employee Payroll reads on the 1st of next month, the row the EPFO ECR reads at quarter-end and the row the gratuity calculation under the Payment of Gratuity Act 1972 reads on the day the teacher retires.

Status filter dropdown showing all 9 employee attendance statuses — PRESENT, ABSENT, LEAVE, HALF_DAY, SHORT_LEAVE, WEEK_OFF, HOLIDAY, ON_DUTY, WFH
Bulk Mark Attendance page showing every staff member of the school in one list with one-tap Present, Absent and a More dropdown for the other 7 statuses, plus an Apply-to-all bar at the top

Bulk mark for the whole school in one screen

Most mornings most staff are present. The head clerk opens Bulk Mark Attendance, picks today's date, and sees every staff member of the school in a single roll-number-style list with their employee ID, attendance department and a row of status pills. She taps Apply to all → Present and every row turns green in one frame. She then changes only the absent rows — usually two or three — and clicks Save All.

When the bus drivers have a Tuesday week-off, she taps the More dropdown on those rows and picks WEEK_OFF. When the principal is travelling for a CBSE workshop in Delhi, she picks ON_DUTY for that row. The whole-school day is locked in three to four minutes — and the BulkMarkAttendance API call records the per-row result so any save that did fail (network blip, validation mismatch) is shown inline with the exact error from the backend, not silenced.

Punch in, punch out, working hours — payroll-ready

Every row carries firstPunchIn, lastPunchOut, totalWorkingMinutes and effectiveWorkHours. For schools running a biometric device at the gate, those four fields fill themselves — the device streams punches and the daily row is computed automatically end-of-day. For schools using the Inkwelly mobile app, the staff member's selfie-punch from the gate or staff room produces the same shape.

The accountant who runs the monthly Employee Payroll reads only effectiveWorkHours per day. She does not have to copy hours from a register, multiply by daily rate, or sit with a calculator. The half-day deduction, the SHORT_LEAVE adjustment, the late-by-minutes penalty (if the school has one configured) and the WFH days that count as full pay all flow out of these four fields without re-keying. When TDS is calculated under Section 192 and Form 24Q is filed at quarter-end, the underlying hours are auditable to the second.

Single attendance row showing Sangeeta Verma with punch in 08:42, punch out 16:35, total working 7.9 hours and a green Present pill, plus a small Late tag with 12 minutes
Edit Attendance dialog with a mandatory Adjustment Reason text area highlighted, plus a small Adjusted badge appearing on the affected row in the table behind the dialog

Adjustments are first-class — and audit-logged forever

Real school days do not match the biometric device perfectly. The principal forgets to punch in on the morning of the assembly. The math teacher's fingerprint does not register because of fresh chalk dust. The PE teacher comes back late from the inter-school match and the gate is already closed. Schools used to fix these by overwriting the register at month-end — and lose every audit trail in the process.

Inkwelly's Edit dialog blocks save until an adjustmentReason is filled. Once saved, the row carries isAdjusted: true, the original values are preserved in the publication history, and a small Adjusted badge appears on the daily list. Every payroll-run report flags adjusted rows separately. Three months later, when the EPFO inspector asks why the principal's punch on 12 March was edited, the office answers in one click — 'mass assembly, no punch device available, adjusted by head clerk Mrs. Sharma at 11:42 a.m. with reason: HOD assembly absence' — and the inspector moves on.

Pehle har shaam pencil se register sign hota tha. Ab device ke saamne se nikla, mobile par ek baar dekha, salary slip 1st ko ekdam clean banti hai. Audit aata hai to bina dar ke files khol dete hain.

Five real-world staff days, one screen

1. The 8:42 biometric morning (everyday). Staff walk past the device at the gate. By 8:55 the head clerk's daily-attendance screen shows 38 of 47 punched, with the 3 late staff highlighted with their late-by-minutes. No register is opened. The principal sees the same view from her office on her phone.

2. The post-lunch correction (same day). The math teacher punched in at 8:30 but was actually in the staff room from 8:00 — the device skipped her first attempt. The head clerk opens her row, types 'device skipped morning punch, in by 8:00 verified by HOD' in the adjustment reason and saves. The original punch and the new punch both stay in the audit log — payroll reads the corrected one but the inspector can see both.

3. The CBSE workshop day (Wednesday). The principal is in Delhi for a CBSE leadership workshop. The head clerk opens Bulk Mark, taps the principal's row, picks ON_DUTY from the More dropdown and saves. The salary slip on 1st of next month shows ON_DUTY days as full-pay days, the EPFO ECR counts them as working days, and there is no leave deduction.

4. The substitute teacher (Friday). The regular Hindi teacher is on a planned leave application. The substitute walks in, punches at the gate. The system recognises her employeeId, marks her PRESENT for today and pulls her department for the rollup — the regular teacher's row stays LEAVE with the leave-application link.

5. The October chronic-late review. The head clerk pulls a one-month report from this same data. Two teachers cross 10 late marks for the month. The principal calls them in, refers to the exact lateByMinutes from each day, and the conversation is grounded in numbers — not opinion. By December the late count drops by half.

Common scenarios this screen covers

  • Biometric-only schools — fingerprint or face device at the gate, every entry comes in as source: BIOMETRIC, the screen is the read-only audit surface
  • Hybrid schools — biometric for teaching staff, manual for the night-watchman and gardeners, the same screen handles both with the source badge showing how each row arrived
  • Mobile-only schools — every staff member punches via the Inkwelly app from the gate, with optional photo capture, marked source: MOBILE automatically
  • WFH days during board-marking — Class 10 and Class 12 internal-marking teachers stay home, marked WFH with the official school approval audit-logged
  • Multi-shift drivers — bus drivers with morning and evening shifts get separate punch-in / punch-out pairs counted into total working minutes
  • Annual function or sports day — Bulk Mark with Apply-to-all → ON_DUTY, then change only the absent rows; the day is locked in three minutes
  • Backdated correction within the academic session — the head clerk fixes a missed punch from three days ago, the audit shows both timestamps
  • Substitute teacher engagements — the substitute punches in, audit log clearly shows recordedBy = substitute teacher, the regular teacher's leave row stays untouched
  • Department-level rollups — filter by attendance department to see only the science block or only the bus drivers, useful for HOD daily check-ins
  • Linked leave applications — picking LEAVE auto-links to the approved leave on file, so no leave is double-counted

See Daily Employee Attendance on your school's data

20-minute walkthrough on the Inkwelly demo school. Bring your existing biometric device — we will show how punches stream into this screen and into the Employee Payroll run without re-keying.

Read about Biometric Attendance

Limits, safety and the small print

One row per employee per day. The screen enforces a single canonical row per employeeId × date. Multiple punches roll up into firstPunchIn, lastPunchOut, totalPunches and totalWorkingMinutes on that one row. Schools that run morning and evening shifts (boarding hostels, residential Sainik schools) can enable a second slot at the school level — the same row carries both pairs of timestamps without splitting into two records.

Default status is PRESENT, but never silently. When a staff member has no biometric punch and no manual entry by 9:30, the row stays explicitly not marked — it does not silently default to PRESENT. The head clerk gets the empty rows on the daily-attendance screen with a yellow flag, and decides whether to mark ABSENT, LEAVE or chase the staff member. Schools that prefer the inverse default can flip a school-level setting.

Bulk Mark is single-day. Bulk-mark across multiple dates is intentionally not exposed here — backfilling a full month of past data is done from the per-employee history, not from this screen. The pattern prevents accidental mass overwrites of a day's correct biometric data, which is the most expensive class of mistake on a payroll run.

Holidays and week-offs are read-only. If the date is on the school calendar as a holiday or the staff member's department-week-off pattern places the day as WEEK_OFF, the row is auto-set and the Save button is disabled. The head clerk cannot mark a staff member ABSENT on a Republic Day by accident, and the EPFO ECR therefore never counts it as a working day.

Adjustments are not deletes. Every adjustment preserves the original values in the audit history. The Delete button on the Edit dialog is intentionally placeholder for now — schools wanting to remove a row use Archive (which keeps the audit trail) instead. We block hard-delete by design; staff attendance is statutory data under the EPFO and ESI rule-books and cannot be silently erased.

Replace the green register with one screen the principal trusts

Inkwelly's daily mark screen is one of seven [Employee Attendance](/modules/employees-attendance) features Indian schools rely on every morning. Book a demo and see it on your own staff data.

Belongs to

1 module

Frequently asked

10 questions
Does this work without a biometric device?

Yes. Schools without a biometric device run this screen as a manual surface — the head clerk picks the staff member, sets status, types the punch-in time and saves. Source is recorded as MANUAL automatically. When the school later adds a biometric device or rolls out the Inkwelly mobile app, the same screen continues to work — new entries arrive with source BIOMETRIC or MOBILE and the workflow does not change.

How does this connect to the monthly payroll run?

The Employee Payroll run reads `effectiveWorkHours`, the half-day flag, the SHORT_LEAVE flag, the late-by-minutes and the WFH/ON_DUTY status from this screen — the same row, no re-keying. Salary slips, EPFO ECR uploads, ESI Form 6 and Form 16 / Form 24Q quarterly returns all roll backwards from these fields. Adjusted rows are flagged separately in every payroll report.

Can the principal mark attendance from her phone?

Yes. The Inkwelly mobile app exposes the same Mark Attendance dialog with the same nine statuses, the same punch-in / punch-out fields and the same audit log. Mobile entries arrive with source MOBILE. The principal can also approve WFH days, ON_DUTY engagements and adjustment reasons from her phone — typically used during inter-school events when she is travelling.

What happens if the biometric device goes offline for a day?

Staff members keep arriving and the absence of punches is detectable. The head clerk falls back to manual marking on the screen — same nine statuses, same fields. When the device comes back online, queued punches sync into the existing rows without overwriting the manual entries. The audit log shows both surfaces — *'manually marked at 09:15, biometric punch arrived 11:30 from device queue'* — so there is a clear record of how the day was reconstructed.

Can attendance be backdated for a missed day?

Yes — within the same academic session. The head clerk picks any past school day and marks for that date. Backdated entries are timestamped with both the original date and the actual save time so the principal can see the correction trail. Marking outside the active academic session is blocked, and any backdated entry that affects a payroll cycle that has already been processed flags an EPFO/ESI re-run task on the payroll dashboard.

What about Saturdays, second Saturdays and the school's annual function days?

Each attendance department defines its own week-off pattern — most CBSE/ICSE schools run Mon–Fri + 1st/3rd/5th Saturday, with the 2nd and 4th Saturdays as WEEK_OFF. Bus drivers and security staff often run a 6-day rotation. The screen reads from the department's week-off pattern automatically — the WEEK_OFF rows are read-only and the head clerk cannot mark a staff member ABSENT on their own week-off day.

Are the staff biometric templates stored in India?

Yes. All Inkwelly data, including biometric templates and punch traces, is hosted on servers in Mumbai and complies with the DPDP Act 2023. Templates are encrypted at rest and never leave Indian servers. The retention period is 10 years by default — long enough to satisfy the EPFO record-keeping rule and the Income Tax Act audit-trail rule under Section 44AA — and is configurable per school.

Can two head clerks mark and edit the same staff member's attendance?

Yes — both have access if they have the Employee Attendance permission via Inkwelly's Identity & Access Management. Every save records the user ID; every edit requires an adjustment reason and is preserved in the audit log. The most recent save is the one that flows into payroll, but the entire history is visible on the row's audit drawer.

Does the screen handle multi-shift staff like bus drivers and security guards?

Yes. Drivers and night-watchmen are typically configured with their own attendance department and a custom shift pattern. The screen rolls up morning and evening punches into one row per day with `totalWorkingMinutes` summed correctly, and the WEEK_OFF pattern is respected per department — drivers off on Tuesdays do not show up as ABSENT on the daily list.

What if our school is small and the registers worked fine?

Two reasons schools eventually move anyway: payroll math and EPFO inspection. Even with 12 staff members, the half-day deductions, SHORT_LEAVE counting and late-by-minutes need to be tracked correctly for the salary slip — and the registers do not survive an EPFO inspector reading the past-3-months of attendance backwards from the ECR file. Inkwelly's daily mark screen handles 12 staff in 60 seconds and 250 staff in under 5 minutes.

You might also like

2 reads

See Inkwelly on your school

30-minute demo. We open your current ERP with you and load your data into Inkwelly on the call. Dated go-live plan by the end of it.

Daily Employee Attendance — Punch, Late, Half-Day · Inkwelly