Skip to main content
Workspaces (also called policies) are the foundation of expense management in New Expensify. They allow you to organize expenses, set rules, manage members, and control spending.

Understanding Workspaces

Team Plan

For small teams with basic expense tracking needs

Corporate Plan

For larger organizations with advanced controls and integrations

Creating a Workspace

1

Navigate to Workspace Creation

From the main menu, click on NewWorkspace or access the workspaces section in settings.
2

Enter Workspace Details

Provide basic information about your workspace:
  • Workspace Name: A descriptive name for your team or department
  • Currency: Default currency for expenses (e.g., USD, EUR, GBP)
  • Avatar: Optional workspace logo or image
src/libs/actions/Policy/Policy.ts
type BuildPolicyDataOptions = {
  policyOwnerEmail?: string;
  makeMeAdmin?: boolean;
  policyName?: string;
  policyID?: string;
  expenseReportId?: string;
  currency?: string;
  file?: File;
  shouldAddOnboardingTasks?: boolean;
  companySize?: OnboardingCompanySize;
  type?: typeof CONST.POLICY.TYPE.TEAM | typeof CONST.POLICY.TYPE.CORPORATE;
};
3

Configure Initial Settings

Set up basic workspace preferences:
  • Approval workflow
  • Reimbursement settings
  • Expense rules
4

Invite Team Members

Add colleagues to your workspace to start collaborating on expenses.

Workspace Settings

Once created, you can configure various aspects of your workspace.

General Settings

Workspace Profile

Update your workspace’s basic information:
src/libs/actions/Policy/Policy.ts
type UpdateWorkspaceGeneralSettingsParams = {
  policyID: string;
  workspaceName?: string;
  currency?: string;
};
Available Settings:
  • Name: Workspace display name
  • Description: Optional description of the workspace purpose
  • Currency: Default currency for expenses
  • Avatar: Workspace logo/image
Currency changes only affect new expenses. Existing expenses retain their original currency.

Categories

Categories help organize and track different types of expenses.

Creating Categories

src/libs/actions/Policy/Category.ts
function buildOptimisticPolicyCategories(
  policyID: string,
  categories: readonly string[],
) {
  const optimisticCategoryMap = categories.reduce<
    Record<string, Partial<PolicyCategory>>
  >((acc, category) => {
    acc[category] = {
      name: category,
      enabled: true,
      errors: null,
      pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD,
    };
    return acc;
  }, {});

  const onyxData: OnyxData = {
    optimisticData: [
      {
        onyxMethod: Onyx.METHOD.MERGE,
        key: `${ONYXKEYS.COLLECTION.POLICY_CATEGORIES}${policyID}`,
        value: optimisticCategoryMap,
      },
    ],
  };

  return onyxData;
}
1

Navigate to Categories

Go to Workspace SettingsCategories
2

Add a Category

Click Add category and enter a name (e.g., “Travel”, “Meals”, “Software”)
3

Configure Category Settings

  • GL Code: Accounting code for integrations
  • Max Amount: Maximum expense amount for this category
  • Receipts Required: Require receipts above a certain amount
  • Description Required: Require expense descriptions
  • Approver: Specific approver for this category
Common Category Examples:
  • Travel & Transportation
  • Meals & Entertainment
  • Office Supplies
  • Software & Subscriptions
  • Marketing & Advertising
  • Training & Development

Tags

Tags provide additional expense classification beyond categories.

Use Cases for Tags:

  • Projects: Track expenses by project or client
  • Departments: Allocate costs to specific departments
  • Cost Centers: Map to your accounting cost centers
  • Locations: Track expenses by office or region
Tags are available on Corporate plans. Team plans have basic category support.

Rules & Policies

Define expense rules to enforce company policies.

Common Rules:

Require receipts for expenses above a certain amount:
// Example: Require receipts for expenses over $75
{
  categoryName: "All Expenses",
  receiptRequired: true,
  receiptRequiredAmount: 7500, // Amount in cents
}
Set maximum amounts for different expense types:
{
  categoryName: "Meals",
  maxAmount: 5000, // $50 in cents
}
Require descriptions for certain expense categories:
{
  categoryName: "Entertainment",
  descriptionRequired: true,
}
Define expense types that are not allowed:
src/libs/actions/Policy/Policy.ts
type ProhibitedExpenses = {
  enabled: boolean;
  items: string[];
};

Member Management

Manage who has access to your workspace and their roles.

Adding Members

src/libs/actions/Policy/Member.ts
type AddMembersToWorkspaceParams = {
  employees: string; // JSON stringified array of member emails
  welcomeNote: string;
  policyID: string;
};
1

Go to Members Tab

Navigate to Workspace SettingsMembers
2

Invite Members

Enter email addresses of people to invite. You can:
  • Add multiple emails at once
  • Include a welcome message
  • Set default roles
3

Set Permissions

Assign roles to members:
  • Admin: Full workspace control
  • Member: Can submit expenses only

Member Roles

Admin

  • Full workspace settings access
  • Can add/remove members
  • Can approve expenses
  • Can configure rules and categories

Member

  • Can submit expenses
  • Can view own expense reports
  • Cannot modify workspace settings
  • Cannot approve others’ expenses

Removing Members

src/libs/actions/Policy/Member.ts
type DeleteMembersFromWorkspaceParams = {
  emailList: string; // JSON stringified array
  policyID: string;
};
To remove a member:
  1. Go to Members tab
  2. Select the member(s) to remove
  3. Click Remove from workspace
  4. Confirm the action
Removing a member will archive their workspace chat but preserve their expense history.

Advanced Features

Auto-Reporting

Automate expense report submission:
src/libs/actions/Policy/Policy.ts
function setWorkspaceAutoReportingFrequency(
  policyID: string,
  frequency: ValueOf<typeof CONST.POLICY.AUTO_REPORTING_FREQUENCIES>,
) {
  const optimisticData: OnyxUpdate[] = [
    {
      onyxMethod: Onyx.METHOD.MERGE,
      key: `${ONYXKEYS.COLLECTION.POLICY}${policyID}`,
      value: {
        autoReportingFrequency: frequency,
        pendingFields: {
          autoReportingFrequency: CONST.RED_BRICK_ROAD_PENDING_ACTION.UPDATE,
        },
      },
    },
  ];
}
Frequency Options:
  • Manual: Users submit reports manually
  • Immediate: Submit automatically when expenses are added
  • Daily: Submit once per day
  • Weekly: Submit once per week
  • Monthly: Submit once per month

Workspace Integrations

Connect your workspace to accounting software:
  • QuickBooks Online
  • QuickBooks Desktop
  • Xero
  • NetSuite
  • Sage Intacct
Accounting integrations are available on Corporate plans.

Workspace Permissions

src/libs/actions/Policy/Policy.ts
function isPolicyAdmin(policy: OnyxEntry<Policy>): boolean {
  return policy?.role === CONST.POLICY.ROLE.ADMIN;
}

function isControlPolicy(policy: OnyxEntry<Policy>): boolean {
  return policy?.type === CONST.POLICY.TYPE.CORPORATE;
}
Different permission levels control what actions users can perform:
ActionAdminMember
Submit expenses
Approve expenses
Add members
Edit categories
Configure rules
Set up integrations
Delete workspace

Best Practices

Descriptive Names

Use clear, descriptive names for workspaces, categories, and tags

Clear Rules

Document expense policies and communicate them to members

Regular Reviews

Periodically review and update categories and rules

Proper Roles

Assign appropriate roles based on responsibilities

Troubleshooting

If you can’t create a workspace:
  1. Ensure you’re signed in with a verified account
  2. Check that you have a stable internet connection
  3. Try refreshing the page
  4. Clear your browser cache
If an invited member can’t see the workspace:
  1. Verify they’re signed in with the correct email
  2. Check they’ve accepted the workspace invitation
  3. Confirm the invitation was sent successfully
  4. Try re-sending the invitation
If categories aren’t syncing with your accounting software:
  1. Verify the integration is properly connected
  2. Check that sync is enabled in integration settings
  3. Manually trigger a sync
  4. Contact support if issues persist
If approvals aren’t working as expected:
  1. Verify approval mode is configured correctly
  2. Check that approvers are workspace admins
  3. Ensure expense amounts match rule thresholds
  4. Review member roles and permissions

Next Steps

Invite Members

Add team members to your workspace

Configure Categories

Set up expense categories and rules

Set Up Integrations

Connect accounting software

Expense Tracking

Learn how to track and submit expenses

Build docs developers (and LLMs) love