---
title: "How lateness is decided"
description: "The flex window and the org's late grace period both sound like tolerance for being late, but they are not the same thing — they stack."
---

> Documentation Index
> Fetch the complete documentation index at: https://peoplematter.app/llms.txt
> Use this file to discover all available pages before exploring further.

# How lateness is decided

Lateness shows up only in [attendance](/en/docs/time/) and a manager's **Timesheets** — it
is informational, nothing more: no deduction, nothing to approve. There is exactly one
rule, and it is the same whether someone is [rostered or fixed hours](/en/docs/attendance-basis/):
**the day's FIRST punch, later than "expected start + flex window + the org's late grace
period", counts as late.** A second or third punch the same day (returning from a split
shift, say) never earns a second late mark — lateness is about whether the day started
late, not about every individual punch.

## Layer one: the flex window, from the schedule itself

The flex window decides how wide "on time" is in the first place, and **rostered and
fixed-hours people get it from two different places**:

- For a rostered person, the flex window comes from whichever **shift type** they are
  actually on that day — each shift type can carry its own flex window, set on the
  Scheduling vocabulary screen.
- For a fixed-hours person, the flex window is the one on their own **work pattern**,
  editable per person or inherited from the org's default work pattern.

For example: an 08:00 start with a 120-minute flex means arriving any time from 08:00 to
10:00 counts as on time — that is not the org being lenient about lateness, it is simply
how wide that shift, or that pattern, was designed to be.

## Layer two: the org's late grace period, stacked on top of the flex window

Company ▸ Settings ▸ **Timekeeping** (under Policy in the settings list) also carries one org-wide number, the **late grace period
(minutes)**, which is a separate thing from the flex window and **stacks** with it rather
than replacing or standing in for it: the flex window already decided where "on time"
ends; the grace period is how much further past that point the org is still willing to
look past before it actually counts as late.

The grace period only answers the yes/no question of whether a day counts as late at all —
the number of **minutes** late is always measured from "expected start + flex window", not
from "expected start + flex window + grace period". Say the flex window puts the on-time
cutoff at 10:00 and the grace period is 5 minutes: arriving at 10:04 is not late, but
10:07 is late by 7 minutes, not 2 — the grace decided that 10:04 does not count as late
yet, but once a day IS late, the number measures the distance from the on-time cutoff, not
from where the grace period ran out.

## The grace recorded on that day never moves when the policy changes later

The moment a day's attendance record is first created, it freezes the org's late grace
period at whatever it was that day — adjusting the number on the Timekeeping page later
only affects days created AFTER the change, never rewrites a day already recorded. The
**Late** column in Timesheets shows only the number of minutes; opening one day's own
detail additionally shows a line reading "That day's grace was X minutes" — which explains
why THAT day was judged late, not what the org's setting happens to be right now.

Source: https://peoplematter.app/en/docs/lateness/index.mdx
