Skip to main content

Permission matrix

This page lists every permission seeded into a workspace and shows which of the six default roles holds it. Use it as the reference when configuring custom roles or auditing access.

How the matrix is enforced​

  • Workspace-scoped. Roles and their permission grants live per workspace (per companyId). Every seeded workspace gets its own copy of the six default roles, and every tenant query is scoped to the workspace by a tenant guard, so a permission grant in one workspace never leaks into another. The platform operator manages workspaces from a separate /operator console that does not use this matrix at all.
  • Grants, not hard-coding. A user's effective permissions are the union of the grants on every role assigned to them. Endpoints are protected with a permissions decorator, and the guard checks that the caller actually holds the required permission — there is no implicit Super Admin bypass. Super Admin can do everything only because it is seeded with the full permission set.
  • Editable. The matrix below is the seeded default. Admins with roles.manage can add or remove any grant on any role (system roles included) from the access-control screen, so a live workspace may differ from what is shown here.
Country packs affect which permissions matter

Payroll, tax, and statutory rules follow the workspace's country pack, so some financial permissions only do something under certain packs. For example tax.configure / tax.certificates drive income-tax handling for a pack that has income tax (such as the Pakistan pack), but carry no tax logic under a pack with no income tax (such as the UAE pack). The permission still exists everywhere; the behaviour behind it is pack-dependent.

Legend: SA = Super Admin, HRM = HR Manager, HRO = HR Officer, ACC = Accountant, DH = Department Head, EMP = Employee.

Company​

PermissionDescriptionSAHRMHROACCDHEMP
company.viewView company profile and settings✅✅✅✅❌❌
company.updateUpdate company profile✅❌❌❌❌❌
company.settingsManage workspace settings (also gates badge evaluation, manual awards, and address-verification admin actions)✅✅❌❌❌❌

Employees​

PermissionDescriptionSAHRMHROACCDHEMP
employees.view_allView all employee records✅✅✅✅❌❌
employees.view_teamView team (department) employees✅✅✅✅✅❌
employees.view_ownView own employee profile✅✅✅✅✅✅
employees.createCreate new employees, and rehire former ones✅✅✅❌❌❌
employees.updateUpdate employee records✅✅✅❌❌❌
employees.deleteDelete employees✅✅❌❌❌❌
employees.importBulk-import employees✅✅❌❌❌❌
employees.confirmConfirm an employee after probation (auto-issues confirmation letter + sends the confirmed email)✅✅❌❌❌❌

Documents​

PermissionDescriptionSAHRMHROACCDHEMP
documents.view_allView all employee documents✅✅✅❌❌❌
documents.view_ownView own documents✅✅✅❌❌✅
documents.uploadUpload documents✅✅✅❌❌✅
documents.verifyVerify documents✅✅✅❌❌❌

Contracts​

PermissionDescriptionSAHRMHROACCDHEMP
contracts.viewView employment contracts✅✅✅✅❌❌
contracts.createCreate employment contracts✅✅✅❌❌❌
contracts.updateUpdate contracts (witness data, signed-copy upload)✅✅❌❌❌❌
Employee agreement portal bypasses the matrix

The employment-agreement portal endpoints (GET /api/contracts/portal/my-contract and POST /api/contracts/portal/my-contract/accept) do not require any of the permissions above. They authorize solely on the authenticated user being linked to an employee record, so an employee can only ever read or accept their own contract regardless of role.

Attendance​

PermissionDescriptionSAHRMHROACCDHEMP
attendance.view_allView all attendance records✅✅✅✅❌❌
attendance.view_teamView team (department) attendance✅✅✅✅✅❌
attendance.view_ownView own attendance✅✅✅✅✅✅
attendance.markMark or edit attendance✅✅✅❌❌❌
attendance.bulk_markBulk-mark attendance✅✅❌❌❌❌
attendance.regularize_approveApprove regularization requests✅✅❌❌✅❌
attendance.regularize_requestRequest regularization✅✅✅✅✅✅
attendance.overtime_approveApprove overtime✅✅❌❌✅❌
attendance.manageManage attendance settings and shifts✅❌❌❌❌❌
attendance.geo_manageManage geo attendance locations and assignments✅✅❌❌❌❌

Field Visits​

PermissionDescriptionSAHRMHROACCDHEMP
field_visits.viewView field visits, the map, clients and settings✅✅✅❌❌❌
field_visits.manageManage clients and pins, enrol field staff, settings, close/cancel visits✅✅❌❌❌❌

Leave​

PermissionDescriptionSAHRMHROACCDHEMP
leave.view_allView all leave applications✅✅✅❌❌❌
leave.view_teamView team (department) leave records✅✅✅❌✅❌
leave.view_ownView own leave balance and history✅✅✅✅✅✅
leave.applyApply for leave✅✅✅✅✅✅
leave.approveApprove or reject leave applications✅✅❌❌✅❌
leave.configureConfigure leave policies✅✅❌❌❌❌
leave.allocateAllocate leave balances✅❌❌❌❌❌

Payroll​

PermissionDescriptionSAHRMHROACCDHEMP
payroll.viewView payroll runs and entries✅✅❌✅❌❌
payroll.processProcess monthly payroll✅✅❌✅❌❌
payroll.approveApprove a payroll run✅✅❌❌❌❌
payroll.lockLock (finalize) a payroll run✅❌❌✅❌❌
payroll.salary_view_allView all employees' salaries, the PF ledger and contribution funds✅✅❌✅❌❌
payroll.salary_view_ownView own salary✅✅✅✅✅✅
payroll.salary_assignAssign salaries / structures, adjustments, increments✅✅❌✅❌❌
payroll.configureConfigure payroll (components, structures)✅✅❌❌❌❌
payroll.manageDisburse, finalize, mark-paid, salary-history import, set up contribution funds, record their entries, and share fund profit with members (or undo a share)✅❌❌✅❌❌
payroll.adjustment_deleteHard-delete a payroll adjustment (irreversible)✅❌❌❌❌❌

Salary slips​

PermissionDescriptionSAHRMHROACCDHEMP
salary_slips.generateGenerate salary slips for a payroll run✅✅❌✅❌❌
salary_slips.view_allView all employees' salary slips✅✅❌✅❌❌
salary_slips.view_ownView own salary slips✅✅✅✅✅✅
salary_slips.emailEmail salary slips✅✅❌✅❌❌

Cheques​

PermissionDescriptionSAHRMHROACCDHEMP
cheques.manageOpen the cheque register and mark cheques cleared; with payroll.manage, also issue, bounce and cancel them✅❌❌✅❌❌
cheques.printPrint and reprint cheques for a locked payroll run✅❌❌✅❌❌

Tax​

Tax handling is driven by the workspace's country pack (see the note at the top).

PermissionDescriptionSAHRMHROACCDHEMP
tax.configureConfigure tax (slabs / rates for the active pack)✅✅❌✅❌❌
tax.certificatesManage and generate tax certificates✅✅❌✅❌❌
tax.view_ownView own tax details and certificate✅✅✅✅✅✅

Loans​

PermissionDescriptionSAHRMHROACCDHEMP
loans.view_allView all loan records✅✅❌✅❌❌
loans.view_ownView own loans and installment schedule✅✅✅✅✅✅
loans.applyApply for a loan✅✅✅✅✅✅
loans.approveApprove or reject loan applications✅✅❌✅❌❌
loans.configureConfigure loan types✅✅❌❌❌❌

Holidays​

PermissionDescriptionSAHRMHROACCDHEMP
holidays.manageCreate and delete holidays✅✅✅❌❌❌
holidays.viewView the holiday calendar✅✅✅✅✅✅

Announcements​

PermissionDescriptionSAHRMHROACCDHEMP
announcements.manageCreate, update, and delete announcements✅✅✅❌❌❌
announcements.viewView announcements✅✅✅✅✅✅

Dashboard​

PermissionDescriptionSAHRMHROACCDHEMP
dashboard.adminAdmin dashboard✅❌❌❌❌❌
dashboard.personalPersonal dashboard✅❌❌❌❌❌

Reports​

PermissionDescriptionSAHRMHROACCDHEMP
reports.allView all reports✅✅❌✅❌❌
reports.departmentView department reports✅✅✅✅✅❌
reports.ownView own reports✅✅✅✅✅✅

Audit​

PermissionDescriptionSAHRMHROACCDHEMP
audit.viewView audit logs✅✅❌❌❌❌

Roles & users​

PermissionDescriptionSAHRMHROACCDHEMP
roles.manageCreate, update, and delete roles and their permissions✅❌❌❌❌❌
users.manageCreate, update, and deactivate user accounts and role assignments✅✅❌❌❌❌
users.impersonateSign in as another user✅❌❌❌❌❌
users.manage_2faReset a member's two-factor authentication✅❌❌❌❌❌

HR letters​

PermissionDescriptionSAHRMHROACCDHEMP
hr_letters.manageGenerate, manage, and delete HR letters✅✅❌❌❌❌
hr_letters.view_ownView own HR letters✅✅✅❌✅✅
hr_letters.manage_requestsHandle employee letter requests✅✅✅❌❌❌
hr_letters.requestRequest an HR letter✅✅✅❌✅✅

Email templates​

PermissionDescriptionSAHRMHROACCDHEMP
email_templates.manageManage email templates✅❌❌❌❌❌

Print​

PermissionDescriptionSAHRMHROACCDHEMP
print.salary_slipsPrint / download salary slip PDFs✅✅❌✅❌✅
print.attendancePrint attendance✅✅✅✅✅✅
print.payroll_sheetPrint the payroll sheet✅✅❌✅❌❌
print.chequesPrint cheques✅❌❌✅❌❌
print.tax_certificatesPrint tax certificates✅✅❌✅❌❌
print.reportsPrint reports✅✅✅✅✅❌
print.contractsPrint contracts✅✅❌❌❌❌

Biometric devices​

PermissionDescriptionSAHRMHROACCDHEMP
biometric.viewView devices, users, punches, sync history, command log✅✅✅❌❌❌
biometric.manageRegister devices, sync, bind users, push time, restart, rotate comm key✅✅❌❌❌❌

System backups​

Backups cover the database and uploaded assets and are not workspace-scoped, so the grant is seeded to Super Admin only.

PermissionDescriptionSAHRMHROACCDHEMP
system_backup.viewView system backups✅❌❌❌❌❌
system_backup.manageCreate, restore, and manage system backups✅❌❌❌❌❌

SMS & mobile verification​

PermissionDescriptionSAHRMHROACCDHEMP
sms.manageManage SMS providers✅✅❌❌❌❌
mobile_verification.manageManage mobile-number verifications✅✅✅❌❌❌

Appraisals​

PermissionDescriptionSAHRMHROACCDHEMP
appraisals.configureManage appraisal settings (cadence, scale, toggles, auto-flow gate)✅✅❌❌❌❌
appraisals.manageBuild templates, run cycles, roll out, finalise, download PDFs, view all✅✅❌❌❌❌
appraisals.reviewAccess the manager review queue and submit reviews for direct reports✅✅❌❌✅❌
appraisals.view_ownView own appraisals and submit own self review✅✅✅❌✅✅

Assets​

PermissionDescriptionSAHRMHROACCDHEMP
assets.manageFull CRUD on assets and categories; issue and return assets✅✅✅❌❌❌
assets.view_allRead all workspace assets and assignment history✅✅✅✅✅❌
assets.view_ownView own assigned assets and personal history✅✅✅✅✅✅

Offboarding​

PermissionDescriptionSAHRMHROACCDHEMP
offboarding.manageInitiate separations, manage clearance, run final settlement✅✅❌❌❌❌
offboarding.viewRead separations, settlement preview, refresh live clearance✅✅✅✅❌❌

Onboarding​

PermissionDescriptionSAHRMHROACCDHEMP
onboarding.manageEdit pipelines and tasks, assign owners, run system actions✅✅✅❌❌❌
onboarding.viewRead pipelines and tasks✅✅✅✅✅✅

Expense claims​

PermissionDescriptionSAHRMHROACCDHEMP
expenses.submit_ownCreate and edit own claims, upload receipts, track status✅✅✅✅✅✅
expenses.approve_teamManager queue — approve / reject direct reports' claims✅✅❌❌✅❌
expenses.manageConfigure categories and HR/finance final-approve any claim✅✅❌✅❌❌
expenses.view_allRead all claims across the workspace✅✅✅✅❌❌

Recruitment / ATS​

Recruitment permissions are seeded to Super Admin only by default. Grant them to HR roles (or a custom role) from the access-control screen when you roll the module out.

PermissionDescriptionSAHRMHROACCDHEMP
recruitment.manageManage jobs, postings, candidates, applications, interviews, offers, convert to employee✅❌❌❌❌❌
recruitment.interviewSubmit interview feedback (participant gate enforced in the service)✅❌❌❌❌❌
recruitment.viewRead openings, candidates, applications (no edits)✅❌❌❌❌❌

Performance tracking​

PermissionDescriptionSAHRMHROACCDHEMP
performance.manageConfigure the performance module (settings, scorecard profiles, any task); override daily-report AI verdicts; triage AI-flagged reviews and void scores; link integration identities✅✅❌❌❌❌
performance.reviewAssign and grade tasks. Team-scoped on its own: reaches only the holder's direct reports; combined with performance.manage or performance.view_all it becomes company-wide. Recurring task schedules always require the company-wide combination✅✅❌❌✅❌
performance.view_allView all employees' performance scores✅✅✅❌❌❌
performance.view_ownView own tasks and score, submit daily reports✅✅✅✅✅✅

Performance integrations (GitHub / WHMCS)​

The /admin/integrations surface is plan-gated on the performance feature. Connection plumbing and merit governance are split:

ActionPermissionSAHRMHROACCDHEMP
Connections: save credentials, choose repos, test, poll, AI-provider CRUDcompany.settings✅✅❌❌❌❌
Merit governance: identities list/link/unlink, flagged-review triage, score voidperformance.manage✅✅❌❌❌❌

Self-service (view_own / *_own) endpoints​

The employee portal reads a user's own data through the view_own / *_own permissions (for example employees.view_own, attendance.view_own, leave.view_own, payroll.salary_view_own, salary_slips.view_own, loans.view_own, hr_letters.view_own, assets.view_own, expenses.submit_own, performance.view_own). These are granted to every default role, and the endpoints resolve the employee from the JWT — so a user can only ever reach their own records. The employment-agreement portal endpoints (see the Contracts note above) bypass the matrix entirely and authorize on the linked employee record.


Summary by role​

The six default roles are seeded per workspace with these grant counts (out of 112 total permissions). Super Admin holds all of them.

RoleDefault permissions
Super Admin112
HR Manager92
Accountant50
HR Officer50
Department Head33
Employee23
info

This matrix reflects the default grants at workspace creation. Admins with roles.manage can change any role's permissions at any time; users must re-login to pick up a changed grant. See Custom roles and Default roles for more.