Operations

Time Clock & Payroll

Coralia's Time Clock & Payroll module tracks shifts for an ABA (Applied Behavior Analysis) agency's office and administrative staff: location-stamped clock in and out, tracked breaks, end-of-shift work summaries, audited admin corrections, and pay-period payroll exports — all bucketed in the agency's timezone.

The problem in real agencies

An ABA agency runs on two kinds of time. Direct-care time — a Registered Behavior Technician (RBT) running a client's Tuesday session, a Board Certified Behavior Analyst (BCBA) supervising — is billable, lives in session documentation, and is tied to an authorization and a CPT (Current Procedural Terminology) code. Office time is different: the scheduler, the biller chasing denials, the intake coordinator verifying benefits, and the credentialing admin are hourly employees whose paychecks depend on accurate punches, not billed units.

That office time usually lives in the weakest tool the agency owns: a spreadsheet, a paper sheet, or a punch app disconnected from everything else. Nobody can prove who was on site. Forgotten punches get fixed by silent edits with no reason attached. Overtime surfaces for the first time when payroll is already being run. When a wage dispute or an audit arrives, the agency holds punches without context and corrections without a trail.

Generic time clocks also miscount the calendar. They bucket days in the server's or the phone's timezone, so a late clock-out lands on the wrong day and weekly totals drift from the paycheck. And they rarely model pay periods the way an ABA back office actually runs them — semi-monthly cut days, biweekly anchor dates — leaving admins to re-slice exports by hand every cycle.

How it works in Coralia

  1. 1

    Clock in with a silent location proof

    A staff member opens the Time Clock page — or the Clock tab in the mobile bottom navigation — and hits Clock In. The browser spends up to 15 seconds converging on the most accurate GPS (Global Positioning System) fix, then attaches it silently: coordinates are encrypted at rest and graded high, low, or unavailable confidence. A fix older than 2 minutes or coarser than 150 meters grades low instead of being rejected — a weak signal never blocks a punch. A live timer then shows clocked-in and on-break states, and each break is tracked individually.

  2. 2

    Clock out through a work summary

    The clock-out dialog previews total, working, and break time, then asks what got done: one line per activity, at least one of them 5 or more characters, with optional time suffixes like ~2h. Staff who can't write it right then skip with one of 4 explicit reasons (emergency, short shift, technical issue, other); any summary still owed shows in an amber banner on My Clock that counts them and steps through completing each one later. Any still-open break auto-closes at clock-out, and total hours are computed as clock-out minus clock-in minus break time.

  3. 3

    Pay periods that match your payroll calendar

    An admin configures the agency pay-period calendar once: weekly, biweekly, semi-monthly with configurable cut days, or monthly — weekly and biweekly cycles are generated from a chosen anchor date, the same anchor-date model payroll providers use. Every day, week, and period bucket is computed in the agency's timezone, not the server's or the viewing device's, so a 9 pm clock-out lands on the right day. Overtime is measured against per-frequency targets: 40 hours weekly, 80 biweekly, 86.67 semi-monthly, 173.33 monthly. Until a calendar is saved, a setup banner prompts settings-capable admins to configure it.

  4. 4

    Run payroll from the Team panel

    Users with team permissions open the Team tab and page through pay periods. Summary cards show who is clocked in right now, total staff, total hours, total overtime, and staff with no entries in the period. Each staff row aggregates days worked, total hours, overtime against the period target, break minutes, entry count, and pending-summary and admin-edit flags; rows expand to individual entries and support sorting, search, and role filters. From there, admins download an 11-column payroll CSV (comma-separated values) file or print a formatted per-staff report listing every entry with breaks, note previews, and edited flags.

  5. 5

    Correct entries without losing the trail

    Admins can clock a staff member in or out on their behalf (on-behalf clock-out requires a written reason), edit any entry's clock in and out, breaks, and summary, or create a retroactive entry. Edits and retroactive entries demand a reason of 1 to 500 characters and are validated before they land: no future timestamps beyond a 1-minute tolerance, no clock-out before clock-in, no overlap with another shift, no breaks outside the shift window. Each change is written to the audit log, stamps who edited and when, and flags the entry as admin-edited in history, exports, and the print report.

  6. 6

    Feed the rest of the platform

    Every punch sends the agency owner a notification — clock in, clock out with hours and break count, and an alert when a single shift passes 10 hours. The office display kiosk shows the live who-is-clocked-in list and pending-summary counts. The Coralia Brain, the per-agency AI copilot, answers questions like a staff member's clock status or weekly hours and, for admins, who is clocked in right now; its clock-in and clock-out tools deliberately refuse and point back to the Time Clock page, because a punch requires a fresh location reading from the staff member's own browser.

The specifics

  • Four pay frequencies — weekly (52 periods/year), biweekly (26), semi-monthly (24, configurable cut days), monthly (12); weekly and biweekly cycles are generated from a configurable anchor date.

  • Overtime targets per period: 40 hours weekly, 80 biweekly, 86.67 semi-monthly, 173.33 monthly; a single shift over 10 hours triggers an owner notification.

  • Location proof: up to 15 seconds of GPS convergence; fixes older than 2 minutes or coarser than 150 meters grade low confidence — never a blocked punch.

  • Three location-confidence grades (high, low, unavailable) and 9 recorded acquisition outcomes, so a missing location carries an explanation of why.

  • Payroll CSV: 11 columns per staff row — days worked, regular, overtime, and total hours, break minutes, entries, pending summaries, admin edits.

  • Admin corrections require a written reason of 1 to 500 characters; the module writes 7 distinct audit-log action types.

  • Work summaries: at least one activity of 5+ characters, or a skip with one of 4 reasons — emergency, short shift, technical issue, other.

  • Personal Time History: 6 date-range filters, 4 summary-status filters, day grouping in the agency timezone, and a 6-column CSV export of the user's own entries.

  • Four permission codes gate the module; the clinical role bundle excludes every timeclock permission by design.

  • Six AI-assistant timeclock tools: 4 read tools, plus clock-in and clock-out tools that deliberately redirect to the UI for a fresh browser location reading.

Integrations

Owner notifications — clock in, clock out, and single-shift overtime alerts on every punch · Office display kiosk — live who-is-clocked-in workforce list and pending-summary attention items · The Coralia Brain — 6 timeclock tools plus page-context awareness of clock state and weekly hours · Agency audit log — 7 timeclock action types recording punches, summaries, and every admin correction

Access control

Four permission codes separate self-service clocking, team-wide views, and admin corrections; saving the payroll calendar requires the admin timeclock permission specifically, deliberately separate from general settings access. Clinical roles are excluded from every timeclock permission by design — direct-care staff record their time through sessions, so the time clock stays an office and administrative tool.

Frequently asked questions

Does a weak GPS signal block clocking in?

No. A punch always goes through. The browser waits up to 15 seconds for the most accurate fix; if the reading is missing, denied, stale (older than 2 minutes), or coarse (worse than 150 meters), the entry records low or unavailable confidence plus the acquisition outcome instead of rejecting the punch. Coordinates are encrypted at rest, and the confidence grade tells admins exactly why a location is imprecise.

Why don't RBTs and BCBAs appear in the time clock?

By design. Direct-care time in ABA is session time — tied to a client, an authorization, and a CPT code — and is documented through session notes, not punches. The time clock covers hourly office and administrative staff: schedulers, billers, intake and credentialing coordinators. Clinical role bundles exclude every timeclock permission, so billable clinical hours and hourly payroll hours never blur into one number.

Can an admin fix a forgotten punch?

Yes. Admins can edit any entry, create a retroactive one, or clock someone in or out on their behalf. Edits and retroactive entries require a written reason (1 to 500 characters) and are validated against future timestamps, inverted spans, overlapping shifts, and out-of-window breaks; every correction is written to the audit log. The entry is then visibly flagged as admin-edited in the staff member's history, the payroll CSV, and the print report.

Which pay schedules does it support?

Weekly (52 periods a year), biweekly (26), semi-monthly (24, with configurable cut days), and monthly (12); weekly and biweekly cycles are generated from an anchor date the agency chooses. Overtime is computed against per-frequency targets of 40, 80, 86.67, and 173.33 hours, and every period boundary is computed in the agency's timezone, so totals match the paycheck.

What does the payroll export include?

A pay-period CSV with a header block and 11 columns per staff row — days worked, regular, overtime, and total hours, break minutes, entry count, pending summaries, and admin edits — plus a print-formatted per-staff report listing every entry with breaks, note previews, and edited flags. Staff can also export their own entries to a 6-column CSV. You can try the whole flow in the live demo at coralia.app/demo — a synthetic agency, no sign-up.