The five punch sources

Every TimePunch row carries a Source field. The five canonical sources:

  • Mobile — punch from the OnPointShifts staff app. GPS captured if the staff member granted location permission.
  • Web — punch from a personal device browser. Used when the mobile app isn't available.
  • Kiosk — punch from a shared in-store device (tablet or PC). PIN or QR per staff member. Useful for venues where staff don't carry phones.
  • POSImport — punch synced from the POS or a biometric device. Source preserved with the device id for forensics.
  • ManagerEdit — punch created or modified by a manager. Always carries an EditReason for audit.

When viewing time-clock data, the source is always visible on each punch — so you can investigate "this clock-out came from the manager, not the staff member" without leaving the screen.

The four punch types

Within a shift, four punches are possible:

  • ClockIn — start of the shift.
  • BreakStart — paused for a break.
  • BreakEnd — resumed after the break.
  • ClockOut — end of the shift.

Multiple break pairs are supported within one shift. The order is enforced: you can't BreakEnd without an open BreakStart, you can't ClockOut without an open ClockIn.

Mobile clock-in

The staff member's most common path. From the mobile app home screen, the next-shift card shows a Clock In button. Tap, the punch posts. GPS captured if permitted. Status pill updates to "Clocked in since 08:02". Same path for break start, break end, and clock-out.

GPS & geofence

If the staff member has granted location permission, the punch carries the lat/lng. If geofence enforcement is enabled (Phase 2 roadmap), the punch is rejected unless the device is within the configured radius of the location's address. For Phase 1, GPS is captured but not enforced — useful for spot-checks but not gating clock-ins.

Offline-tolerant queue

If the device has no network, the punch queues locally in the app's outbox. When connectivity returns, queued punches post in order. The staff member sees a "Queued, will sync" badge in the meantime. Network-failure mode that used to mean "the app didn't work" is now invisible.

Web kiosk clock-in

A shared device (tablet or PC) running a kiosk-mode browser at app.onpointshifts.com/kiosk. Staff identify themselves with PIN or by scanning their personal QR code. Same clock-in / break / clock-out actions as mobile.

The kiosk is location-specific — when you set it up, you specify which location it represents. Punches inherit that location automatically; no spoofing possible.

POS-imported punches

When the operator's POS already handles clock-in (common in restaurants and forecourts that have time-and-attendance built into the POS), OnPointShifts ingests those punches via the POS integration. The punch carries source POSImport and the POS's punch ID for traceability.

Native POS integrations (PlatinumPOS, FreshPOS, OnPointPOS) sync sub-second via webhook. Third-party POS integrations poll at 15-minute cadence.

Biometric device punches

For sites running ZKTeco-style fingerprint or facial-recognition hardware, the device feeds punches via the API. They land in OnPointShifts as Source=POSImport-equivalent with the device id preserved. See the integrations page for the device API contract.

Manager edits

Punches sometimes go wrong: staff member forgot to clock in, clocked in late and wants to fix the time, took an unrecorded break. Managers can edit punches, but every edit creates an audit row.

From Time Clock → Punches, click any punch, click Edit. The modal asks for:

  • New timestamp (required if changing)
  • Edit reason (required, free-text)
  • Approving manager (defaults to current user)

On save, the punch updates AND a TimecardAdjustment row is created with before/after values, reason, actor, and timestamp. The original punch is never destroyed — the edit overlays it.

Late and early flags

When a punch occurs outside its scheduled window, a flag is set:

  • LateClockIn — clock-in is later than scheduled start + threshold (default 5 min).
  • EarlyClockOut — clock-out is earlier than scheduled end - threshold (default 5 min).

Thresholds are configurable per tenant. Flagged punches surface on the Time Clock dashboard's exception tab.

Missed-clock-out detection

The classic time-and-attendance failure: staff member forgets to clock out at the end of their shift, and the open punch sits there indefinitely. OnPointShifts runs a background job that scans for any open ClockIn punch with no paired ClockOut older than the configured threshold (default 16h).

When the threshold trips, the punch is flagged MissedClockOut. The staff member receives a notification asking when they actually left. The manager sees the exception on the Time Clock dashboard. Resolution flow:

  1. Manager opens the exception.
  2. Manager edits the punch with the actual clock-out time and a reason (e.g. "forgot to clock out, confirmed with staff").
  3. The exception is marked resolved. Audit row captures the resolution.

The Time Clock dashboard

From Time Clock → Dashboard, three views:

  • Currently clocked in — live list of who's on shift right now, with their clock-in time and elapsed duration.
  • Exceptions — late, early, and missed-clock-out flags grouped by severity. Click any to resolve.
  • Recent punches — the last 50 punches across the location, useful for spotting anomalies.

How punches feed timecards

At pay period close, a background job runs timecards/recalc. For each staff member, it:

  1. Collects all TimePunch rows for the period.
  2. Pairs ClockIn with ClockOut, computes shift duration.
  3. Subtracts break duration from shift duration to get worked hours.
  4. Classifies hours: ordinary, overtime (above the BCEA cap), Sunday premium, public holiday premium.
  5. Applies any TimecardAdjustment rows on top.
  6. Writes the final Timecard row for the period.

The calculation is idempotent — re-run it as many times as you want over the same punches and you get the same totals. Useful when correcting a missed punch mid-period; just edit, then re-run recalc.

Common time-and-attendance issues

  • Staff sharing PINs at the kiosk — the punch logs are correct but represent the wrong person. Mitigation: rotate PINs, or switch to QR per-staff which is harder to share.
  • Mobile clock-in with GPS spoofed — Phase 2 geofence enforcement is the fix; for now, spot-check with the GPS map.
  • Missed clock-outs piling up unresolved — set a calendar reminder for managers to clear the exception queue at end of each shift, not end of period.
  • POS punch sync gaps — check the status page and the Sync Log under POS integration settings. Failed syncs land in a retry queue.

Next steps

Chat or Call on WhatsApp