Skip to content
All guides

Reports & Analytics · Updated September 6, 2026

Reports & Statutory Filings

Review workforce trends, build saved reports and inspect Kenya payroll schedules.

Workforce Analytics

Reports, Workforce Analytics presents headcount, hiring/turnover, diversity, employment type, tenure and payroll trends. The page describes a last-12-month view; current headcount and monthly KPIs are separate snapshots. Payroll charts are shown when PAYROLL is licensed and use completed runs.

The dashboard includes department headcount, hiring/turnover trend, gender/employment-type charts, tenure distribution, payroll cost and statutory deductions. Empty states are distinct from failed requests; a failed request should be retried or investigated, not interpreted as zero activity.

Saved reports

The Reports page creates named definitions, runs them with optional start/end dates, shows table/chart results and exports CSV. Types include Headcount, Turnover, Payroll Cost, Payroll Tax, Workforce Diversity, Tenure, Compensation, Leave Utilization, Attendance, Recruiting, Performance and Custom.

Report type is fixed after creation. Name, description, chart type, visibility and supported configuration can be edited. To use another type, create a new report.

  1. Choose New Report, enter its name/type and optional chart and visibility settings.
  2. For Custom, choose a source, dimensions/measures and optional filters from the builder.
  3. Save and use the run action. Set date bounds where appropriate.
  4. Review the table or chart, then export the result set as CSV.

The run service defaults to 1,000 rows with a maximum of 10,000. Attendance defaults to the last 30 days when no start date is supplied. Date filters are report-specific; they do not imply every report type filters every source by the same field.

Custom report builder

Custom reports are implemented, not placeholders. The builder uses a server-provided catalogue of Employees, Leave balances and Payroll (completed runs), with allowed dimensions, measures and filters. It does not accept arbitrary SQL. Payroll sources require payroll permissions as well as reporting access.

Visibility and ownership

The Public/Private label is stored, but Private is not a backend read/run restriction. Company users with report read access can retrieve definitions, and the run endpoint does not enforce creator ownership. Update and delete check the recorded creator. Do not put confidential content in a definition on the assumption that the Private label hides it.

The web page currently puts its run controls alongside management actions, requiring export_reports; the backend run endpoint requires view_reports. Sensitive types (Payroll Cost, Payroll Tax and Compensation) additionally require view_payroll or manage_payroll, as do sensitive custom sources.

Kenya statutory schedules

Prepare a monthly schedule

  1. Confirm that the relevant pay runs have completed and that employee tax/contribution identifiers are populated.
  2. Open Payroll → Statutory Reports and choose the schedule and payment month/year.
  3. Select Generate and compare the preview's employees and totals with the completed runs.
  4. Download the monthly CSV where available. Check the file before using it in your filing process; downloading a schedule does not submit it to an authority.

For P9A, select the employee and year instead of a payment month. If an employee had multiple completed runs in a month, check the aggregated result rather than expecting one row per run.

Payroll, Statutory Reports offers these outputs:

ReportSelectionOutput
P9AYear and employeeAnnual employee tax-card preview
P10Month/yearPAYE preview and CSV
NSSFMonth/yearEmployee/employer contribution preview and CSV
SHIFMonth/yearHealth contribution preview and CSV
Housing LevyMonth/yearEmployee/employer contribution preview and CSV
HELBMonth/yearHELB deduction preview and CSV

Schedules select completed pay runs by payment date, not by the period's start/end month. Multiple completed runs for the same employee and payment month are aggregated. Reversed runs are excluded because they are no longer completed.

P9A includes monthly/annual pay, taxable income, tax and relief totals with employer/employee tax identifiers. Monthly schedules include the relevant employee identifiers and contribution amounts. HELB includes matching HELB deductions. Review identity fields and totals before using an export.

Generate shows a preview. CSV downloads are named after the sheet, the employer and the period, for example NSSF-Schedule-2026-06.csv or P10-SheetB-P051234567X-2026-06.csv. The P10 CSV imports into sheet B of KRA's P10_Return.xlsm workbook. The sheet A values (employer PIN and name, return period, total PAYE) are shown beside the P10 card with a Copy button, because a header block inside the CSV would shift every column on import. P9A downloads as a card for the employee. These are generated schedules, not automatic submissions or proof an authority accepts the file.

Permissions and licences

ActionRequirement
Read analytics and saved reportsview_reports, REPORTS licence
Create/edit/delete saved reports, web run controlsexport_reports (creator restrictions apply to edits/deletion)
Run sensitive payroll/compensation reportsAlso view_payroll or manage_payroll
Generate statutory previewsmanage_payroll, export_statutory or manage_compliance; PAYROLL licence
Download statutory CSVexport_statutory; PAYROLL licence

Plain view_payroll does not grant statutory schedule access. A user with only manage_compliance can generate previews but needs export_statutory for CSV downloads.

Troubleshooting

QuestionNext step
Which report helps compare payroll costs?Use Payroll Cost; review the selected date bounds and completed-run data
How do I reuse a report?Save a named definition, then run it for the relevant dates
Can I change a saved report's type?Create a new definition; type cannot be changed after creation
Why can I preview but not download a statutory CSV?Ask your administrator to check export_statutory permission
Why is a payroll chart unavailable?Check the Payroll licence and the permissions required for sensitive report data

For an empty statutory schedule, check payment month/year and completed status. For empty attendance results, check the default 30-day range. If the API reports a query error, address it rather than treating it as an empty dataset. For payroll calculations and configured rates, use the Payroll Workflow Guide.