KalHR logo

Resources

Changelog

Changes to the KalHR API and webhooks, newest first. Check here before upgrading an integration.

Changes are listed newest first. Additions are safe to ignore; anything that could break an integration is marked Changed.

19 October 2026

Added

  • Attendance: records, a day's absence report, attendance exceptions (excused days), company holidays and public holidays. Keys need Attendance: View.
  • Leave balances: one employee's balance of one leave type.
  • Every webhook event now has a sample payload.
  • GET v1/company/list: your organisation's companies, for the CompanyId that payroll needs and the Companies filter elsewhere.
  • Employee list: the Status filter, such as Status=Active.
  • Leave request list: the DepartmentId and SearchTerm filters.
  • Employee list: nationalityId; jobRoles[].gradingSystem now has minimum and maximum.
  • Employee list: salary now has its own id, employeeId, companyId, organizationId and salary.

Changed

  • Employee list: nationality is now the country's name, such as "Nigeria", as in the single-employee record. It used to be the country's id written as text ("160"); that id is now nationalityId.
  • Payroll status Pending_Appproval is now spelled PendingApproval, in API answers and webhook events. Filters still accept the old spelling.

Fixed

  • The leave request list answers without a CompanyId, with requests from every company in the organisation.
  • Filters that were accepted but ignored now apply: employee Status, leave DepartmentId and SearchTerm.

15 October 2026

Added

Last updated October 19, 2026

Missing an endpoint or an event?

Tell us what you're building. The API grows from what integrators ask for.

See KalHR in action - 30 min demo