Skip to content

RBAC matrix

Generated from packages/auth/src/rbac.ts at build time. Cannot drift from code.

A check () means the role has the action. The Product column tags whether an action is bound to one product (Payroll / Bookkeeping) or is product-neutral (client / template / staff admin surfaces).

ActionProductCLIENT_SUBMITTERCLIENT_APPROVERPAYROLL_EXECUTIVEPAYROLL_LEADBOOKKEEPERSENIOR_ACCOUNTANTPLATFORM_ADMIN
SUBMIT_INTAKEPAYROLL
APPROVE_PAYROLLPAYROLL
VIEW_CYCLEPAYROLL
MANAGE_CYCLEPAYROLL
RESOLVE_ISSUEPAYROLL
GENERATE_EXPORTPAYROLL
UPLOAD_OUTPUTPAYROLL
REQUEST_APPROVALPAYROLL
OVERRIDE_ISSUEPAYROLL
VIEW_BATCHBOOKKEEPING
MANAGE_BATCHBOOKKEEPING
APPROVE_JOURNALBOOKKEEPING
GENERATE_UPLOAD_FILEBOOKKEEPING
RECONCILE_BANK_TXNBOOKKEEPING
OVERRIDE_JOURNAL_FLAGBOOKKEEPING
UPLOAD_TRIAL_BALANCEBOOKKEEPING
GENERATE_FINANCIAL_STATEMENTBOOKKEEPING
EXPORT_FINANCIAL_STATEMENTBOOKKEEPING
MANAGE_CLIENTS
MANAGE_TEMPLATES
MANAGE_STAFF

How to read this

  • A role can perform an action across the platform if it has the cell checked.
  • An action's product scope (when not ) means staff can only use it within that product. A Bookkeeper with MANAGE_CLIENTS (product-neutral) can edit any client; a Payroll Executive with VIEW_CYCLE (Payroll-scoped) cannot view bookkeeping batches even if the route doesn't 404.
  • "Manage" actions imply read access; you don't need both VIEW_CYCLE and MANAGE_CYCLE together.

Internal use only — BreezyCorp