How-to: Connect Expensify to Workday

Matt Moore
Matt Moore Expensify Customer, Expensify Success Coach - Admin, Expensify Team Posts: 132 Expensify Team
edited March 2023 in How-to Docs

In this post, you will learn how to set up an Advanced Custom Report in Workday that:

  • Maps Workday column data to an Expensify Policy for import
  • Imports employee names, email addresses and manager emails into the Expensify Policy
  • Sets the employee’s Submits To column in the Expensify People table
  • Sets the employees Expensify Custom Field 1 & 2, typically used for Employee ID, Cost Center and/or Legal Entity
  • Imports employees to an Expensify Domain Group
  • Auto-assigns Expensify Cards

Step 1

You need a System Administrator with permissions in Workday to create an Integration System User and Integration System Security Group.

Create an Integration System User:

1a. Search "create user" and click Create Integration System User.

1b. Add a password, leave Require New Password at Next Sign In unchecked, set Session Timeout Minutes to 0, and check Do Not Allow UI Sessions.

1c. Click OK.

Create a Security Group:

1d. Search "create security group", then click Create Security Group.

1e. Create a Constrained security group and specify the Organizations you'd like to sync data from.

1f. Add the Integration System User you created to your Security Group.

1g. Search and select "security group membership and access".

1h. Search for the security group you just created.

1j. Click the ellipsis, then Security Group > Maintain Domain Permissions for Security Group

1k. Under Integration Permissions, add "External Account Provisioning" to Domain Security Policies permitting Put access and "Worker Data: Workers" to Domain Security Policies permitting Get access.

1l. Click OK and Done.

1m. Search Activate Pending Security Policy Changes and complete the task for activating the security policy change, adding a comment if required and checking the Confirmed check-box.

Step 2

In your Workday tenant, create an Advanced Custom Report. You need Report Writer access to create an Advanced Custom Report in Workday and enable it as a RAAS (Report as a Service).

2a. Search “Create Custom Report” and click Create Custom Report.

2b. Enter the report details. 

  • Give the report a Name
  • Set the Report Type to Advanced.
  • Check Enable As Web Service.
  • Uncheck Optimized for Performance
  • For Data Source, search and select All Active and Terminated Employees
  • Click OK.

2c. Select the Column Data you’d like to sync with Expensify. Typical fields synced with Expensify from Workday are as follows: 

  • First Name
  • Last Name
  • Primary Work Email*
  • Employee ID*
  • Expensify Policy ID*
  • Worker’s Manager [Primary Work Email]*
  • Domain Group ID**
  • Cost Center
  • Entity ID (sometimes called Legal Entity) 
  • Active/Inactive 
  • Termination Date


**If you want to specify a Domain Group in Expensify, please work with your account manager to get your Domain Group IDs

Note: if there is field data you want to import that is not listed above, or you have any special requests, let your Expensify Account Manager know and we will work with you to accommodate the request. 

2d. Rename the columns so they match Expensify's API key names:

  • employeeID
  • firstName
  • lastName
  • employeeEmail
  • managerEmail
  • policyID
  • domainGroupID
  • approvesTo

The full list of names are found here.

2e. Switch to the Share tab, and share the report with your Integration System User and Security Group

Step 3

Enable your report as a Report as a Service (RAAS), and get the Web Services URL in JSON format. 

3a. In your Workday tenant, search “view custom report” and select it. On the View Custom Report screen, click My Reports.

3b. Select the report you have created and click OK.

3c. Click Actions > Web Service > View URLs and click OK.

3d. Scroll to the JSON section, right-click JSON, then select Copy URL.

Note: if you would like to enable and run the API job that performs a recurring sync yourself, you can do so by following Expensify’s API reference documentation here. If you would like Expensify to perform the sync on your behalf, please follow the steps below.

Step 4

Generate your Expensify API Credentials. Then, supply those credentials, your Workday Integration System User, Password and your Workday Web Services URL to your Expensify Account Manager

4a. To generate your Expensify API Credentials, log into your Expensify account, then head to where you will find your partnerUserID and partnerUserSecret.

4b. Go to Settings > Policies > Group > [Policy Name] > Connections > HR Integrations and click Connect to Workday.

4c. In the form, supply your credentials



Workday ISU Username: e.g. ISU_Expensify

Workday password:

Workday REST Web Services URL: 

  • Preferred go live date? e.g. YYYY/MM/DD, or leave blank.
  • Expensify Card Auto-Assignment? (Y/N)
    • If using Expensify Cards, card auto-assignment occurs when a Smart Limit for a Group is enabled. Find out how to set a group limit here.
  • Deprovision Users? (Y/N)

    Step 5

    Your Expensify Account Manager will create a recurring sync that will retrieve the data columns from your Workday Web Services URL and apply the rule mappings you have specified above. If we have any questions, we will reach out via DM. 

    Success! You are now ready to sync employee data from Workday into Expensify.