Skip to main content

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.

Module-scoped permissions

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.

Dashboard widgets are permission-gated too

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:

WidgetRequires
Total Revenue, Net Profit, Estimated VAT Positionfinancial.view
Expenses (Approved), Pending Approvals stat, expense-type notificationsexpense.view
Active Jobs Profitabilityjob.view
Vendor Portfolio Summaryvendor.manage
"Today at a Glance" itemsthe matching entity permission (trip.view, requisition.view, job.view, invoice.view, gl.view, clearing.view, quotation.view)
Quick Action buttonsthe create/manage permission for their destination (e.g. job.create, gl.post)
Expiry-type compliance notificationsfleet.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​

PermissionTenant AdminOperationsAccountantDriverRead-onlyMarketingPOS ManagerPOS CashierFront DeskHousekeepingHR 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✓✓
warning

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​

PermissionDescription
dashboard.viewAccess the main dashboard
customer.view/create/edit/deleteManage customer records
job.view/create/edit/deleteManage 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/deleteManage truck trips
trip.assignAssign trucks and drivers to trips
invoice.view/create/edit/deleteManage invoices
invoice.approveApprove 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/deleteManage expenses
expense.approveApprove or reject expense requests
expense.categories.manageAdd, rename, and remove the operational and general expense category lists used across Expenses, Purchase Invoices, Items, and Posting Setup
expense.cashout.createRecord 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.editStoreWhen editing an expense, change which store's till (or no store) it counts against — including an already-closed register session
expense.voidReverse 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/deleteManage client quotations
quotation.approveAccept, reject, or convert quotations to jobs or invoices
requisition.view/create/editManage 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.approveA 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.hodApprove 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.financeApprove 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.gmApprove or reject at the General Manager stage — tenant-wide. Not granted to any role by default — grant via Approval Authority
requisition.approve.mdApprove 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.convertToPurchaseTurn 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.viewView vehicle and driver records
fleet.manageAdd, edit, and manage fleet records
container.view/create/edit/deleteManage container tracking cards
workshop.viewView maintenance and workshop records
workshop.manageLog and manage service records for fleet vehicles
clearing.viewView customs clearing declarations
clearing.manageCreate, edit, and advance clearing declarations
vendor.manageManage supplier and vendor records
route.manageManage standard route definitions
report.viewAccess financial and operational reports
user.manageCreate and manage user accounts
settings.manageFull 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.manageAccess billing and subscription settings
session.manageOpen Settings → Users & Access → Live Sessions — see who is signed in (device, login time, last active) and end another user's session
modules.viewSee which platform modules are active
modules.requestSee the links for requesting new modules or upgrades
modules.manageSwitch 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.viewView the backup list in Settings → System ("Data Fortress & Backup")
backup.createCreate a manual backup
backup.downloadDownload a backup file
backup.restoreRestore data from a backup — explicit grant required
currency.viewView active currencies and exchange rates
currency.manageAdd currencies, fetch or manually set exchange rates
accounts.viewView the Chart of Accounts
accounts.manageCreate, edit, and block accounts in the Chart of Accounts
gl.viewView General Ledger entries
gl.postCreate and post journal entries
gl.voidVoid draft journal entries
financial.viewAccess financial reports (P&L, Balance Sheet, Trial Balance)
bank.viewView bank accounts and transaction history
bank.manageAdd and edit bank accounts
bank.reconcilePerform bank reconciliation
posting.manageConfigure Posting Setup — GL account mappings for auto-posting
items.viewView the Items & Product Catalog
items.manageCreate, edit, activate/deactivate, and delete catalog items
items.categories.manageEdit the item category list (Settings → Invoicing & Tax → Item Categories) and the POS Profiles in Settings → Point of Sale
purchase.viewView purchase invoices (vendor bills)
purchase.createCreate new draft vendor bills
purchase.editEdit draft vendor bills
purchase.approveApprove bills (triggers GL posting), mark as paid, void
purchase.deleteDelete draft vendor bills
pos.sellRing up sales at the Checkout → till
pos.voidVoid or refund a completed sale, reversing its stock and GL effects
pos.void.postedVoid 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.openStart a till shift with an opening cash float
pos.register.closeEnd a till shift, count closing cash, and view the till Z-report → variance
pos.reports.viewOpen 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.viewFinancialsView 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.reconcileRecord 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.viewView 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.adjustManually correct stock counts outside of a sale or purchase receipt — a deliberately separate, loss-prevention-sensitive permission
branch.viewSee the list of stores, branches, and properties (Settings → Company)
branch.manageAdd, edit, deactivate, and set the default store, branch, or property
branch.viewAllSee 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.deletePermanently remove a store, branch, or property. Only available once it has been deactivated
room.viewSee the room and room type register
room.createAdd rooms and room types
room.editEdit room and room type details
room.checkinCheck a reservation in — flips the room to occupied and opens a guest folio
room.checkoutCheck a guest out — requires their folio balance to be settled first
reservation.viewSee the reservation/booking list
reservation.createBook a new reservation
reservation.editEdit an existing reservation's details
reservation.cancelCancel or mark a reservation as a no-show
housekeeping.viewSee each room's housekeeping status
housekeeping.updateMark a room Clean, Dirty, Inspected, or Out of Order
folio.viewSee a guest's running bill — room and other charges, payments, and balance
folio.chargeAdd a charge to an open guest folio
folio.closeSettle and close a guest folio — required before check-out
fuel.viewSee the Diesel Yard → tank level and fuel issue history
fuel.issueDispense fuel from the yard to a vehicle/trip
fuel.reports.viewSee Diesel Yard consumption/efficiency reporting per vehicle
part.viewSee the Spare Parts → stock level and issue history
part.issueIssue a part from stock to a vehicle/trip
part.reports.viewSee Spare Parts cost/usage reporting per vehicle
po.viewSee Purchase Orders →, trading inventory, and the Trading Dashboard and reports
po.createCreate, edit (while Draft), and send Purchase Orders to suppliers
po.receiveReceive goods against a Purchase Order, which adds them to stock
po.cancelCancel a Purchase Order while it is still Draft or Sent
so.viewSee Sales Orders
so.createCreate, edit (while Draft), and confirm Sales Orders
so.convertConvert a confirmed Sales Order into a draft invoice
so.cancelCancel a Sales Order that hasn't been invoiced — see Trading →
allowance.viewShown in the matrix for driver allowances, but nothing in the app checks it yet
allowance.createIssue posho, transport, or accommodation allowances to a driver from a job. Only appears once Settings → Company → Driver Allowances is turned on
supplies.requestSubmit 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.authorizeAuthorize & Issue or Reject a pending supply request. Authorizing takes the items out of stock
supplies.reports.viewOpen Supply Reports and export the supply request list
unit.viewSee the Student Hostel → rental unit (room/bed) register
unit.createAdd rental units to a property
unit.editEdit a unit's rate, type, or status
occupant.viewSee the renter directory
occupant.createRegister a new renter
occupant.editEdit a renter's contact/guardian details
lease.viewSee lease agreements and their billing status
lease.createCreate a new lease, assigning an occupant to a unit
lease.editEdit a lease's rate, billing day, or dates
lease.terminateEnd or terminate a lease and dispose of its deposit
asset.viewView the Fixed Asset register and detail pages
asset.createRegister new fixed assets
asset.editEdit asset details and log maintenance records
asset.deleteArchive (soft-delete) assets
asset.depreciateRun monthly depreciation and create depreciation journals
asset.disposeRecord asset disposals, write-offs, donations, and scrap
vfd.viewSee fiscalization status, fiscal codes, and TRA verification links on invoices
vfd.manageConfigure VFD credentials and mode, test the connection, trigger Regenerate, and view Z-Reports — see TRA VFD Fiscalization →
employee.viewView the employee register and profiles →
employee.createAdd new employee records
employee.editEdit employee profile and compensation details
employee.deleteArchive (soft-delete) an employee record
leave.viewView the leave request list → and each employee's leave balance
leave.createLog a leave request on behalf of an employee
leave.editEdit or cancel a leave request while it is still Pending
leave.approveApprove or reject a pending leave request
payroll.viewSee the payroll run history → and its payslips
payroll.runCreate a new payroll run and calculate it for the period
payroll.approveApprove a calculated payroll run, locking it against further edits. Also required to post an approved run to the General Ledger
payroll.voidVoid an approved or posted payroll run, reversing its General Ledger entries if any
payslip.view.allView and print any employee's payslip
payroll.settings.manageEdit 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.viewView the Payroll Register, Statutory Remittance, and Headcount reports →. Also granted implicitly by payroll.view or employee.view alone, kept for backward compatibility
payroll.exportExport payroll journal entries in QuickBooks Online, Xero, or Microsoft Business Central format (the Journal Export tab in HR Reports)
attendance.viewView the attendance register and daily grid
attendance.createLog attendance by hand or import it from a biometric device file
attendance.editEdit or correct a logged attendance record
loan.viewView staff loans →, their balances, and repayment history
loan.manageIssue, edit, write off, and delete staff loans