Docs
Attendance

Timesheets and payroll

Approve each person's hours at the end of every period, lock them for payroll, reopen with a reason when something was wrong, and export them for payroll by your own pay codes.

Early access· P8–P9For HR, payroll and managers

Agoo is in early access. This page describes the feature as it ships to early-access organisations; screens are illustrative.

A timesheet is one person's period: every day's clock-ins and clock-outs, shifts, breaks, lateness, overtime, extra time and its decisions, absences and leave, with the totals payroll needs. At the end of each period, the right people approve it, and once it's approved it's locked, so the numbers payroll pays from don't move. Timesheet approval is on every plan, in Console → Attendance → Timesheets and in the Agoo Workspace app.

WhatWhat it doesStatus
Timesheet periodsWeekly, fortnightly or monthly, with a cut-off day for monthly periodsNow, on every plan
Approving timesheetsThe line manager then HR, HR only, or no approval; several at once, with what's left to fix shown firstNow, on every plan
Custom approval chainsUp to five steps: the line manager, their manager, HR or a named personNow, on Enterprise
LockingAn approved timesheet locks its days; changing them needs it reopenedNow, on every plan
Sending back and reopeningSend a timesheet back with a note; reopen an approved one with a reasonNow, on every plan
Staff confirm their ownEach person checks and confirms their timesheet in the Workspace app first, if you wantNow, on iPhone, iPad and Android
Approving in the Workspace appTimesheets beside leave on the Team tab, approved with a swipeNow, on iPhone, iPad and Android
The payroll date and remindersOne reminder per period to approvers, and to HR before the payroll dateNow, on every plan
Daily hours and its exportWorked time and overtime by person and day, for any dates, exported to CSV, Excel or PDFNow, on every plan
Webhooks and APITimesheet and payroll file events by webhook (Growth and above), and timesheets and payroll files in the API (Pro and above)Now, in the developer preview
Payroll exportApproved timesheets as CSV or Excel by your own pay codes, by site and period, with corrections for reopened periodsNow, on Pro and Enterprise
Pay codes and your own layoutsYour code and multiplier for each kind of time and leave; layouts shaped to your payroll's importNow, on Pro and Enterprise
Ready-made payroll layoutsLayouts for payroll systems used in Ghana, each made from that system's real import filePlanned, on Pro and Enterprise
HR and payroll syncApproved hours flowing into your HR or payroll systemPlanned, on Enterprise

What's on each plan

PlanTimesheets and payroll
Free, Starter, GrowthTimesheet periods, approval and locking, staff confirmation, reminders and the payroll date; Daily hours exported to CSV, Excel or PDF
Pro+ Payroll export: approved timesheets as CSV or Excel by your own pay codes, by site and period, in your own layouts, with corrections
Enterprise+ Custom approval chains, and HR and payroll sync with your HR or payroll system (planned)

Periods

Each organisation chooses its period in the attendance rules:

  • Monthly (the default): the calendar month, or up to a cut-off day such as the 25th, so the period runs from the 26th to the 25th and payroll has a few days.
  • Fortnightly: two weeks from Monday to Sunday, counted from a Monday you choose.
  • Weekly: Monday to Sunday.

Periods follow one another with no gaps. A change of period takes effect from the next period, never in the middle of one. Timesheet approval starts with the period that holds the day your organisation began using it: days before it are never put to anyone.

Each period is named the way you'd say it: "September 2026" for a calendar month, "26 Aug to 25 Sep 2026" or "1 to 7 Sep 2026" otherwise.

Where a timesheet stands

StatusMeans
OpenThe period is still running
To confirmThe period has ended and the person is checking and confirming it (only if staff confirm their own)
To approveWith its approvers, step by step; with no approval steps, waiting to lock itself
ApprovedApproved and locked

Each timesheet shows its steps (who approved each one, when and with what note, and who it's with now) and its history: who confirmed it, approved it, sent it back or reopened it, when, and why.

Staff confirm their own timesheet

If you turn on Staff confirm their own timesheet first (off by default, in Attendance → Settings → Timesheets), each person checks their own timesheet in the Workspace app when the period ends and taps Confirm my timesheet, with a note if something looks wrong. They have two days by default (you choose 1 to 14). A timesheet nobody confirms in time goes for approval anyway, marked Not confirmed, and an approver can choose Send for approval now sooner. People who don't sign in to Agoo skip this step.

Approve timesheets

Open Console → Attendance → Timesheets

The latest period that has ended opens first; choose another from the period picker. The counts show how many are open, to confirm, to approve and approved, and how many are waiting for you. Each row is one person: their status, worked time, regular time, overtime, leave and absences, what's left to fix and who it's waiting with. Line managers whose role doesn't show everyone's attendance see Team timesheets, with their own people.

Fix what's left

A timesheet can't be approved until nothing is left to fix. Its row says what, such as "2 missing clock-outs, 1 h 20 min of extra time to decide":

  • missing clock-outs (add the clock-out);
  • breaks not ended;
  • extra time waiting for a decision (decide it; each day's extra time and its decision show on the timesheet);
  • leave inside the period waiting for approval;
  • clock-ins waiting for review;
  • days still being worked out after a change, for a moment.

Open a person to see their totals, the steps, the history and every day with its punches.

Approve

Select one or several and choose Approve. Agoo approves the ones that are ready and that are yours to decide, and tells you why it skipped any others. Approving your step sends the timesheet to the next one; approving the last step locks it.

Approvers can also approve in the Workspace app: timesheets wait beside leave on Team → Approvals, where a swipe right approves one. A timesheet with something left to fix says what instead.

Who approves

Your organisation chooses under Who approves timesheets in Attendance → Settings → Timesheets:

ChoiceWho approves
Line manager, then HR (default)The person's line manager first; once they approve, HR
HR onlyHR
No approvalNobody: each timesheet locks itself a few days after its period ends (see below)
Custom chain (Enterprise)Up to five steps, each the line manager, their manager's manager, HR or a named person

Approvals work as they do for leave:

  • Nobody approves their own timesheet. A manager's own goes to their manager or HR. The Owner, when nobody else can approve theirs, has it approved by Agoo.
  • HR can approve any step, and someone with no manager goes straight to HR.
  • While an approver is away, a deputy they named, or their own manager and then HR, approves for them, and timesheets nobody approves move up after the time you set. A deputy can also decide the extra time of the people they cover.

Send a timesheet back

If something needs another look, choose Send back and write a note (3 to 300 characters). With staff confirming their own, it goes back to the person to check and confirm again; otherwise it goes back to the first approver. Either way it starts the steps again, and the note is in its history. Send back only shows when there's someone to send it to.

Locked means locked

Once a timesheet is approved, the person's days in that period are locked. These are refused, with a message such as "Tue 30 Sep is in Nii Armah's approved timesheet for September 2026: reopen the timesheet to change it":

  • voiding a punch, adding a missed one or correcting a time;
  • accepting or rejecting a punch waiting for review;
  • approving, recording, cancelling, ending or changing leave on those days;
  • publishing or cancelling a roster shift on those days;
  • deciding extra time or an absence on those days.

Clock-ins are never refused. A punch from a kiosk, a phone or a terminal is a fact, even one made offline before the lock that only synced after it. It's kept and listed, but not counted until the timesheet is reopened, and the timesheet says Changed after it was locked. The same happens if anything else would have changed a locked day, such as a public holiday announced late: the numbers stay as approved, and the timesheet tells you to look.

Daily hours, the day-by-day view of everyone's time, shows a lock on days in approved timesheets, with a link to the period's timesheet.

Reopen a timesheet

To change an approved timesheet, open it and choose Reopen, with a reason (3 to 500 characters). It goes back to the first approval step (not back to the person to confirm), and the person and whoever approved it are told, with your reason. Fix what was wrong, then approve it again. Reopening is recorded in the audit trail.

Who can reopen is your choice in the rules: HR, Owners and Admins (the default), Line managers too, or Only Owners.

With no approval

If you choose No approval, each timesheet locks itself a number of days after its period ends (3 by default, 1 to 14), giving managers time to fix missed punches first. It locks whatever is left, and its history says what was left.

The payroll date and reminders

Set Payroll is on in the rules: a day of the month for monthly periods (a shorter month uses its last day), or a weekday for weekly and fortnightly ones. Each period's payroll date is the first such day on or after the period ends. HR can move one period's date on Timesheets, for example when payroll runs early before a public holiday.

The reminders follow it, so nobody gets a message for every timesheet:

  • Approvers get one message when a period ends with timesheets waiting for them, with the payroll date, then one every two working days while some still wait.
  • HR and Owners get an email two working days before the payroll date, and on the day, while timesheets still wait.
  • HR and Owners get one email when every timesheet for a period is approved, ready for payroll.

Night shifts

A shift that runs past midnight belongs to the day it started. A night shift from 20:00 to 08:00 on Tuesday is Tuesday's, with its clock-out on Wednesday morning listed under Tuesday, and a night that ends on the 1st belongs to the month it started in. Breaks belong to the shift they're in. So nobody's timesheet shows a morning clock-out as a day of its own, and a lock never splits a night.

Who hears what

WhoHearsHow
The personTheir timesheet is ready to confirm, if staff confirm their ownPush to the app, or email without it
The personTheir timesheet was sent back to them, with the note; it was reopened, with the reasonPush, or email
ApproversTimesheets waiting for them when a period ends, then every two working days while some waitPush, or email
The first approverA timesheet sent back to them, with the notePush, or email
Whoever approved itA timesheet they approved was reopened, with the reason; it comes back to themPush, or email
Owners and HRTimesheets still waiting before the payroll date; every timesheet for a period approvedEmail

Each person chooses how their alerts reach them in Account → Notifications. See Notifications.

Who does what

WhoCan
HR, Owners and AdminsApprove any step, send back, reopen (by default), move a period's payroll date, set the timesheet rules; on Pro and above, make and download payroll files and set pay codes and layouts
The person's line managerApprove their team's timesheets at their step, and send them back; reopen, if your rules allow line managers
Their manager's manager, or a deputyApprove timesheets that moved on to them, or that they cover while the approver is away
Whoever manages attendance at a siteApprove a line manager's step for people at that site
The personSee their timesheet and its steps, and confirm it in the Workspace app when your organisation asks

HR here means the built-in HR role. Changing the timesheet rules needs a role that covers every site and the payroll permission.

Setting it up

When you set up staff time, the setup wizard asks the period, who approves, whether staff confirm their own and your payroll day. Home's Set up staff time checklist keeps Timesheet period and approval until someone confirms it. On Pro and above it also lists Pay codes and the export layout, ticked when someone saves the pay codes or a layout or chooses Looks right, and Employee numbers, ticked once nobody on attendance is missing one. In Attendance → Settings → Timesheets, If nobody approves sets how long a timesheet waits before it moves up, and on Enterprise you can build a custom chain. See Attendance rules and setup.

Export for payroll

On Pro and Enterprise, Console → Attendance → Payroll turns a period's approved timesheets into one file for payroll, as CSV or Excel. Every hour and day in it sits under a pay code, your own name for each kind of time, so payroll can pay each at its own rate. On other plans the page shows what Pro adds, and Daily hours exports worked time, overtime, breaks and leave by person and day on every plan (see Attendance in the Console).

Attendance → Payroll lists each period with how many timesheets are approved, the files already made for it, any corrections due and timesheets reopened since the last file.

Choose the period and the sites

Choose a period, and the whole organisation or some of its sites. Only approved, locked timesheets go in. Agoo lists everyone who isn't in the file and why: waiting for approval, waiting for the person to confirm, the period still running, reopened after an earlier file and waiting for approval again, or still being worked out.

Choose the format and layout

Choose CSV or Excel, and a layout: long (one row per person and pay code), wide (one row per person, with a column for each pay code) or one of your own. Add a note if you like; it's kept with the file.

Make the file

Agoo makes the file while you wait and keeps it. If anyone is missing an employee number, it says who, with a link to fill them in on their page in People; the file is still made, because payroll may match people another way.

One payroll file is made at a time for each organisation, so two people can't make the same corrections twice.

Pay codes

Each kind of time has a pay code, a multiplier and a unit. Agoo fills in the defaults below. Rename any code, set its multiplier (0 to 10, to two decimal places) or leave it blank so payroll sets the rate, or leave a kind of time out of payroll files altogether. The unit comes with the kind of time and can't change.

Kind of timeDefault codeMultiplierUnit
Regular hoursREG1.0Hours
Overtime, dailyOT1.5Hours
Overtime, weeklyOT1.5Hours
Rest-day workOTREST1.5Hours
Public holiday workedPHW2.0Hours
Public holiday worked by casual and temporary staff (Labour Act s.77)PHW-S772.0Hours
Public holiday, paid day off (s.72)PH1.0Days
Night time, where you count itNIGHTBlank: payroll sets itHours
Authorised absence, paidABS-PAID1.0Days
Absence, unpaid or unauthorisedABS-UNPAID0Days
Annual leave paid out on leaving (s.30)LV-PAYOUT1.0Days
Extra time not approved, for informationXT-DECLINED0Hours; left out to start
Each leave typeIts own code1.0 if paid, 0 if unpaidDays

Each leave type carries its own code, such as LV-ANNUAL, LV-SICK, LV-MAT, LV-PAT, LV-COMP or LV-STUDY, which you set on the type. Payroll files name every kind of leave by its code, sick and maternity leave included, which line managers see only as Away; that's why only the people who make payroll files can see them.

  • The rates are yours. The Labour Act sets no overtime rate: time and a half is common practice, not the law. Agoo counts the hours and days, and payroll pays them. The Act lets you require overtime only once you've fixed your overtime rates (s.35(2)), and your pay codes are where you record them.
  • Casual and temporary staff who work a public holiday are owed a day's pay on top (s.77(2)), so their holiday work goes under its own code by itself, at 2.0 to start. A multiplier below 2.0 shows a warning, because a collective agreement or contract may say otherwise; Agoo warns, it doesn't decide pay.
  • Codes can't clash. One code for two kinds of time that are paid differently (hours and days, or different multipliers) is refused, because payroll couldn't tell them apart. Daily and weekly overtime share OT by default, which is fine: same unit, same rate.
  • Changes don't rewrite history. Each file keeps the code and multiplier it used on every line, so a later change never alters a file already made. Every change to the pay codes is recorded in the audit trail, with what it was before and after.

What's in the file

The long layout has one row per person and pay code:

employee_number, name, department, site, period_start, period_end, pay_code, category, units, unit, multiplier, correction, approved_by, approved_at, export_id

The wide layout has one row per person, with a column for each pay code:

employee_number, name, department, site, period_start, period_end, correction, then one column per pay code, then approved_by, approved_at, export_id

Hours have two decimal places, counted after unpaid breaks (7.50 is seven and a half hours); days are whole or half days. The details payroll matches people on come from their page in People: employee number, name, email, department, job title, site and employment type.

An Excel file has more than one sheet: the layout you chose first, then Pay codes (the long layout), By person (the wide layout), Days and Notes.

SheetWhat it holds
DaysEach person's days in the period: the day's status, first in and last out, time worked, regular time, daily and weekly overtime, rest-day, holiday and night time, extra time and its decision, paid and unpaid break minutes and where the unpaid break came from, minutes late and left early, leave with its code, and the holiday
NotesWho made the file and when, the period and its payroll date, the sites, each person's approval, reopenings with their reasons, corrections and the file each one corrects, who isn't in the file and why, the kinds of time left out, people with no employee number, and how to read the units

Your own layout

If your payroll system imports its own columns, build a layout once and choose it whenever you make a file. Each organisation can keep up to 20.

You chooseOptions
RowsOne row per pay code, or one row per person
ColumnsWhich columns, in what order, each with your own heading: employee number, name, email, department, job title, site, employment type, pay code, category, units, unit, multiplier, a column for each pay code, period start, period end, period, payroll date, correction, approved by, approved at, export, or fixed text
SeparatorComma, semicolon, tab or pipe
DatesYYYY-MM-DD, DD/MM/YYYY or MM/DD/YYYY
HoursDecimals (7.50) or hours and minutes (7:30)
Header rowOn or off
The file nameA pattern made from {org}, {period}, {starts}, {ends}, {export} and {layout}

A CSV file in your own layout has Windows line endings and no byte-order mark, as most import tools expect. Removing a layout archives it: files already made with it keep a copy of the layout as it was. Saving and removing layouts are recorded in the audit trail.

Ready-made layouts for payroll systems used in Ghana are planned, one system at a time. Each will be made from that system's real import file and tested with organisations that use it, rather than guessed. Until yours arrives, build your own layout from a file your payroll already imports.

Leave, absence and leavers

  • Leave goes under each leave type's code, in days.
  • Absence: an authorised, paid absence goes under ABS-PAID; an authorised unpaid absence, and one that was never authorised, under ABS-UNPAID. Your organisation's closed days count as paid days off under PH, like public holidays.
  • Leavers: someone whose leaving date falls in the period has the annual leave they have left paid out under LV-PAYOUT, in days, as the Labour Act asks (s.30). A balance below zero is never deducted by Agoo; that's for payroll. Annual leave is never paid out while someone is still employed (s.31).

No time without a code

Agoo won't make a file while any time in it has no pay code: a leave type with no code, or two codes that clash. It names each one, so you can fix it in a minute, instead of quietly sending that time out as regular hours. Kinds of time you've chosen to leave out are left out of the file and of any later correction, so they never come back.

Corrections

Old files never change. If someone's figures for a period change after a file was made, because their timesheet was reopened and approved again or a leaver's balance moved, the next file for that period carries correction lines for them: the difference (which can be below zero), marked as a correction and dated to the original period. The earlier file is marked as superseded for that many people, such as "superseded for 2 people".

A second file for the same period carries only what's new or changed: people approved since, and corrections. People with nothing changed aren't repeated. If nothing has changed, Agoo says so instead of making an empty file.

Every file is kept

Each file is numbered for your organisation ("Payroll export 3") and kept with who made it (or which integration), when, the period and sites, the format and layout, how many people, lines and corrections it has, who wasn't in it, and the file's name, size and SHA-256 checksum, so you can show the file you sent is the one Agoo made. Download the kept file again at any time, or a copy in another format or layout made from the same lines. Making a file and every download are recorded in the audit trail.

Payroll files are kept with your attendance records, for as long as you keep those (see Retention and deletion). Moving to a plan without the payroll export deletes nothing: the files already made can still be downloaded.

Who can make payroll files

HR, Owners and Admins make and download payroll files. Someone whose role covers only some sites makes files for those sites only, and sees only files made for them. Pay codes and layouts are for the whole organisation, so changing them needs a role that covers every site. Site admins can't make payroll files. An integration can make and download them through the API, with the attendance:payroll scope.

HR and payroll sync

On Enterprise, approved timesheets will flow straight into your HR or payroll system instead of being exported by hand, and new starters and leavers can come from it. It comes after the ready-made layouts, starting with a payroll system that has an API Agoo can use, and we set it up with you during implementation. If you're building it yourself, the developer platform covers the timesheets and payroll exports API and their webhooks.

Offline punches

Punches made offline sync with their original time. If a device has been offline for a long time, check it has synced before you approve the period; Console → Devices shows each kiosk's last sync. A punch that syncs after its timesheet was approved is kept and marked, never lost.

On this page