HR and payroll
Import staff from a CSV file, export timesheets in payroll-ready formats, and keep Agoo in step with your HR system.
This is designed and scheduled but not built yet. We document it now so you can plan your integration.
Agoo records when staff clock in and out, against their shifts and leave. These tools move that information to and from the systems your HR and payroll teams already use.
| Tool | What it does | Plans | Phase |
|---|---|---|---|
| CSV staff import | Create and update people from a spreadsheet | Growth, Pro, Enterprise | P8 |
| Timesheet and payroll export | Download hours, lateness, overtime and leave per person, per period, as CSV or Excel | Pro, Enterprise | P8 |
| Attendance API | Read clock events and summaries from your own systems | Pro, Enterprise | P9 |
| HR and payroll sync | Ongoing sync with your HR system, set up with our team | Enterprise | P9 |
Import staff from CSV
Admins import people in People → Import in the console, or with agoo people import from the CLI. Both use the same columns:
| Column | Required | Notes |
|---|---|---|
name | Yes | Full name. |
email | Yes | Matches existing people, so re-importing updates rather than duplicates. |
phone | No | E.164, or a Ghana number such as 024 123 4567. |
department | No | Created if it doesn't exist. |
job_title | No | |
site | No | Site name or site_… ID. Separate several with ;. |
employee_number | No | Your HR or payroll system's ID for the person. Included in every export. |
name,email,phone,department,job_title,site,employee_number
Kwame Mensah,kwame.mensah@voltabank.example,+233241234567,Treasury,Head of Treasury,Ridge HQ,VB-0142
Nii Armah,nii.armah@voltabank.example,0205550142,Operations,Operations Officer,Tema Branch,VB-0377Save the file as UTF-8 CSV so names with accents or other characters survive. The import shows a preview of what will be created and updated before anything changes.
Set employee_number for everyone who appears on payroll. It's how your payroll team will match Agoo's export to their records.
Export timesheets for payroll
On Pro and Enterprise, admins and HR users export timesheets in Attendance → Exports. Choose the period (for example 1 to 30 September), the sites and departments, and the format: CSV, or Excel (.xlsx) with one sheet per file below.
Daily file
One row per person per day in the period.
| Column | Example | Notes |
|---|---|---|
date | 2026-09-14 | In the site's time zone. |
employee_number | VB-0377 | From the person's record. |
name | Nii Armah | |
department | Operations | |
site | Tema Branch | Where they clocked in. |
shift | Day 08:00–17:00 | Empty if they have no shift that day. |
status | late | present, late, absent, on_leave, public_holiday or rest_day. |
first_in | 08:14 | Local time. |
last_out | 17:32 | Local time. |
worked_minutes | 498 | Time between clock-ins and clock-outs, less unpaid breaks. |
late_minutes | 14 | After the shift's grace period. |
early_leave_minutes | 0 | |
overtime_minutes | 32 | Under your organisation's overtime rules. |
leave_type | (empty) | Such as annual or sick, when status is on_leave. |
flags | offline | offline, manual_edit or missing_clock_out. Separate several with ;. |
Summary file
One row per person for the whole period, with employee_number, name, department, the number of days in each status, and total worked_minutes, late_minutes and overtime_minutes.
Before you send it to payroll
- Check the flags.
missing_clock_outmeans someone forgot to clock out and a manager should confirm their hours.manual_editshows hours a manager changed, with the reason in Agoo's audit trail. - Minutes, not hours. Times are whole minutes so totals add up exactly. Divide by 60 in your payroll spreadsheet if it expects hours.
- Ghana public holidays are applied automatically, and show as
public_holiday.
Read attendance with the API
For a custom integration, for example a nightly job that loads attendance into your payroll database, use the API on Pro and Enterprise:
| Endpoint | Use it for | Scope |
|---|---|---|
GET /attendance/summary | Present, late, on leave and absent counts for each day, up to 31 days at a time | attendance:read |
GET /attendance/events | Every clock-in and clock-out, with method, device, time and late minutes | attendance:read |
GET /shifts | Shift patterns, with start and end times and grace periods | attendance:read |
POST /attendance/events | Record clock-ins and clock-outs from your own terminals | attendance:write |
Webhooks tell you as things happen: attendance.clocked_in, attendance.clocked_out and attendance.late. The recipe attendance to payroll is a complete example. Fields are described in the API reference.
HR and payroll sync
On Enterprise, our team sets up an ongoing sync with your HR or payroll system, so that joiners, leavers and department changes flow into Agoo, and attendance flows back, without anyone exporting files. What's possible depends on your system and how it can be reached; talk to us about yours.
If your organisation uses Microsoft Entra ID or another SCIM-capable directory as its source of truth for staff, SCIM provisioning on Pro gives you the people half of this today.
Privacy
Attendance records are personal data under the Data Protection Act, 2012 (Act 843). Exports include only the columns above: no face templates, photos or locations. Each export is recorded in the audit trail with who made it, and exports are limited to roles allowed to see attendance for the chosen sites. Keep downloaded files only as long as payroll needs them.