Permissions Reference
eSecured ERP Platform uses role-based access control. Each role has a defined set of permissions. Admins can adjust role permissions from the Roles & Permission Matrix inside Settings → Users & Access.
The Roles page automatically shows only permissions that are relevant to your active modules. If your tenant does not have the Accounting module enabled, accounting permissions are hidden from the list — they cannot be accidentally granted and do not clutter the interface. The table below reflects all permissions across every tenant-facing module.
currency.view and currency.manage are the exception — Currency management (exchange rates) is available to every tenant regardless of licensed modules, since Quotations, Requisitions, Purchase Invoices, Expenses, and Income all support per-document currency.
POS Manager and POS Cashier are two dedicated roles for the Point of Sale → module, alongside the six general-purpose roles below. They only appear on tenants with the POS module active, and each lands on its own dashboard (pos-manager-dashboard / pos-cashier-dashboard) instead of the generic Business Dashboard.
Front Desk and Housekeeping are two further dedicated roles for the Hotel Management → module. Front Desk covers reservations, check-in/out, and guest folios (no room/room-type management, no financial reports); Housekeeping is deliberately the narrowest role in the system — room status only. Front Desk lands on the Hotel Dashboard, Housekeeping lands straight on the Housekeeping Board.
HR Officer is a dedicated role for the HR & Payroll → module — employee records, running and approving payroll, and leave approvals. It holds every HR permission except employee.delete and payroll.void, which stay Tenant Admin-only. HR Officer lands on the HR & Payroll Dashboard by default.
Hostel Manager is a dedicated role for the Student Hostel → module — day-to-day hostel operations: rental units, occupants, and signing/ending leases. It isn't shown as its own column in the matrix below (it only holds dashboard.view, invoice.view, and all of unit.*/occupant.*/lease.*, already shown as ✓ for Tenant Admin in those rows), but it is a real, separate role with no access to anything else — no Logistics, Accounting, or POS permissions.
Several rows below only show up once the matching option is switched on for your company: Trading (po.* needs Trading; so.* needs Sales Orders), Internal Supplies (supplies.* — your admin can turn it on under Settings → System → Early Access Features), Staff Loans (loan.*, inside HR & Payroll), and Driver Allowances (allowance.*, Logistics tenants).
Not covered below: lead.view, lead.viewAll, lead.create, lead.edit, lead.delete, lead.createDemo, lead.sendMessage, visit.create, visit.edit, playbook.manage — these back Field Activity, an internal-only sales-tracking tool for eSecured's own team, not a customer-facing module. They aren't self-activatable and won't appear for your tenant. playbook.manage specifically controls editing the Sales Playbook (contract template, call scripts, email templates) — it's deliberately separate from the broad settings.manage (Organization Settings) permission, so an admin can hand a rep playbook-editing rights without also handing them control of company branding. lead.createDemo is a separate, more consequential permission than lead.edit — it provisions a real demo tenant plus a real login and emails the credentials to the client, straight from a Lead. It's hardcoded to work only for the esecured-internal tenant regardless of module license, feature flag, or permission state, so it will never be usable by a customer tenant even if Field Activity/CRM is sold more broadly in the future.
vfd.view/vfd.manage are shown below like any other permission, but the feature they're meant to gate — TRA VFD/EFD Fiscalization → — is currently opt-in and enabled per tenant by eSecured, not self-activatable from the Platform Modules page. Contact your account manager if you want it turned on. Note that as of this writing, the app doesn't yet actually check vfd.view/vfd.manage anywhere in the UI — the fiscalization panel, Regenerate action, fiscal QR block, and Z-Report page are all gated by other means (the feature flag, invoice state) instead, so any user who can otherwise reach those screens can currently use them regardless of whether their role holds these two permissions.
expense.approve and purchase.approve below control who is allowed to approve an Expense or Purchase Invoice. Requisitions work differently: approval authority is split into four stage-specific permissions (requisition.approve.hod/.finance/.gm/.md, see below) granted per person through Settings → Users & Access → Approval Authority rather than through a role — the older, single requisition.approve permission still exists but doesn't grant approval authority at any specific stage. Separately, a different setting controls who is actually notified when something needs approving: see Settings → Notifications → Approval Queue Notifications (Notification bell →) to pick which roles get emailed or texted the moment an Expense, Requisition, or Purchase Invoice needs approval; holding an approval permission doesn't by itself add you to that notification list.
The main Dashboard isn't just gated by which modules your tenant has active — each widget also checks the viewing user's permissions, so two people at the same company can see different dashboards:
| Widget | Requires |
|---|---|
| Total Revenue, Net Profit, Estimated VAT Position | financial.view |
| Expenses (Approved), Pending Approvals stat, expense-type notifications | expense.view |
| Active Jobs Profitability | job.view |
| Vendor Portfolio Summary | vendor.manage |
| "Today at a Glance" items | the matching entity permission (trip.view, requisition.view, job.view, invoice.view, gl.view, clearing.view, quotation.view) |
| Quick Action buttons | the create/manage permission for their destination (e.g. job.create, gl.post) |
| Expiry-type compliance notifications | fleet.view or clearing.view |
A widget with no matching permission simply doesn't render — sections collapse rather than showing an empty card.
Default role permissions
| Permission | Tenant Admin | Operations | Accountant | Driver | Read-only | Marketing | POS Manager | POS Cashier | Front Desk | Housekeeping | HR Officer |
|---|---|---|---|---|---|---|---|---|---|---|---|
dashboard.view | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Customers | |||||||||||
customer.view | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||
customer.create | ✓ | ||||||||||
customer.edit | ✓ | ||||||||||
customer.delete | ✓ | ||||||||||
| Jobs | |||||||||||
job.view | ✓ | ✓ | ✓ | ✓ | |||||||
job.create | ✓ | ✓ | |||||||||
job.edit | ✓ | ✓ | |||||||||
job.delete | ✓ | ||||||||||
| Trips | |||||||||||
trip.view | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||
trip.create | ✓ | ✓ | |||||||||
trip.edit | ✓ | ✓ | |||||||||
trip.delete | ✓ | ||||||||||
trip.assign | ✓ | ✓ | |||||||||
| Invoices | |||||||||||
invoice.view | ✓ | ✓ | ✓ | ✓ | |||||||
invoice.create | ✓ | ✓ | |||||||||
invoice.edit | ✓ | ✓ | |||||||||
invoice.delete | ✓ | ✓ | |||||||||
invoice.approve | ✓ | ✓ | |||||||||
| Expenses | |||||||||||
expense.view | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||
expense.create | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||
expense.edit | ✓ | ✓ | |||||||||
expense.delete | ✓ | ||||||||||
expense.approve | ✓ | ✓ | |||||||||
expense.categories.manage | ✓ | ||||||||||
expense.cashout.create | ✓ | ✓ | ✓ | ||||||||
expense.editStore | ✓ | ||||||||||
expense.void | ✓ | ||||||||||
| Quotations | |||||||||||
quotation.view | ✓ | ✓ | ✓ | ||||||||
quotation.create | ✓ | ✓ | |||||||||
quotation.edit | ✓ | ||||||||||
quotation.approve | ✓ | ||||||||||
quotation.delete | ✓ | ||||||||||
| Requisitions | |||||||||||
requisition.view | ✓ | ✓ | ✓ | ||||||||
requisition.create | ✓ | ✓ | |||||||||
requisition.edit | ✓ | ||||||||||
requisition.approve | ✓ | ✓ | |||||||||
requisition.convertToPurchase | ✓ | ✓ | |||||||||
requisition.approve.hod | |||||||||||
requisition.approve.finance | |||||||||||
requisition.approve.gm | |||||||||||
requisition.approve.md | |||||||||||
| Fleet | |||||||||||
fleet.view | ✓ | ✓ | ✓ | ||||||||
fleet.manage | ✓ | ||||||||||
| Containers | |||||||||||
container.view | ✓ | ✓ | |||||||||
container.create | ✓ | ✓ | |||||||||
container.edit | ✓ | ✓ | |||||||||
container.delete | ✓ | ||||||||||
| Workshop | |||||||||||
workshop.view | ✓ | ✓ | |||||||||
workshop.manage | ✓ | ||||||||||
| Clearing | |||||||||||
clearing.view | ✓ | ✓ | ✓ | ✓ | |||||||
clearing.manage | ✓ | ✓ | |||||||||
| Other | |||||||||||
vendor.manage | ✓ | ✓ | ✓ | ||||||||
route.manage | ✓ | ✓ | |||||||||
report.view | ✓ | ✓ | ✓ | ✓ | |||||||
user.manage | ✓ | ||||||||||
settings.manage | ✓ | ||||||||||
billing.manage | ✓ | ||||||||||
session.manage | ✓ | ||||||||||
| Currency | |||||||||||
currency.view | ✓ | ✓ | ✓ | ✓ | |||||||
currency.manage | ✓ | ✓ | ✓ | ||||||||
| Accounting | |||||||||||
accounts.view | ✓ | ✓ | ✓ | ||||||||
accounts.manage | ✓ | ||||||||||
gl.view | ✓ | ✓ | ✓ | ||||||||
gl.post | ✓ | ✓ | |||||||||
gl.void | ✓ | ✓ | |||||||||
financial.view | ✓ | ✓ | ✓ | ||||||||
bank.view | ✓ | ✓ | |||||||||
bank.manage | ✓ | ||||||||||
bank.reconcile | ✓ | ✓ | |||||||||
posting.manage | ✓ | ✓ | |||||||||
| Items & Purchasing | |||||||||||
items.view | ✓ | ✓ | ✓ | ||||||||
items.manage | ✓ | ✓ | |||||||||
items.categories.manage | ✓ | ||||||||||
purchase.view | ✓ | ✓ | ✓ | ||||||||
purchase.create | ✓ | ✓ | ✓ | ||||||||
purchase.edit | ✓ | ✓ | |||||||||
purchase.approve | ✓ | ✓ | |||||||||
purchase.delete | ✓ | ✓ | |||||||||
| Point of Sale | |||||||||||
pos.sell | ✓ | ✓ | ✓ | ✓ | |||||||
pos.void | ✓ | ✓ | |||||||||
pos.void.posted | ✓ | ✓ | |||||||||
pos.register.open | ✓ | ✓ | ✓ | ✓ | |||||||
pos.register.close | ✓ | ✓ | ✓ | ✓ | |||||||
pos.reports.view | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||||
pos.reports.viewFinancials | ✓ | ✓ | ✓ | ✓ | |||||||
pos.reports.reconcile | ✓ | ✓ | |||||||||
pos.audit.view | ✓ | ||||||||||
stock.adjust | ✓ | ✓ | |||||||||
branch.view | ✓ | ✓ | |||||||||
branch.manage | ✓ | ✓ | |||||||||
branch.viewAll | ✓ | ||||||||||
branch.delete | ✓ | ||||||||||
| Hotel Management | |||||||||||
room.view | ✓ | ✓ | |||||||||
room.create | ✓ | ||||||||||
room.edit | ✓ | ||||||||||
room.checkin | ✓ | ✓ | |||||||||
room.checkout | ✓ | ✓ | |||||||||
reservation.view | ✓ | ✓ | |||||||||
reservation.create | ✓ | ✓ | |||||||||
reservation.edit | ✓ | ✓ | |||||||||
reservation.cancel | ✓ | ✓ | |||||||||
housekeeping.view | ✓ | ✓ | |||||||||
housekeeping.update | ✓ | ✓ | |||||||||
folio.view | ✓ | ✓ | |||||||||
folio.charge | ✓ | ✓ | |||||||||
folio.close | ✓ | ✓ | |||||||||
| Diesel Yard | |||||||||||
fuel.view | ✓ | ✓ | ✓ | ✓ | |||||||
fuel.issue | ✓ | ✓ | |||||||||
fuel.reports.view | ✓ | ✓ | ✓ | ||||||||
| Spare Parts | |||||||||||
part.view | ✓ | ✓ | ✓ | ✓ | |||||||
part.issue | ✓ | ✓ | |||||||||
part.reports.view | ✓ | ✓ | ✓ | ||||||||
| Trading (Purchase & Sales Orders) | |||||||||||
po.view | ✓ | ✓ | ✓ | ||||||||
po.create | ✓ | ✓ | |||||||||
po.receive | ✓ | ✓ | |||||||||
po.cancel | ✓ | ✓ | |||||||||
so.view | ✓ | ✓ | ✓ | ||||||||
so.create | ✓ | ✓ | |||||||||
so.convert | ✓ | ✓ | |||||||||
so.cancel | ✓ | ✓ | |||||||||
| Driver Allowances | |||||||||||
allowance.view | ✓ | ✓ | ✓ | ||||||||
allowance.create | ✓ | ✓ | |||||||||
| Internal Supplies | |||||||||||
supplies.request | ✓ | ✓ | ✓ | ✓ | |||||||
supplies.authorize | ✓ | ✓ | |||||||||
supplies.reports.view | ✓ | ✓ | ✓ | ✓ | |||||||
| Student Hostel | |||||||||||
unit.view | ✓ | ✓ | |||||||||
unit.create | ✓ | ||||||||||
unit.edit | ✓ | ||||||||||
occupant.view | ✓ | ✓ | |||||||||
occupant.create | ✓ | ||||||||||
occupant.edit | ✓ | ||||||||||
lease.view | ✓ | ✓ | |||||||||
lease.create | ✓ | ||||||||||
lease.edit | ✓ | ||||||||||
lease.terminate | ✓ | ||||||||||
| Fixed Assets | |||||||||||
asset.view | ✓ | ✓ | |||||||||
asset.create | ✓ | ✓ | |||||||||
asset.edit | ✓ | ✓ | |||||||||
asset.delete | ✓ | ✓ | |||||||||
asset.depreciate | ✓ | ✓ | |||||||||
asset.dispose | ✓ | ✓ | |||||||||
| Platform Modules | |||||||||||
modules.view | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||
modules.request | ✓ | ||||||||||
modules.manage | ✓ | ||||||||||
| Backup | |||||||||||
backup.view | ✓ | ||||||||||
backup.create | ✓ | ||||||||||
backup.download | ✓ | ||||||||||
backup.restore | |||||||||||
| VFD Fiscalization | |||||||||||
vfd.view | ✓ | ✓ | ✓ | ||||||||
vfd.manage | ✓ | ||||||||||
| HR & Payroll | |||||||||||
employee.view | ✓ | ✓ | ✓ | ||||||||
employee.create | ✓ | ✓ | |||||||||
employee.edit | ✓ | ✓ | |||||||||
employee.delete | ✓ | ||||||||||
leave.view | ✓ | ✓ | ✓ | ||||||||
leave.create | ✓ | ✓ | |||||||||
leave.edit | ✓ | ✓ | |||||||||
leave.approve | ✓ | ✓ | |||||||||
payroll.view | ✓ | ✓ | |||||||||
payroll.run | ✓ | ✓ | |||||||||
payroll.approve | ✓ | ✓ | |||||||||
payroll.void | ✓ | ||||||||||
payslip.view.all | ✓ | ✓ | |||||||||
payroll.settings.manage | ✓ | ✓ | |||||||||
payroll.reports.view | ✓ | ✓ | ✓ | ||||||||
payroll.export | ✓ | ✓ | |||||||||
attendance.view | ✓ | ✓ | |||||||||
attendance.create | ✓ | ✓ | |||||||||
attendance.edit | ✓ | ✓ | |||||||||
loan.view | ✓ | ✓ | |||||||||
loan.manage | ✓ | ✓ |
backup.restore is not granted to any role by default — including Tenant Admin. It must be explicitly assigned via the Roles & Permission Matrix inside Settings → Users & Access. All four backup permissions (backup.view/create/download/restore) are also effectively locked to the Tenant Admin role specifically on the backend, regardless of what the matrix shows for other roles — see Backup & Restore → for the full explanation.
Permission descriptions
| Permission | Description |
|---|---|
dashboard.view | Access the main dashboard |
customer.view/create/edit/delete | Manage customer records |
job.view/create/edit/delete | Manage freight jobs. job.edit is reserved for a future job-editing feature — there's no UI action it gates today, so it has no visible effect either way. |
trip.view/create/edit/delete | Manage truck trips |
trip.assign | Assign trucks and drivers to trips |
invoice.view/create/edit/delete | Manage invoices |
invoice.approve | Approve and post a sales invoice, or reject it with a reason — only matters when Settings → Invoicing & Tax → Invoice Approval is turned on. Without it, a user who creates an invoice can only submit it for approval |
expense.view/create/edit/delete | Manage expenses |
expense.approve | Approve or reject expense requests |
expense.categories.manage | Add, rename, and remove the operational and general expense category lists used across Expenses, Purchase Invoices, Items, and Posting Setup |
expense.cashout.create | Record cash taken from a POS register during a shift (the Cash Out button on Checkout, or a Store-till expense on the regular Expense form) — posts immediately, no approval needed unless the tenant has turned on Settings → Point of Sale → Cashier Expense Approval. Editing one afterward still requires expense.edit |
expense.editStore | When editing an expense, change which store's till (or no store) it counts against — including an already-closed register session |
expense.void | Reverse an approved or till-linked expense after the fact, with a reason. The record is kept for audit but drops out of till, Profit & Loss, and VAT totals |
quotation.view/create/edit/delete | Manage client quotations |
quotation.approve | Accept, reject, or convert quotations to jobs or invoices |
requisition.view/create/edit | Manage cash and purchase requisitions — requisition.edit allows editing at any status; editing after approvals exist restarts the approval chain unless done by the currently pending approver |
requisition.approve | A legacy, generic permission still shown in the matrix — holding it alone does not grant approval authority at any stage of the requisition chain. See the four stage-specific permissions below instead |
requisition.approve.hod | Approve or reject at the Head of Department stage — scoped to the approver's own department (set on their Team Directory profile); a requisition from a different department won't show as pending for them. Not granted to any role by default — grant it per person via Settings → Users & Access → Approval Authority |
requisition.approve.finance | Approve or reject at the Finance Department stage — tenant-wide, not department-scoped. Not granted to any role by default — grant via Approval Authority |
requisition.approve.gm | Approve or reject at the General Manager stage — tenant-wide. Not granted to any role by default — grant via Approval Authority |
requisition.approve.md | Approve or reject at the Managing Director stage, the final approval step — tenant-wide. Not granted to any role by default — grant via Approval Authority |
requisition.convertToPurchase | Turn an approved (MD Approved) requisition into a real Draft vendor bill, pre-filled from its line items — see Requisitions → Converting to a Purchase Invoice. A more consequential action than editing a requisition, so it's a separate permission |
fleet.view | View vehicle and driver records |
fleet.manage | Add, edit, and manage fleet records |
container.view/create/edit/delete | Manage container tracking cards |
workshop.view | View maintenance and workshop records |
workshop.manage | Log and manage service records for fleet vehicles |
clearing.view | View customs clearing declarations |
clearing.manage | Create, edit, and advance clearing declarations |
vendor.manage | Manage supplier and vendor records |
route.manage | Manage standard route definitions |
report.view | Access financial and operational reports |
user.manage | Create and manage user accounts |
settings.manage | Full access to the Settings page — branding, invoicing/tax, numbering, integrations (SMS/email/VFD/WhatsApp/MCP AI assistant access), notifications, and system configuration. Also governs the MCP Server panel, including its Read Only / Read & Write access mode |
billing.manage | Access billing and subscription settings |
session.manage | Open Settings → Users & Access → Live Sessions — see who is signed in (device, login time, last active) and end another user's session |
modules.view | See which platform modules are active |
modules.request | See the links for requesting new modules or upgrades |
modules.manage | Switch a module your company is already licensed for on or off from the Platform Modules page. It can't add a module you aren't licensed for — eSecured does that |
backup.view | View the backup list in Settings → System ("Data Fortress & Backup") |
backup.create | Create a manual backup |
backup.download | Download a backup file |
backup.restore | Restore data from a backup — explicit grant required |
currency.view | View active currencies and exchange rates |
currency.manage | Add currencies, fetch or manually set exchange rates |
accounts.view | View the Chart of Accounts |
accounts.manage | Create, edit, and block accounts in the Chart of Accounts |
gl.view | View General Ledger entries |
gl.post | Create and post journal entries |
gl.void | Void draft journal entries |
financial.view | Access financial reports (P&L, Balance Sheet, Trial Balance) |
bank.view | View bank accounts and transaction history |
bank.manage | Add and edit bank accounts |
bank.reconcile | Perform bank reconciliation |
posting.manage | Configure Posting Setup — GL account mappings for auto-posting |
items.view | View the Items & Product Catalog |
items.manage | Create, edit, activate/deactivate, and delete catalog items |
items.categories.manage | Edit the item category list (Settings → Invoicing & Tax → Item Categories) and the POS Profiles in Settings → Point of Sale |
purchase.view | View purchase invoices (vendor bills) |
purchase.create | Create new draft vendor bills |
purchase.edit | Edit draft vendor bills |
purchase.approve | Approve bills (triggers GL posting), mark as paid, void |
purchase.delete | Delete draft vendor bills |
pos.sell | Ring up sales at the Checkout → till |
pos.void | Void or refund a completed sale, reversing its stock and GL effects |
pos.void.posted | Void an older, already-posted sale from POS Reports (for returns and exchanges), not just the sale just rung up at Checkout. Also lets you clear the reminder to void a fiscalized sale on the TRA portal |
pos.register.open | Start a till shift with an opening cash float |
pos.register.close | End a till shift, count closing cash, and view the till Z-report → variance |
pos.reports.view | Open POS Reports → and see the Sales tab. The Expenses tab also needs expense.view, and the Inventory tab needs items.view; the other tabs need the permissions below |
pos.reports.viewFinancials | View the financially-sensitive tabs of POS Reports — Stock Movement, Register Sessions (till cash positions), Profit & Loss (Cost of Goods Sold, Gross/Net Profit), and Payment Method Reconciliation. Requires pos.reports.view too. A POS Cashier holds pos.reports.view but not this — Sales and Expenses only |
pos.reports.reconcile | Record the amount actually collected on a M-Pesa/Airtel Money/bank statement against a day's till sales on the Reconciliation tab. Requires pos.reports.viewFinancials too |
pos.audit.view | View the POS Audit Trail → — voided sales, stock adjustments, register variances, stock transfer approvals/voids, and store deactivations. Deliberately separate from pos.reports.view — not granted to POS Manager by default |
stock.adjust | Manually correct stock counts outside of a sale or purchase receipt — a deliberately separate, loss-prevention-sensitive permission |
branch.view | See the list of stores, branches, and properties (Settings → Company) |
branch.manage | Add, edit, deactivate, and set the default store, branch, or property |
branch.viewAll | See checkout, reports, and stock across every store — not just the one you're assigned to. Not granted to POS Manager by default; a store manager is scoped to their own assigned store unless explicitly given this |
branch.delete | Permanently remove a store, branch, or property. Only available once it has been deactivated |
room.view | See the room and room type register |
room.create | Add rooms and room types |
room.edit | Edit room and room type details |
room.checkin | Check a reservation in — flips the room to occupied and opens a guest folio |
room.checkout | Check a guest out — requires their folio balance to be settled first |
reservation.view | See the reservation/booking list |
reservation.create | Book a new reservation |
reservation.edit | Edit an existing reservation's details |
reservation.cancel | Cancel or mark a reservation as a no-show |
housekeeping.view | See each room's housekeeping status |
housekeeping.update | Mark a room Clean, Dirty, Inspected, or Out of Order |
folio.view | See a guest's running bill — room and other charges, payments, and balance |
folio.charge | Add a charge to an open guest folio |
folio.close | Settle and close a guest folio — required before check-out |
fuel.view | See the Diesel Yard → tank level and fuel issue history |
fuel.issue | Dispense fuel from the yard to a vehicle/trip |
fuel.reports.view | See Diesel Yard consumption/efficiency reporting per vehicle |
part.view | See the Spare Parts → stock level and issue history |
part.issue | Issue a part from stock to a vehicle/trip |
part.reports.view | See Spare Parts cost/usage reporting per vehicle |
po.view | See Purchase Orders →, trading inventory, and the Trading Dashboard and reports |
po.create | Create, edit (while Draft), and send Purchase Orders to suppliers |
po.receive | Receive goods against a Purchase Order, which adds them to stock |
po.cancel | Cancel a Purchase Order while it is still Draft or Sent |
so.view | See Sales Orders |
so.create | Create, edit (while Draft), and confirm Sales Orders |
so.convert | Convert a confirmed Sales Order into a draft invoice |
so.cancel | Cancel a Sales Order that hasn't been invoiced — see Trading → |
allowance.view | Shown in the matrix for driver allowances, but nothing in the app checks it yet |
allowance.create | Issue posho, transport, or accommodation allowances to a driver from a job. Only appears once Settings → Company → Driver Allowances is turned on |
supplies.request | Submit a supply request → for items from your own stock, and see the request list. Nothing is reserved or taken out of stock while the request is pending — stock only moves when it's authorized |
supplies.authorize | Authorize & Issue or Reject a pending supply request. Authorizing takes the items out of stock |
supplies.reports.view | Open Supply Reports and export the supply request list |
unit.view | See the Student Hostel → rental unit (room/bed) register |
unit.create | Add rental units to a property |
unit.edit | Edit a unit's rate, type, or status |
occupant.view | See the renter directory |
occupant.create | Register a new renter |
occupant.edit | Edit a renter's contact/guardian details |
lease.view | See lease agreements and their billing status |
lease.create | Create a new lease, assigning an occupant to a unit |
lease.edit | Edit a lease's rate, billing day, or dates |
lease.terminate | End or terminate a lease and dispose of its deposit |
asset.view | View the Fixed Asset register and detail pages |
asset.create | Register new fixed assets |
asset.edit | Edit asset details and log maintenance records |
asset.delete | Archive (soft-delete) assets |
asset.depreciate | Run monthly depreciation and create depreciation journals |
asset.dispose | Record asset disposals, write-offs, donations, and scrap |
vfd.view | See fiscalization status, fiscal codes, and TRA verification links on invoices |
vfd.manage | Configure VFD credentials and mode, test the connection, trigger Regenerate, and view Z-Reports — see TRA VFD Fiscalization → |
employee.view | View the employee register and profiles → |
employee.create | Add new employee records |
employee.edit | Edit employee profile and compensation details |
employee.delete | Archive (soft-delete) an employee record |
leave.view | View the leave request list → and each employee's leave balance |
leave.create | Log a leave request on behalf of an employee |
leave.edit | Edit or cancel a leave request while it is still Pending |
leave.approve | Approve or reject a pending leave request |
payroll.view | See the payroll run history → and its payslips |
payroll.run | Create a new payroll run and calculate it for the period |
payroll.approve | Approve a calculated payroll run, locking it against further edits. Also required to post an approved run to the General Ledger |
payroll.void | Void an approved or posted payroll run, reversing its General Ledger entries if any |
payslip.view.all | View and print any employee's payslip |
payroll.settings.manage | Edit PAYE bands, SDL/WCF/NHIF/HESLB statutory rates, and annual leave entitlement — see HR Settings →. A tenant that has never granted this can still reach the screen via the broader settings.manage |
payroll.reports.view | View the Payroll Register, Statutory Remittance, and Headcount reports →. Also granted implicitly by payroll.view or employee.view alone, kept for backward compatibility |
payroll.export | Export payroll journal entries in QuickBooks Online, Xero, or Microsoft Business Central format (the Journal Export tab in HR Reports) |
attendance.view | View the attendance register and daily grid |
attendance.create | Log attendance by hand or import it from a biometric device file |
attendance.edit | Edit or correct a logged attendance record |
loan.view | View staff loans →, their balances, and repayment history |
loan.manage | Issue, edit, write off, and delete staff loans |