Skip to main content
Workspace settings control the fundamental properties of your team’s expense management environment. These settings affect how expenses are categorized, reported, and integrated with your broader financial systems.

General Settings

Workspace Name

The workspace name appears throughout the app and in reports:
1

Navigate to Settings

Open your workspace and click Settings > Workspace > General.
2

Edit Name

Click the current workspace name to edit it.
3

Save

Enter the new name and click Save. Changes apply immediately.
// Update workspace name from src/libs/actions/Policy/Policy.ts
function updateWorkspaceGeneralSettings(
    policyID: string,
    workspaceName: string,
    outputCurrency: string,
) {
    const policy = allPolicies[`${ONYXKEYS.COLLECTION.POLICY}${policyID}`];
    
    const optimisticData: OnyxUpdate[] = [
        {
            onyxMethod: Onyx.METHOD.MERGE,
            key: `${ONYXKEYS.COLLECTION.POLICY}${policyID}`,
            value: {
                name: workspaceName,
                outputCurrency,
                pendingFields: {
                    generalSettings: CONST.RED_BRICK_ROAD_PENDING_ACTION.UPDATE,
                },
                errorFields: {
                    generalSettings: null,
                },
            },
        },
    ];
    
    const parameters: UpdateWorkspaceGeneralSettingsParams = {
        policyID,
        workspaceName,
        currency: outputCurrency,
    };
    
    API.write(
        WRITE_COMMANDS.UPDATE_WORKSPACE_GENERAL_SETTINGS,
        parameters,
        {optimisticData, successData, failureData}
    );
}
Choose a workspace name that clearly identifies the team or organization. This is especially important if users belong to multiple workspaces.

Workspace Avatar

Customize your workspace’s visual identity:
Click the avatar circle and select Upload Image:
// Update workspace avatar from src/libs/actions/Policy/Policy.ts
function updateWorkspaceAvatar(
    policyID: string,
    file: File | CustomRNImageManipulatorResult,
) {
    const optimisticData: OnyxUpdate[] = [
        {
            onyxMethod: Onyx.METHOD.MERGE,
            key: `${ONYXKEYS.COLLECTION.POLICY}${policyID}`,
            value: {
                avatarURL: file.uri,
                originalFileName: file.name,
                errorFields: {
                    avatarURL: null,
                },
                pendingFields: {
                    avatarURL: CONST.RED_BRICK_ROAD_PENDING_ACTION.UPDATE,
                },
            },
        },
    ];
    
    const parameters: UpdateWorkspaceAvatarParams = {
        policyID,
        file,
    };
    
    API.write(
        WRITE_COMMANDS.UPDATE_WORKSPACE_AVATAR,
        parameters,
        {optimisticData, successData, failureData}
    );
}
Supported formats: JPG, PNG, GIF (max 6MB)

Currency Settings

Default Currency

Set the workspace’s default currency for expenses and reimbursements:
// Currency support check from src/libs/actions/Policy/Policy.ts
function isCurrencySupportedForDirectReimbursement(currency: string) {
    return currency === CONST.CURRENCY.USD;
}

function isCurrencySupportedForGlobalReimbursement(
    currency: TupleToUnion<typeof CONST.DIRECT_REIMBURSEMENT_CURRENCIES>
) {
    return CONST.DIRECT_REIMBURSEMENT_CURRENCIES.includes(currency);
}
Supported currencies: USD, EUR, GBP, CAD, AUD, and 150+ others.Direct reimbursement: Currently only USD is supported for direct bank reimbursements in the US.
Changing your workspace currency affects:
  • New expense defaults
  • Report totals calculation
  • Integration export formats
  • Reimbursement processing
Existing expenses retain their original currencies.

Currency Conversion

Expenses in foreign currencies are automatically converted:
  • Real-time exchange rates from reliable sources
  • Conversion applied at submission time
  • Original currency preserved in expense details
  • Converted amounts shown in workspace currency

Workspace Description

Add context about your workspace’s purpose:
// Update workspace description from src/libs/actions/Policy/Policy.ts
function updateWorkspaceDescription(
    policyID: string,
    description: string,
) {
    const parsedDescription = Parser.replace(description);
    
    const optimisticData: OnyxUpdate[] = [
        {
            onyxMethod: Onyx.METHOD.MERGE,
            key: `${ONYXKEYS.COLLECTION.POLICY}${policyID}`,
            value: {
                description: parsedDescription,
                pendingFields: {
                    description: CONST.RED_BRICK_ROAD_PENDING_ACTION.UPDATE,
                },
                errorFields: {
                    description: null,
                },
            },
        },
    ];
    
    const parameters: UpdateWorkspaceDescriptionParams = {
        policyID,
        description: parsedDescription,
    };
    
    API.write(
        WRITE_COMMANDS.UPDATE_WORKSPACE_DESCRIPTION,
        parameters,
        {optimisticData, successData, failureData}
    );
}
Use the description to explain:
  • What expenses should be submitted to this workspace
  • Team or department this workspace serves
  • Special policies or procedures
  • Contact info for workspace admins

Address Settings

Configure your business address for compliance and invoicing:
// Update workspace address from src/libs/actions/Policy/Policy.ts
function updatePolicyAddress(
    policyID: string,
    address: CompanyAddress,
) {
    const optimisticData: OnyxUpdate[] = [
        {
            onyxMethod: Onyx.METHOD.MERGE,
            key: `${ONYXKEYS.COLLECTION.POLICY}${policyID}`,
            value: {
                address: {
                    addressStreet: address.addressStreet,
                    city: address.city,
                    state: address.state,
                    zipCode: address.zipCode,
                    country: address.country,
                },
                pendingFields: {
                    address: CONST.RED_BRICK_ROAD_PENDING_ACTION.UPDATE,
                },
            },
        },
    ];
    
    const parameters: UpdatePolicyAddressParams = {
        policyID,
        ...address,
    };
    
    API.write(
        WRITE_COMMANDS.UPDATE_POLICY_ADDRESS,
        parameters,
        {optimisticData, failureData}
    );
}
Address is used for:
  • Invoice generation
  • Tax compliance
  • Accounting integrations
  • Travel bookings

Fiscal Year Settings

Define your organization’s fiscal year:
1

Access Settings

Navigate to Settings > Workspace > General.
2

Set Fiscal Year Start

Select the month your fiscal year begins (e.g., January for calendar year, April for UK fiscal year).
3

Configure Reporting

Set reporting period preferences (monthly, quarterly, annually).
Fiscal year settings affect:
  • Report grouping and naming
  • Year-end processing
  • Accounting integration mappings
  • Budget tracking periods

Workspace Features

Enable or disable specific features:
// Feature management from src/libs/actions/Policy/Policy.ts
function enablePolicyWorkflows(policyID: string, enabled: boolean) {
    const optimisticData: OnyxUpdate[] = [
        {
            onyxMethod: Onyx.METHOD.MERGE,
            key: `${ONYXKEYS.COLLECTION.POLICY}${policyID}`,
            value: {
                areWorkflowsEnabled: enabled,
                pendingFields: {
                    areWorkflowsEnabled: CONST.RED_BRICK_ROAD_PENDING_ACTION.UPDATE,
                },
            },
        },
    ];
    
    const parameters: EnablePolicyWorkflowsParams = {
        policyID,
        enabled,
    };
    
    API.write(
        WRITE_COMMANDS.ENABLE_POLICY_WORKFLOWS,
        parameters,
        {optimisticData, successData, failureData}
    );
}

Available Features

Workflows

Enable approval workflows and auto-reporting

Categories

Use expense categories for organization

Tags

Add tags for detailed expense tracking

Report Fields

Custom fields on expense reports

Distance Rates

Mileage reimbursement tracking

Per Diem

Per diem expense allowances

Taxes

Tax code tracking and reporting

Company Cards

Corporate card reconciliation

Workspace Status

Understand workspace lifecycle states:

Active

Normal operational state:
  • Members can submit expenses
  • Approvals process normally
  • Integrations sync data

Pending

Workspace is being created or updated:
pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD

Error State

Workspace has configuration errors:
errors: {
    generalSettings: 'workspace.editor.genericFailureMessage',
}
1

Identify Error

Red error badge appears on workspace settings.
2

Review Details

Click the error to see specific issue.
3

Resolve

Follow prompted actions to fix (e.g., reconnect integration, update payment method).

Advanced Settings

Auto-Harvesting

Automatically capture expenses from email receipts:
function setWorkspaceAutoHarvesting(
    policyID: string,
    autoHarvesting: boolean,
) {
    const optimisticData: OnyxUpdate[] = [
        {
            onyxMethod: Onyx.METHOD.MERGE,
            key: `${ONYXKEYS.COLLECTION.POLICY}${policyID}`,
            value: {
                autoHarvesting: {
                    enabled: autoHarvesting,
                },
            },
        },
    ];
    
    const parameters: SetWorkspaceAutoHarvestingParams = {
        policyID,
        autoHarvesting,
    };
    
    API.write(
        WRITE_COMMANDS.SET_WORKSPACE_AUTO_HARVESTING,
        parameters,
        {optimisticData, failureData}
    );
}
Forward receipts to a special email address and they’re automatically added to your workspace.

Client ID

For API integrations, configure a unique client identifier:
function updateWorkspaceClientID(
    policyID: string,
    clientID: string,
) {
    const parameters: UpdateWorkspaceClientIDParams = {
        policyID,
        clientID,
    };
    
    API.write(
        WRITE_COMMANDS.UPDATE_WORKSPACE_CLIENT_ID,
        parameters,
        {optimisticData, failureData}
    );
}

Best Practices

Select the currency that most of your team’s expenses will be in. Changing later doesn’t affect existing expenses but can complicate reporting.
Fill out address and description completely. This information is required for some integrations and helps new members understand the workspace.
Audit workspace settings quarterly, especially after organizational changes like mergers, relocations, or fiscal year changes.
If you have multiple workspaces, use names that clearly distinguish them (“US Operations”, “EMEA Sales”, etc.).
Don’t enable all features at once. Add them as your team’s needs evolve to avoid overwhelming users.

Troubleshooting

Currency changes may be restricted if:
  • You have pending expenses in other currencies
  • An accounting integration is connected
  • Bank accounts are configured for specific currency
Solution: Disconnect integrations temporarily or contact support.
If settings revert:
  1. Check for error messages
  2. Verify you have admin permissions
  3. Ensure stable internet connection
  4. Try clearing browser cache
Some features require specific plan levels:
  • Workflows: Collect or Control plan
  • Advanced integrations: Control plan
  • Custom fields: Control plan
Upgrade your plan to access these features.

Next Steps

Member Management

Add team members and configure roles

Categories & Tags

Set up expense organization

Integrations

Connect your accounting system

Workflows

Configure approval workflows

Build docs developers (and LLMs) love