OI Payments Docs
Admin dashboard

Roles & permissions

The seeded roles, the permission catalogue, and how grants can be global or scoped to specific apps.

Access in the dashboard is governed by role-based access control. A user holds one or more roles; each role carries a set of permissions; each permission can be granted globally or scoped to specific apps.

Seeded roles

Five roles ship by default:

RoleIntended forRoughly can
Super AdminPlatform ownersEverything, including user management. Bypasses permission checks.
AdminOperations leadsManage apps, users, refunds; read everything.
FinanceFinance teamRefund approval, reports, reconciliation, transaction export.
SupportSupport agentsRead transactions/refunds; initiate refunds within threshold.
ViewerRead-only stakeholdersRead-only access to transactions and reports.

You can also create custom roles (POST /admin/roles) composed from the permission catalogue.

Permission catalogue

Permissions are resource:action keys. The read-only catalogue is available at GET /admin/permissions. The ones you'll see most:

PermissionAllows
app:read / app:manageView / register & configure apps and credentials.
user:read / user:manageView / create, enable, disable users and assign roles.
payment:read / payment:exportSearch transactions / export them as CSV.
refund:readSearch refunds across apps.
refund:createInitiate a refund (and retry failed ones).
refund:approveRelease an above-threshold refund to the gateway.
report:readRead reports and reconciliation.
audit:readRead the audit log, webhook delivery log, and callback evidence.

Global vs app-scoped grants

A permission can be granted two ways:

  • Global — applies to every application (e.g. read all apps' payments).
  • App-scoped — applies only to named apps (e.g. approve refunds for app 5 only).

Cross-app search endpoints automatically narrow their results to the apps your grants cover. A Super Admin bypasses these checks entirely.

The system protects against locking yourself out: you cannot disable the last Super Admin (LAST_SUPER_ADMIN_PROTECTED).

Sensitive actions

User management and other sensitive actions require step-up re-auth and are written to the append-only audit log.

On this page