About Experience Engineering Projects Infrastructure Blog Contact
ERPNext & Frappe 🧩 9-Part Course · Part 2: UI, Users & Permissions

ERPNext Users, Roles & Permissions

Published: Aug 30, 2026

πŸ” Recap: the Permission Chain

Part 1's Users, Roles & Permission Flow section introduced the idea that ERPNext never checks a single "can this user do this?" flag β€” every allowed action is the output of a layered chain evaluated in order. This article goes deep on each link in that chain, one section at a time, so it's worth restating the whole shape up front before we zoom in:

Userthe login/auth record
↓
Roleone or more roles assigned to the User
↓
Role PermissionDocType-level: read/write/create/submit/cancel/delete/amend
↓
User Permissionrestricts the role's access to specific records, e.g. one Company
↓
Document PermissionDocument Share and workflow-state rules layered on top
↓
Allowed Action

Every section below maps onto exactly one link in that chain: user types and roles (link 1–2), the Role Permission Manager and User Permission tools (link 3–4), and Document Share plus workflow permissions (link 5).

πŸ‘€ User Types & Standard Roles

Two records get confused constantly by beginners because they sound related but serve different purposes. A User is a login/authentication record β€” it has an email, a password (or SSO identity), a set of assigned Roles, and it's what the framework checks on every request. An Employee is an HR master record β€” name, department, designation, reporting manager, joining date β€” that exists whether or not that person ever logs into the system. An Employee record can optionally be linked to a User record (so, for example, a Leave Application can resolve "whose leave is this" back to a login), but plenty of Employees in a real deployment (shop-floor staff, for instance) never get a User account at all, and plenty of Users (an external accountant, an API integration account) are not Employees.

ERPNext ships a set of standard roles that map to job function, all ultimately subordinate to System Manager, which has unrestricted administrative access to the whole site:

System Manager
β†’
Accounts Manager
β†’
Sales Manager
β†’
Purchase Manager
β†’
Stock Manager
β†’
HR Manager
β†’
Manufacturing Manager
β†’
Projects Manager
β†’
Employee

A User can hold several roles at once β€” a small-business bookkeeper might reasonably be both Accounts Manager and Sales User. Assigning roles one at a time gets tedious for a growing team, which is what a Role Profile solves: it's a named bundle of roles (e.g. "Regional Sales Rep" = Sales User + Stock User) that can be applied to a new User in one step instead of ticking every role individually, and updating the Role Profile later can cascade the change to everyone assigned it. Individual role assignment is still the right tool for a one-off exception β€” granting a single extra role to one User without changing the bundle everyone else shares.

πŸ›‚ Role Permission Manager vs User Permission Manager

These two tools β€” plus Document Share and workflow permissions β€” are easy to mix up because they all say "permission" in the name, but they operate at completely different levels of the chain:

ToolGrants access at the level ofExample
Role Permission ManagerDocType level β€” read/write/create/submit/cancel/delete/amend, per roleSales User role can create Sales Order but not submit it
User PermissionRecord level β€” restricts a user to specific documents within a DocType they already have role access toRestrict a regional sales rep to only see customers in their Territory
Document ShareOne specific document, ad-hoc, bypassing normal role rulesShare one confidential Purchase Order with an auditor who has no Purchase role
Workflow permissionState-gated β€” only a specific role can transition a document out of a given workflow stateOnly Department Manager role can move a Purchase Request from Pending to Approved

The order matters: Role Permission decides whether the door to a DocType exists at all for that role; User Permission narrows which rooms behind that door a specific user can enter; Document Share and workflow permissions are exceptions layered on top of both, for the "just this one document" and "just at this stage" cases respectively.

πŸ–±οΈ Annotated UI Tour

Almost the entire application lives inside one interface, called the Desk. Rather than a specific screenshot β€” which would go stale the moment the UI is restyled in a future version β€” the table below is an illustrative annotation list of the elements a new user runs into first, in the rough order they'll notice them:

#ElementWhat a beginner should notice first
1SidebarLists the modules and workspaces this user's roles give them access to β€” it's effectively a personalized menu, not a fixed one
2WorkspaceThe landing page after clicking a sidebar item β€” shortcuts, charts, and links curated for that module or role
3Awesome Bar (global search)Type a DocType name, a document number, or even a command like "new sales invoice" β€” it's usually faster than navigating menus
4User menuProfile, account settings, and where to switch between Desk and any customer-facing portal
5NotificationsAssignments, mentions, and document events targeted specifically at the logged-in user
6Document List (List View)The default entry point into any DocType β€” a filterable, sortable table of its records
7FiltersStandard and saved filters on any list β€” the difference between scrolling through everything and finding one record
8Actions (Save / Submit / Cancel / Print)Document-level buttons on a form β€” which of these actually appear depends entirely on the current user's permissions
9Reports linkAggregate/spreadsheet-style views over a DocType's data, available only for DocTypes the user has read access to
πŸ’‘ Why no screenshots: this guide deliberately uses text annotation instead of real UI screenshots β€” exact menu positions, icon styling, and even element names shift between ERPNext versions and themes, so a screenshot captured today can mislead a reader on a different version. Open your own installed site alongside this table and match each numbered element to what you actually see; if a label has moved, the underlying purpose described here almost always hasn't.

πŸ“‹ List View, Form View & Report View

Three view types cover almost every screen in ERPNext. List View shows many documents of one DocType as a filterable table. Form View opens exactly one document for reading, editing, or submitting. Report View shows many documents again, but grouped, aggregated, and pivotable rather than row-by-row β€” the same underlying data, read for a different purpose.

List Viewdata entry clerk β€” finds and opens records
β†’
Form Viewapprover β€” reviews and submits one record
β†’
Report Viewanalyst β€” aggregates many records
β†’
Dashboardmanager β€” charts the aggregation

That progression isn't a strict pipeline every user walks through β€” it's a description of who tends to live in which view. A clerk mostly works in List and Form View all day; a manager mostly checks a Dashboard and drills into Report View when a number looks wrong.

πŸ™‹ Normal User Features

A "normal" (non-admin) ERPNext user is not a distinct product tier β€” it's simply a User whose assigned roles happen not to include System Manager or another administrative role. What that user can typically do:

CapabilityCondition
Log inAccount must be enabled
View assigned Workspace(s)Determined by assigned roles
Create documentsRequires Create permission on that DocType via a role
Edit / submit documentsRequires Write / Submit permission respectively β€” these are separate grants
Use global search (Awesome Bar)Always available; results are still filtered by the user's read permissions
Apply filters on a listAlways available on any list the user can already view
Run reportsRequires read access to the underlying DocType(s)
Print / export documentsRequires access to the document plus print/export enabled for that DocType
Receive notificationsAlways, scoped to what's relevant to that user
Add commentsOn any document the user can already view
Add attachmentsOn documents the user can view/edit, subject to attachment settings
See documents assigned to them (ToDo)Always β€” assignments are personal and don't require broader role access
⚠️ There is no separate "normal user" permission model. What a user can or cannot do is entirely a function of their assigned roles β€” the same permission chain from the recap above governs every account on the site, including the one you're using right now to explore your own trial installation. "Normal user" just describes a role assignment, not a different code path.

πŸ›‘οΈ System Manager / Administrator Features

The table below shows the typical shape of how three tiers of access differ β€” not a fixed spec:

FeatureNormal UserManager-level RoleSystem Manager
Create Documentβœ“βœ“βœ“
SubmitBased on permissionβœ“βœ“
ApproveUsually noβœ“βœ“
User ManagementNoLimitedβœ“
Role ManagementNoNo–Limitedβœ“
Customize DocTypeNoLimitedβœ“
System SettingsNoLimitedβœ“
Developer Mode toggleNoNoβœ“
⚠️ Not a guarantee. Exact access always depends on the specific roles and permission rules configured on a given site β€” this table shows the typical/default shape most fresh installations start from, not a hard-coded ceiling. A site's System Manager can grant a "Manager-level" role more (or less) than shown here, and it's common for real deployments to do exactly that.

πŸ§‘β€πŸ’» Developer Mode (Brief)

Developer Mode is a site-wide setting, not a role or permission in the usual sense β€” it's typically toggled by a System Manager with server/config access. With it on, changes to DocTypes, Reports, and Pages that would normally live only as rows in the database get exported as JSON/Python files on disk instead, which is what makes them trackable in version control and shippable as part of a custom app. This one setting is the hinge between "customizing a site" and "building a custom Frappe app" β€” the full workflow it enables (creating DocTypes as code, writing controllers, packaging an app) is covered in depth in Part 7: Custom Frappe App Development.

⚠️ Common Permission Mistakes

MistakeWhy it bites you
Granting System Manager broadly "to save time"Destroys the audit value of roles β€” once everyone is effectively an admin, "who can do X" stops being an answerable question
Confusing Role Permission with User PermissionAssuming a role grant alone restricts a user to their own records β€” it doesn't; without a User Permission, a role that can read a DocType can read every record of it
Forgetting Cancel/Amend need their own grantWrite permission does not imply Cancel or Amend on submitted documents β€” these are separate checkboxes in the Role Permission Manager and are easy to leave unset
Only testing as AdministratorAdministrator/System Manager bypasses most permission checks, so a permission bug for a restricted role can sit invisible until a real user hits it in production
Over-customizing Role Permission Manager for approval chainsA static role check can't express "only the document's own reporting manager may approve it" β€” that needs a stateful Workflow, not a bigger permission matrix

➑️ What's Next

With the permission chain now covered link by link, Part 3: Modules & Business Workflows goes module by module through the actual business documents these roles and permissions get applied to β€” Selling, Buying, Stock, Manufacturing, HR, and the rest. If you landed on this article first, Part 1: The Architecture Guide covers the foundational architecture, installation, and database concepts this series builds on.

↑