Skip to main content
← Everything it does

Time

Partly working

Hours, time off and schedules, kept where the pay run can read them.

How do hourly people and contractors get their hours in?

Hours are recorded against a pay period, because a period is the unit payroll pays and approval is what has to happen before it. Everyone whose pay moves with the clock appears, including the people who have recorded nothing — those are precisely the ones holding payroll up, and a list of submitted timesheets hides them.

Three rules are enforced in the domain rather than in the interface, which means no screen can get around them. Nobody approves their own hours: a manager paid hourly has a timesheet too, and signing it themselves removes the only check on it. A rejection needs a reason, because hours bounced back without one turn into a guessing game that ends in changing figures until they are accepted. And once payroll has taken the hours, they stop moving — a calculation whose inputs change underneath it cannot be reproduced.

Durations are stored as whole minutes and only ever shown as decimal hours. 7.4 hours is not a number a computer holds exactly, and a week of them added in floating point does not equal the sum of its days. At an hourly rate, that difference is somebody’s pay. You can type 7.5, 7:30 or 7h 30m — all three are things people write.

In the product: Your company → Time

What it looks like

Photographed from the running application, not drawn. Every name and figure in them is invented.

The Time page for a pay period, listing each hourly worker with their hours and status.
Everyone paid by the clock, including anybody who has recorded nothing — those are the people holding payroll up, and a list of submitted timesheets would hide them.
Recording a day of work, with fields for the day, how long, and a note.
Type 7.5, 7:30 or 7h 30m. All three are things people write, and refusing two of them teaches nothing except that the form is fussy.
A submitted timesheet showing approve and send-back controls with a reason field.
Sending hours back requires a reason. Nobody can approve their own, and that refusal is in the domain rather than in this screen.

What works today

  • Recording hours per day against a period, in whichever format you type
  • Submitting a timesheet for approval
  • Approving or sending back, with the reason travelling to the worker
  • Refusing to let anybody approve their own hours
  • A sent-back timesheet reopening when it is corrected, so the approver looks again
  • Feeding approved hours straight into the pay run

What does not, and why

  • Time off, accruals and balances

    A policy engine, and the accrual reaching the pay run.

  • Scheduling and shifts

    Not started. Distinct enough from time recording to be its own thing.

  • Clocking in and out

    Not started. Manual entry covers the same ground less conveniently.

  • Overtime calculated automatically

    The rules are jurisdictional, so this belongs with the tax provider rather than here.

Every line in this area

The same catalogue the pricing table is built from, filtered to this area. One list, one set of markers, everywhere.

  • Time tracking that feeds payroll

    Hours recorded once and carried into the run, with no re-keying and nothing to import.

    Works today
  • Approvals with a separation of duties

    Nobody can approve their own hours, a rejection has to say what to fix, and hours a pay run has taken stop being editable.

    Works today
  • Time off and accruals

    Requests, approvals and balances, with accrual that matches what you actually promised.

    Planned
  • Location-verified clock-in

    For field and site teams: a clock-in that records where it happened, so hours for work done away from a desk are verifiable without a second product bolted on.

    Planned
  • Job and project costing

    Hours attributed to the job they were worked on, and carried into your accounts.

    Planned

Read the markers, not the length of the list

Anything marked planned or being built is not working today and is not charged for. Moving money needs a licensed partner and filing needs a status granted by each tax authority — neither is a matter of writing more code, and neither is claimed here.