Summary and recommendation
Expensify user management can be run manually, but complexity usually increases with role models, licensing gates, and offboarding dependencies. This guide gives the exact mechanics and where automation has the biggest impact.
Expensify organizes access across two levels: domain and policy. A Domain Admin controls SSO enforcement, domain group membership, and which policies domain members can access. Policy Admins manage day-to-day membership, approval workflows, and accounting integrations within a specific policy.
A single user can hold different roles across different policies simultaneously.
The Auditor role - read-only access to all policy reports - is only available on the Control plan. Collect plan customers have no equivalent read-only role for finance reviewers.
There are no custom role definitions; every app in your stack that relies on Expensify for expense data inherits these four fixed roles (Domain Admin, Policy Admin, Auditor, Employee) with no per-permission toggles available.
Quick facts
| Admin console path | expensify.com > Settings > Policies > [Policy Name] > Members (for policy-level management); Settings > Domains > [Domain Name] > Members (for domain-level management) |
| Admin console URL | Official docs |
| SCIM available | Yes |
| SCIM tier required | Control Plan |
| SSO prerequisite | Yes |
User types and roles
| Role | Permissions | Cannot do | Plan required | Seat cost | Watch out for |
|---|---|---|---|---|---|
| Domain Admin | Full control over the verified domain: manage domain members, enforce SSO, configure domain groups, set default policy, view all domain member accounts, manage SAML settings, and control which policies domain members can access. | Cannot approve or submit expense reports on behalf of other users; cannot access report content unless also a Policy Admin on the relevant policy. | Control plan (domain verification required) | $9/user/month (Control without Expensify Card) or $5/member/month (with Expensify Card); April 2025 flat per-member pricing applies | Domain Admin role is granted per domain, not per policy. A user must have a verified domain to access domain-level controls. Only one domain can be verified per Expensify account. |
| Policy Admin | Manage policy settings, invite/remove members from the policy, approve reports, configure approval workflows, set expense rules, connect accounting integrations, and export reports. | Cannot manage domain-level settings (SSO, domain groups) unless also a Domain Admin. Cannot delete another admin's account. | Collect or Control plan | Counts as an active member; billed at policy plan rate | A policy must always have at least one Policy Admin. Removing the last admin is blocked by the UI. |
| Auditor | Read-only access to all reports on the policy. Can view but not approve, edit, or export reports. | Cannot approve reports, change policy settings, invite or remove members, or access domain controls. | Control plan | Counts as an active member if they submit or have activity; billing behavior follows active member rules | Auditor role is only available on the Control plan. On Collect plan, this role does not exist. |
| Employee (Policy Member) | Submit expense reports, SmartScan receipts, use Expensify Card (if issued), chat via Expensify Chat, and view their own reports. | Cannot view other members' reports, change policy settings, approve reports (unless designated as an approver in the workflow), or manage billing. | Any paid plan (Collect or Control); free individual plans exist but lack policy features | Billed as active member if they have any activity in the billing period | An employee added to a policy but who never submits a report or takes action may still be counted as active depending on billing cycle. Expensify bills based on 'active members' not seats reserved. |
Permission model
- Model type: role-based
- Description: Expensify uses a fixed set of roles at two levels: domain-level (Domain Admin) and policy-level (Policy Admin, Auditor, Employee). Roles are assigned per policy; a user can be an Employee on one policy and a Policy Admin on another. There are no custom role definitions or granular permission toggles beyond these fixed roles.
- Custom roles: No
- Custom roles plan: Not documented
- Granularity: Coarse - four fixed roles with no per-permission customization. Approval workflow rules (multi-level, random, or manual approval) provide some behavioral customization within the Employee role but do not constitute custom permissions.
How to add users
- Log in to expensify.com as a Policy Admin or Domain Admin.
- Navigate to Settings > Policies > [Policy Name] > Members.
- Click 'Invite' in the Members tab.
- Enter the user's email address (or multiple addresses separated by commas).
- Select the role to assign: Employee, Policy Admin, or Auditor (Auditor only on Control plan).
- Optionally set a custom approval workflow for the new member.
- Click 'Invite'. The user receives an email invitation to join Expensify and the policy.
- If the user does not yet have an Expensify account, they are prompted to create one upon accepting the invitation.
Required fields: Email address of the invitee, Role selection (defaults to Employee if not changed)
Watch out for:
- Users must accept the invitation to become active; pending invitations still appear in the Members list.
- If domain control is enforced, users with the verified domain email are automatically added to the domain and may be auto-assigned to a default policy.
- Adding a user to a policy does not automatically grant them an Expensify Card; card issuance is a separate step.
- On the Control plan with SAML SSO enforced, new domain members may be auto-provisioned on first SSO login without a manual invite.
- Billing begins when a member becomes 'active' (submits a report, uses SmartScan, etc.) within the billing period, not at the moment of invitation.
| Bulk option | Availability | Notes |
|---|---|---|
| CSV import | Yes | Settings > Policies > [Policy Name] > Members > Invite > 'Import from CSV' option; CSV must contain at minimum an 'email' column |
| Domain whitelisting | Yes | Automatic domain-based user add |
| IdP provisioning | Yes | Control plan (SCIM via Okta only; must request activation via concierge@expensify.com; SAML SSO and domain verification required) |
How to remove or deactivate users
- Can delete users: No
- Delete/deactivate behavior: Expensify does not allow deletion of user accounts from the admin console. Admins can remove a member from a policy (which revokes their access to that policy's reports and settings) but the user's Expensify account itself persists. At the domain level, a Domain Admin can remove a user from the domain, which enforces SSO restrictions and removes domain group membership, but does not delete the account. Account deletion must be requested by the account holder directly through Expensify support.
- Log in as a Policy Admin or Domain Admin.
- Navigate to Settings > Policies > [Policy Name] > Members.
- Locate the member to remove.
- Click the remove/delete icon (trash icon) next to the member's name.
- Confirm the removal. The user loses access to the policy immediately.
- For domain-level removal: navigate to Settings > Domains > [Domain Name] > Members, locate the user, and click 'Remove'.
- If SAML SSO is enforced, also deprovision the user in the IdP (Okta or Entra ID) to prevent re-provisioning on next login.
| Data impact | Behavior |
|---|---|
| Owned records | Expense reports submitted by the removed member remain visible to Policy Admins on the policy. Historical reports are retained and accessible for audit and export purposes. |
| Shared content | Shared reports and receipts remain in the policy's report history. The removed user loses access to view or edit those reports from their account. |
| Integrations | Accounting integration exports (QuickBooks, Xero, NetSuite, Sage Intacct) that have already been completed are unaffected. Pending or draft reports belonging to the removed user may need to be reassigned or finalized before removal to avoid export gaps. |
| License freed | Removing a member from a policy stops future active-member billing for that user on that policy, effective the next billing cycle. Mid-cycle removals do not result in prorated refunds under annual subscription terms. |
Watch out for:
- Removing a user from a policy does not close or delete their Expensify account; they can still log in and use Expensify independently.
- If the user has open, unsubmitted, or unapproved reports at the time of removal, those reports remain in a pending state and must be handled by an admin.
- Under an annual subscription, the seat count is based on the number of active members at the subscription start; removing members mid-year does not reduce the committed seat count until renewal.
- If SAML SSO is enforced at the domain level, failing to also deprovision in the IdP may allow the user to re-authenticate and regain domain membership.
- Domain Admins cannot remove themselves from the domain without first assigning another Domain Admin.
License and seat management
| Seat type | Includes | Cost |
|---|---|---|
| Active Member – Collect Plan | Expense report submission, SmartScan, basic approval workflows, Expensify Card access (if issued), accounting integrations (limited) | $5/member/month with Expensify Card; $10/user/month without Expensify Card (pre-April 2025 pricing); April 2025 flat pricing: contact Expensify for current rates |
| Active Member – Control Plan | All Collect features plus multi-level approval workflows, Auditor role, SAML SSO, SCIM provisioning (via Okta), domain control, advanced accounting integrations (NetSuite, Sage Intacct), custom reporting | $9/user/month with Expensify Card; $18/user/month without Expensify Card (pre-April 2025 pricing); April 2025 flat pricing: contact Expensify for current rates |
| Individual / Free | 25 SmartScans/month, basic expense tracking, no policy features | Free (individual use only; not applicable to company policy management) |
- Where to check usage: Settings > Policies > [Policy Name] > Members (shows current member count); Settings > Account > Billing (shows active member count and current invoice)
- How to identify unused seats: Policy Admins can review the Members list and filter by last activity date. Members with no report submissions or activity in the current billing period may not be counted as 'active' for billing, but Expensify does not provide a built-in 'inactive member' report in the UI. Admins must manually cross-reference member list against submitted reports.
- Billing notes: Expensify bills based on 'active members' - users who take a billable action (submit a report, SmartScan a receipt, use the Expensify Card) within the billing period. Invited but inactive members are not billed. Annual subscriptions lock in a committed member count; exceeding that count results in overage charges at the per-member rate. Monthly subscriptions are billed at a higher per-member rate with no commitment. As of April 2025, Expensify moved to flat per-member pricing; bundling with the Expensify Card reduces the per-member cost. UK pricing: £5/member/month; Australia: A$8/member/month.
The cost of manual management
Expensify bills on active members - users who submit a report, SmartScan a receipt, or use the Expensify Card within the billing period. Invited but inactive members are not billed.
Annual subscriptions lock in a committed member count at the start of the term; removing members mid-year does not reduce that committed count or generate a prorated credit until renewal.
There is no built-in inactive member report in the UI. Admins must manually cross-reference the Members list against submitted reports to identify unused seats.
Expensify does not allow admins to delete user accounts - account deletion must be requested by the account holder directly through Expensify support, which creates a hard dependency on the departing employee during offboarding.
What IT admins are saying
The most consistent friction point reported by admins is SCIM activation: it requires a manual email to concierge@expensify.com and is not self-serve even on the Control plan. Teams expecting to configure automated provisioning at contract signing should factor in activation lead time.
SSO enforcement without SCIM creates a deprovisioning gap. Removing a user from the IdP does not automatically remove them from Expensify policies; a manual removal step in the Expensify admin console is still required unless SCIM is also active.
Admins who miss this step risk leaving former employees with residual policy access.
The absence of a prorated refund on annual seat reductions and the lack of an inactive member report are the two billing complaints that appear most frequently in community threads.
Common complaints:
- SCIM requires manual activation request via concierge@expensify.com and is not self-serve even on the Control plan.
- Account deletion is not available to admins; users must request deletion themselves, creating offboarding friction.
- No built-in inactive member report makes it difficult to identify and remove unused seats before billing cycles.
- Removing a member mid-year under an annual subscription does not reduce the committed seat count or provide a prorated refund.
- SAML SSO enforcement does not automatically deprovision users when removed from the IdP unless SCIM is also configured; manual removal in Expensify is still required.
- The Auditor role is restricted to the Control plan, meaning Collect plan customers have no read-only access option for finance reviewers.
- CSV import for bulk member invites requires a specific column format that is not prominently documented, leading to import errors.
- Domain verification is a prerequisite for SSO and SCIM, but the verification process can be slow if DNS propagation is delayed.
The decision
Manual administration is viable for teams under roughly 25–50 members with low turnover, or for organizations that cannot yet meet the Control plan and SAML prerequisites required for SCIM. The invite flow is straightforward, and bulk invites via comma-separated email addresses reduce per-user effort at onboarding.
Every app that handles expense data carries offboarding risk proportional to how long former employees retain access, and Expensify's architecture makes that window longer than most admins expect.
For any team where offboarding speed matters, the manual path carries real risk. The inability to delete accounts from the admin console, combined with the SSO-without-SCIM deprovisioning gap, means offboarding requires coordinated steps across Expensify, the IdP, and potentially Expensify support.
Teams on the Control plan with Okta already deployed should prioritize SCIM activation over manual workflows. The manual path remains a fallback for Collect plan customers and for organizations using an IdP other than Okta, where SCIM support is not confirmed.
Bottom line
Expensify's manual admin experience is functional but requires deliberate process design around two gaps: there is no admin-initiated account deletion, and SSO enforcement alone does not deprovision users from policies.
Every app that handles expense data carries offboarding risk proportional to how long former employees retain access, and Expensify's architecture makes that window longer than most admins expect.
Teams on the Control plan with Okta should treat SCIM activation as a prerequisite for any automated provisioning workflow - but they should also plan for the activation lead time, since it is not self-serve.
Automate Expensify workflows without one-off scripts
Stitchflow builds and maintains end-to-end IT automation across your SaaS stack, including apps without APIs. Built for exactly how your company works, with human approvals where they matter.