Skip to main content

Expensify

Expensify is a leading expense management platform that automates expense reporting, receipt capture, and reimbursement workflows for businesses of all sizes. The Expensify API (Integration Server) provides programmatic access to expense reports, transactions, policy data, and account information, enabling organizations to integrate Expensify data into their financial systems, build custom reporting pipelines, automate expense-related workflows, and synchronize expense data with accounting or ERP platforms.

Expensify icon

Power end-to-end data operations for your Expensify API with Nexla. Our bi-directional Expensify connector is purpose-built for Expensify, making it simple to ingest data, sync it across systems, and deliver it anywhere — all with no coding required. Nexla turns API-sourced data into ready-to-use, reusable data products and makes it easy to send data to Expensify or any other destination. With comprehensive monitoring, lineage tracking, and access controls, Nexla keeps your Expensify workflows fast, secure, and fully governed.

Features

Type: API

SourceDestination

  • Seamless API Integration: Connect to any endpoint as source or destination without coding, with automatic data product creation
  • Visual Composition & Chaining: Build complex integrations using visual templates, chain API calls, and compose workflows with data validation and filtering
  • API Proxy: Expose curated slices of your data securely with a secure and customizable API proxy that validates and transforms data on the fly
  • Request optimization with intelligent batching, retry, and caching to minimize API calls and costs

Prerequisites

Before creating an Expensify API credential in Nexla, you must obtain partner credentials from the Expensify Integration Server. Expensify uses a partnerUserID and partnerUserSecret pair to authenticate all API requests.

Obtain Expensify Partner Credentials

Expensify partner credentials are generated directly from a dedicated tools page within your Expensify account. Follow the steps below to obtain them.

  1. Sign in to your Expensify account at expensify.com.

  2. Navigate to www.expensify.com/tools/integrations/ — this page is the dedicated credential generation tool for Expensify's Integration Server.

  3. On the integrations page, your partnerUserID and partnerUserSecret are displayed. These credentials are generated specifically for API and integration access.

Important

Copy and store both the partnerUserID and partnerUserSecret in a secure location immediately. The partnerUserSecret will not be shown again after you navigate away from the page. Treat these credentials like a password — never share your partnerUserSecret.

  1. Record both values for use in the Nexla credential configuration below.

API Access and Network Requirements

Before proceeding, verify the following:

  • Active Expensify account: An active Expensify account is required to access the Integration Server.

  • Administrator access: Generating partner credentials requires that you have administrator-level access to your Expensify account.

  • Network connectivity: Ensure your network environment allows outbound HTTPS connections to https://integrations.expensify.com, which is the Expensify Integration Server endpoint used by all API calls.

All Expensify API requests are made via HTTPS POST to https://integrations.expensify.com/Integration-Server/ExpensifyIntegrations. Nexla uses this endpoint for all data source and destination operations with your Expensify account. For additional information about the Expensify API, refer to the Expensify API Reference.

Authenticate

Credentials required

FieldRequiredSecretDescription
Expensify Integration Server URLNoNoExpensify Integration Server URL
Expensify partnerUserIDNoYesExpensify partnerUserID
Expensify partnerUserSecretNoYesExpensify partnerUserSecret

Create a credential in Nexla

  1. To create a new Expensify API credential, after selecting the data source/destination type, click the Add Credential tile to open the Add New Credential overlay.

  2. Enter a name for the credential in the Credential Name field and a short, meaningful description in the Credential Description field.

  3. Enter the Expensify Integration Server URL in the Expensify Integration Server URL field. The standard production endpoint is https://integrations.expensify.com. Use this default value unless your organization has been instructed to use an alternative server URL.

    The Integration Server URL defaults to https://integrations.expensify.com for all standard Expensify accounts. This is the base URL for the Expensify Integration Server — Nexla appends the required API path automatically when making requests.

  4. Enter your Expensify partner user ID in the Expensify partnerUserID field. This is the unique identifier generated on the Expensify integrations page and is used to identify your integration when making API requests.

  5. Enter your Expensify partner user secret in the Expensify partnerUserSecret field. This confidential key is paired with the partner user ID to authenticate all API requests sent to the Expensify Integration Server.

    The partnerUserID and partnerUserSecret are sensitive credentials and should be kept secure. Nexla stores these credentials securely and uses them only to authenticate API requests to the Expensify Integration Server on your behalf.

  6. Once all of the relevant steps in the above sections have been completed, click the Save button at the bottom of the overlay to save the configured credential. The newly added credential will now appear in a tile on the Authenticate screen during data source/destination creation and can be selected for use with a new data source or destination.

Use as a data source

To create a new data flow, navigate to the Integrate section, and click the New Data Flow button. Select the Expensify API connector tile, 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.

Manual configuration

Expensify API sources are configured entirely through the Advanced tab, since Expensify does not expose separate pre-built endpoint templates. First, select POST from the Method pulldown menu — all Expensify Integration Server requests use the HTTP POST method. Then enter the Expensify Integration Server URL in the Set API URL field; for all standard Expensify accounts, this is https://integrations.expensify.com/Integration-Server/ExpensifyIntegrations. Follow the instructions in Connect to Any API to configure date/time and lookup macros, path to data, metadata, and request headers.

Expensify exposes a single universal endpoint for all operations — the specific operation performed (exporting expense reports, downloading policy data, retrieving employee records, running reconciliation queries, etc.) is determined by the requestJobDescription JSON parameter in the request body, not by the URL path. Date/time macros are useful for dynamically setting startDate and endDate parameters in report export requests. Path to Data is typically required to parse the array of records (e.g., expense reports) nested within the JSON response — for example, if reports are returned in a top-level field named reports, the path would be $.reports[*]. You do not need to add authentication headers; Nexla automatically includes the partnerUserID and partnerUserSecret from the configured credential in each requestJobDescription payload.

Once all of the relevant settings have been configured, click the Test button to the right of the endpoint selection menu to retrieve a sample of the data that will be fetched, and click the Create button in the upper right corner of the screen to save and create the new Expensify API data source. Nexla will now begin ingesting data from the configured endpoint and will organize any data that it finds into one or more Nexsets.

Use as a destination

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.

Manual configuration

Expensify API destinations can be manually configured to send data to any valid Expensify Integration Server operation. Select POST from the Method pulldown menu and JSON from the Content Format pulldown menu, then enter the Expensify Integration Server URL in the URL field; for all standard Expensify accounts, this is https://integrations.expensify.com/Integration-Server/ExpensifyIntegrations. Follow the instructions in Connect to Any API to configure request headers, attribute exclusions, record batching, and response webhooks.

Expensify exposes a single universal endpoint for all operations — the specific action performed (creating expense reports, importing employee data, updating policy configurations, etc.) is determined by the requestJobDescription JSON parameter in the request body, not by the URL. You do not need to add authentication headers; Nexla automatically includes the partnerUserID and partnerUserSecret from the configured credential in each request body payload. The Expensify Integration Server enforces a rate limit of 50 jobs per minute — configure record batching to group multiple expense records into a single import operation where possible in order to stay within this limit.

Save & activate

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.