Docs
Integrations

HR and payroll

Import staff from a CSV file, export timesheets in payroll-ready formats, and keep Agoo in step with your HR system.

Planned· P8For admins and HR teams

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.

ToolWhat it doesPlansPhase
CSV staff importCreate and update people from a spreadsheetGrowth, Pro, EnterpriseP8
Timesheet and payroll exportDownload hours, lateness, overtime and leave per person, per period, as CSV or ExcelPro, EnterpriseP8
Attendance APIRead clock events and summaries from your own systemsPro, EnterpriseP9
HR and payroll syncOngoing sync with your HR system, set up with our teamEnterpriseP9

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:

ColumnRequiredNotes
nameYesFull name.
emailYesMatches existing people, so re-importing updates rather than duplicates.
phoneNoE.164, or a Ghana number such as 024 123 4567.
departmentNoCreated if it doesn't exist.
job_titleNo
siteNoSite name or site_… ID. Separate several with ;.
employee_numberNoYour HR or payroll system's ID for the person. Included in every export.
staff.csv
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-0377

Save 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.

ColumnExampleNotes
date2026-09-14In the site's time zone.
employee_numberVB-0377From the person's record.
nameNii Armah
departmentOperations
siteTema BranchWhere they clocked in.
shiftDay 08:00–17:00Empty if they have no shift that day.
statuslatepresent, late, absent, on_leave, public_holiday or rest_day.
first_in08:14Local time.
last_out17:32Local time.
worked_minutes498Time between clock-ins and clock-outs, less unpaid breaks.
late_minutes14After the shift's grace period.
early_leave_minutes0
overtime_minutes32Under your organisation's overtime rules.
leave_type(empty)Such as annual or sick, when status is on_leave.
flagsofflineoffline, 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_out means someone forgot to clock out and a manager should confirm their hours. manual_edit shows 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:

EndpointUse it forScope
GET /attendance/summaryPresent, late, on leave and absent counts for each day, up to 31 days at a timeattendance:read
GET /attendance/eventsEvery clock-in and clock-out, with method, device, time and late minutesattendance:read
GET /shiftsShift patterns, with start and end times and grace periodsattendance:read
POST /attendance/eventsRecord clock-ins and clock-outs from your own terminalsattendance: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.

On this page