Expensify API Destination
Expensify API
-
Click the + icon on the Nexset that will be sent to the Expensify API destination, and select the Send to Destination option from the menu.
-
Select the Expensify API connector from the list of available destination connectors. Then, select the credential that will be used to connect to the Expensify Integration Server, and click Next; or, create a new Expensify API credential for use in this flow.
-
Expensify API destinations can be manually configured to send data to any valid Expensify Integration Server operation. All Expensify API requests are made via HTTPS POST to a single endpoint, with the specific operation — such as creating expense reports, importing employee data, or updating policy configurations — determined by the
requestJobDescriptionJSON payload sent in the request body. You can also configure Nexla to automatically send the response received from the Expensify API after each call to a new Nexla webhook data source.First, select POST from the Method pulldown menu. All Expensify Integration Server requests use the HTTP POST method.
Data Format
- Select JSON from the Content Format pulldown menu. The Expensify Integration Server expects all request bodies to be submitted as JSON-encoded payloads. Nexla will automatically convert the Nexset data to JSON format for each API call.
API Endpoint URL
-
Enter the Expensify Integration Server URL in the URL field. For all standard Expensify accounts, this is:
https://integrations.expensify.com/Integration-Server/ExpensifyIntegrations
This is the single universal endpoint for all Expensify Integration Server operations. The specific action performed (creating reports, importing employees, updating policies, etc.) is determined by the requestJobDescription parameter in the JSON request body, not by the URL. Additional information about available operations is available in the Expensify API Reference.
Request Headers
-
If Nexla should include any additional request headers in API calls to this destination, enter the headers and corresponding values as comma-separated pairs in the Request Headers field (e.g.,
header1:value1,header2:value2).You do not need to include authentication headers here. The Expensify Integration Server authenticates requests using the
partnerUserIDandpartnerUserSecretcredentials from the configured credential, which Nexla includes automatically in each request body payload. Standard headers like Content-Type are handled automatically by Nexla.
Exclude Attributes from the Call
-
If any record attributes in the Nexset should be omitted when sending data to this Expensify API destination, select the attributes from the Exclude Attributes pulldown menu.
-
Any number of attributes can be selected for exclusion, and all excluded attributes will be shown in the field. To remove an attribute from the list, click the X icon next to the attribute name.
Record Batching
-
If records should be sent to this destination in batched API calls, check the box next to Would you like to batch your records together? to enable record batching.
-
Enter the maximum number of records that should be batched together in a single API call in the Batch Size field. By default, this value is set to
100.The Expensify Integration Server enforces a rate limit of 50 jobs per minute. When sending large volumes of data, configure batching to group multiple expense records into a single import operation where possible, in order to stay within this limit.
-
Select the algorithm that will be used to group records into batches from the Grouping Algorithm pulldown menu. The sample request shown in the panel on the right will be updated to reflect the current batching settings. Some algorithms require additional settings — click on an algorithm listed below to view instructions for configuring these settings.
Response Webhook
Nexla can automatically send the response received from the Expensify API after each call to a new Nexla webhook data source. This option allows you to keep track of the status of each API call and any additional information returned after each call, such as confirmation details or error messages from the Expensify Integration Server.
- To enable this option, check the box next to Would you like to process the API response as a Nexla Webhook source?.
Sample Request Payload
Sample request payloads containing a portion of the Nexset data that will be sent to the Expensify API endpoint based on the current settings are shown in the Sample Payload panel on the right. These samples can be referenced to ensure that the destination and request settings are correctly configured.
-
Click on a sample request payload to expand it and view the complete payload content.
-
Sample payloads are automatically updated with each setting change, making it easy to verify that changes achieve the desired effect.
Endpoint Testing
After all endpoint settings have been configured, Nexla can send a test payload to the Expensify API to ensure that the destination is configured correctly.
-
To send a test payload, select the Test button at the top of the Sample Payload panel, and click on a listed sample payload to expand it.
-
If any modifications to the sample payload are needed, make the necessary changes directly within the sample window.
-
Click the Send Test Data button at the top of a sample payload to send the test payload to the Expensify API using the current settings.
Save & Activate the Destination
-
Once all endpoint settings have been configured, click the Done button in the upper right corner of the screen to save and create the destination. To begin sending data to the configured Expensify API endpoint, open the destination resource menu, and select Activate.
The Nexset data will not be sent to the Expensify Integration Server until the destination is activated. Destinations can be activated immediately or at a later time, providing full control over data movement.