Roles vs module access
How a member's role and their per-module access matrix work together — and why a matrix can narrow access but never widen it.
Two things decide what a team member can do:
- Role — a tier: Owner, Admin, Manager, Salesman or Cashier. It sets the ceiling.
- Module access (optional) — a matrix giving each section No access, View or View & edit. It can only narrow what the role allows.
A request must pass both checks. The server enforces them on every call, so hiding a section in the menu is backed by a real refusal, not just a missing link.
The role ladder#
| Role | Tier | In short |
|---|---|---|
Owner (SUPER_ADMIN) | 4 | The person who signed up. Always full access; cannot be edited or locked out. |
Admin (ADMIN) | 3 | Everything, including Team & Access and Settings. |
Manager (MANAGER) | 2 | Day-to-day work in every module, including POS. Can view but not change Team & Access and Settings. |
Salesman (SALESMAN) | 1 | Read-only. |
Cashier (CASHIER) | 1 | Read-only. |
Some sections are also hidden below a minimum role regardless of the matrix — for example POS, Reports and Finance need Manager, and Team & Access and Settings need Admin. See the table in How the app is organised.
Access without a matrix#
A member with no custom matrix gets the access their role implies:
| Role | Every module | Team & Access, Settings |
|---|---|---|
| Owner, Admin | View & edit | View & edit |
| Manager | View & edit | View |
| Cashier, Salesman | View | View |
The three presets#
The Team page offers three one-click levels. Each sets the matrix for every module at once:
| Preset | What it sets | Role it assigns |
|---|---|---|
| Read only — View records, change nothing | Every module View, except Team & Access and Settings which are No access (Dashboard is always at least View). | Cashier |
| Read & write — Edit day-to-day records | Every module View & edit, except Team & Access and Settings which are View. | Manager |
| Full access — Everything, including the team | Every module View & edit. | Admin |
Change any single cell and the member shows as Custom.
How a custom matrix sets the role#
Because every screen also checks the role, the app keeps the two consistent automatically when you save a matrix:
- View & edit on Team & Access or Settings → the member becomes Admin.
- Otherwise, View & edit on any module → Manager.
- Only View / No access everywhere → Cashier (read-only).
Those two modules carry a warning in the matrix because edit access to them is administrative power over the whole workspace.
Special modules#
| Module | Rule |
|---|---|
| Dashboard | Always at least View — the app cannot open without it. |
| Subscription (Billing) | The matrix only hides the menu item. Billing itself is never blocked, so a business can always reach checkout to pay and reactivate. |
| Notifications, Recycle bin, Support | Not controlled by the matrix; they keep their own role rules. |
When changes take effect#
Access is checked on every request, not stored in the member's session. A change applies within about a minute — and immediately on the member's next request in most cases — without them signing out.
Error messages#
| Message | Cause |
|---|---|
| You do not have access to this section. Ask an administrator to grant it. | The module is No access for this member. |
| You have view-only access to this section. | The module is View and the member tried to change something. |
| Your access level is read only — you can view records but not change them. | The member's role is Cashier or Salesman. |
| Insufficient permissions | The action needs a higher role (for example deleting from the Recycle bin needs Admin). |
| Access restricted — This section is limited to a higher role. | Shown in place of a page opened by URL above the member's role. |
Related#
Last updated 15/09/2026