TravelPerk is a cloud corporate travel management platform that centralizes booking, policy enforcement, and expense control. It offers one interface for booking flights, hotels, trains, and car rentals while letting finance teams enforce policies, track spend, and automate expense reconciliation. Its open API integrates with HR, ERP, and finance systems to sync travel data, invoices, and cost centers.
Power end-to-end data operations for your TravelPerk API with Nexla. Our bi-directional TravelPerk connector is purpose-built for TravelPerk, 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 TravelPerk or any other destination. With comprehensive monitoring, lineage tracking, and access controls, Nexla keeps your TravelPerk 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
TravelPerk supports two authentication methods: API Key and OAuth 2.0. The method you choose depends on how your integration is structured.
API Key is the simpler option and is recommended for internal integrations, server-to-server data pipelines, and environments where a single TravelPerk account is used. API keys are scoped to the account that generates them and do not require an OAuth consent flow.
OAuth 2.0 is required for multi-tenant integrations, marketplace apps, or any scenario where end users authorize your application to access their TravelPerk data. This method follows the standard authorization code flow and requires you to register a developer application in TravelPerk.
API keys can only be created by TravelPerk administrators. If you are not an administrator, request that your TravelPerk admin generate an API key for use with Nexla.
Navigate to Account Settings in the top-right menu, then select the Developers section.
Under API Keys, click New API Key to generate a new key.
Provide a descriptive name for the key (for example, "Nexla Integration") so that you can identify its purpose later.
Copy the generated API key immediately and store it securely — TravelPerk will not show the full key again after you leave this page.
TravelPerk API keys are long-lived credentials tied to the administrator account that created them. Treat your API key like a password: do not share it publicly or commit it to source control. For additional reference, see the TravelPerk Developer Features documentation.
OAuth 2.0 credentials are required for applications that act on behalf of multiple TravelPerk users or that are distributed as marketplace integrations.
Sign in to your TravelPerk account and navigate to Account Settings > Developers.
Under OAuth Applications, click Register Application.
Provide the following information for your application:
Application Name: A descriptive name that users will see during the OAuth consent screen (for example, "Nexla Data Integration").
Redirect URI: The callback URL where TravelPerk will send the authorization code after user consent. For Nexla, use the redirect URI provided in your Nexla credential configuration.
Scopes: Select the scopes that correspond to the TravelPerk data your integration needs to access. Common scopes include:
After saving the application, copy the Client ID and Client Secret — you will enter these values in the Nexla credential configuration.
Request only the scopes that your integration requires. Over-privileged credentials increase security risk. The TravelPerk sandbox environment is available at app.sandbox-travelperk.com and uses the same credential structure, allowing you to develop and test integrations without affecting live data. Additional guidance is available in the TravelPerk Develop an Integration guide.
Authenticate using a TravelPerk API key. Generated in TravelPerk Settings > Developer section by an administrator.
Field
Required
Secret
Description
API Key
Yes
Yes
TravelPerk API key. Created by an admin under Settings > Developer > API Keys.
Environment
No
No
Use Production for live data or Sandbox for testing. Sandbox base URL is app.sandbox.travelperk.com. Allowed values: Production (Live TravelPerk environment); Sandbox (TravelPerk sandbox for testing)
Authenticate via OAuth 2.0 authorization code flow. Required for marketplace integrations and multi-tenant apps.
Field
Required
Secret
Description
Client ID
Yes
No
OAuth 2.0 Client ID from your TravelPerk developer app registration.
Client Secret
Yes
Yes
OAuth 2.0 Client Secret from your TravelPerk developer app registration.
OAuth Scopes
No
No
Space-separated list of OAuth scopes. Include all scopes required by the endpoints you plan to use.
After selecting the data source/destination type, click the Add Credential tile to open the Add New Credential overlay.
Enter a name for the credential in the Credential Name field and a short, meaningful description in the Credential Description field.
TravelPerk credentials support two authentication methods. Select the tab below that matches the method you are configuring.
TravelPerk Authentication Methods
API Key
OAuth 2.0
Authenticate using a TravelPerk API key. This method is recommended for internal integrations and server-to-server data pipelines. The API key is created by a TravelPerk administrator under Account Settings > Developers > API Keys.
Enter your TravelPerk API key in the **API Key** field. This key is used to authenticate all API requests made by Nexla on behalf of your TravelPerk account. It should be kept secure and not shared.
Select the **Environment** from the pulldown menu. Choose **Production** to connect to your live TravelPerk data at `app.travelperk.com`. Choose **Sandbox** to connect to the TravelPerk sandbox environment at `app.sandbox.travelperk.com` for testing and development purposes without affecting live data.
Authenticate via the OAuth 2.0 authorization code flow. This method is required for marketplace integrations, multi-tenant applications, and scenarios where end users authorize your application to access their TravelPerk data. You must first register an OAuth application in TravelPerk to obtain a Client ID and Client Secret.
Enter the **Client ID** from your registered TravelPerk OAuth application in the **Client ID** field. The Client ID is a public identifier for your application and is obtained from Account Settings > Developers > OAuth Applications in TravelPerk.
Enter the **Client Secret** from your registered TravelPerk OAuth application in the **Client Secret** field. The Client Secret is a confidential value that authenticates your application to TravelPerk — keep it secure and do not share it.
Enter the OAuth scopes your integration requires in the **OAuth Scopes** field as a space-separated list. The default value includes the most commonly needed scopes: `trips:read invoices:read users:read users:write travel_policies:read expenses:read webhooks:read webhooks:write`. Remove any scopes your integration does not need to follow the principle of least privilege. After entering credentials, you will be redirected to TravelPerk to complete the OAuth authorization flow and grant consent.
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.
To create a new data flow, navigate to the Integrate section, and click the New Data Flow button. Select the TravelPerk connector tile, then select the credential that will be used to connect to the TravelPerk instance, and click Next; or, create a new TravelPerk credential for use in this flow.
Nexla provides pre-built templates that can be used to rapidly configure data sources to ingest data from common TravelPerk endpoints. Select the endpoint from which this source will fetch data from the Endpoint pulldown menu. Available endpoint templates are listed in the expandable boxes below. Click on an endpoint to see more information about it and how to configure your data source for this endpoint.
List Invoices
Fetches all company invoices from the TravelPerk Expenses API, including issuing date, amount, VAT breakdown, currency, payment status, and line-level cost details. Use this endpoint to sync invoice data with your ERP, finance system, or GL coding pipeline. Results are paginated with a configurable page size up to 200 records.
In the Page Size field, enter the number of invoices to return per page. The maximum allowed value is 200, which is also the default. Reduce this value if you encounter timeouts or memory constraints.
In the Issuing Date From field, enter the start date for filtering invoices using the format YYYY-MM-DD. The default value is {now-30}, which resolves to 30 days before the current date. Adjust this window to match your reconciliation period — for example, enter {now-90} to pull the last 90 days of invoices.
In the Issuing Date To field, enter the end date for filtering invoices using the format YYYY-MM-DD. The default value is {now}, which resolves to today's date.
In the Invoice Status field, select the payment status to filter by. Available options are:
All (default) — Returns invoices in all statuses.
Open — Returns only unpaid invoices currently awaiting payment.
Fetches the line-item cost breakdown for all invoices. This endpoint uses a two-step chained call: first it retrieves all invoices, then for each invoice it fetches the individual line items. Use this endpoint for detailed GL coding, ERP mapping, and per-category spend analysis where you need to see how each invoice is broken down by travel segment, tax category, or cost center.
No additional configuration parameters are required for this endpoint. The endpoint automatically retrieves all invoices and then fetches their line items in a sequential chained call.
Each record returned represents a single invoice line item and includes the parent invoice serial number, allowing you to join line items back to invoice-level data.
Because this endpoint performs a chained two-step call (invoices → line items), ingestion time is proportional to the total number of invoices in your account. For large invoice volumes, consider using the List Invoices endpoint first with a date filter to narrow scope before using this endpoint. TravelPerk API reference: developers.travelperk.com/reference/listinvoicelines.
Get Invoice
Retrieves full details for a single invoice identified by its serial number, including all line items, VAT amounts, and payment status. Use this endpoint when you need to fetch a specific invoice for audit purposes, document archival, or targeted reconciliation.
In the Serial Number field, enter the invoice serial number to retrieve. Invoice serial numbers can be obtained from the List Invoices endpoint. This field is required.
Downloads a single invoice as a PDF document by serial number. Use this endpoint for document archival workflows, audit trail requirements, or automated attachment pipelines that store invoice PDFs alongside financial records.
In the Serial Number field, enter the invoice serial number to download as a PDF. Invoice serial numbers can be obtained from the List Invoices endpoint. This field is required.
Fetches invoices filtered by billing country with VAT amounts, designed for automated tax reclaim workflows and financial AI pipelines. Use this endpoint to extract VAT-eligible invoice data segmented by country for integration with tax compliance and reclaim tools.
In the Issuing Date From field, enter the start date for VAT data extraction in YYYY-MM-DD format. The default value is {now-365} (365 days ago), which is a common window for annual tax reclaim cycles.
In the Billing Country field, optionally enter an ISO 3166-1 alpha-2 country code (for example, GB, DE, or ES) to filter invoices to a specific country. Leave blank to retrieve invoices across all billing countries.
Retrieves all invoice profiles configured in TravelPerk. Invoice profiles represent distinct billing entities within your organization (for example, separate legal entities or subsidiaries) and are used to filter invoices by billing entity and map them to the correct GL accounts in ERP integrations.
No additional configuration parameters are required. This endpoint automatically retrieves all invoice profiles in your TravelPerk account.
Fetches all company trips with traveler details, destination, travel dates, booking status, total cost, and CO2 emissions data. Use this endpoint for travel spend analytics, carbon footprint reporting, finance dashboards, and HR integrations that need a complete view of corporate travel activity.
In the Page Size field, enter the number of trips to return per page. The maximum is 200, which is also the default.
In the Start Date field, enter the earliest trip start date to include in YYYY-MM-DD format. The default is {now-90} (90 days ago). Adjust this window to match your reporting period.
In the End Date field, enter the latest trip start date to include in YYYY-MM-DD format. The default is {now} (today).
In the Trip Status field, select the trip status to filter by. Available options are:
All (default) — Returns trips in all statuses.
Upcoming — Returns only future trips that have not yet occurred.
Retrieves the full details of a single trip by ID, including all booking segments (flights, hotels, trains, car rentals), costs, approval chain, and CO2 emissions data. Use this endpoint when you need comprehensive details for a specific trip for reporting, audit, or reconciliation purposes.
In the Trip ID field, enter the unique identifier of the trip to retrieve. Trip IDs can be obtained from the List Trips endpoint. This field is required.
Fetches trips enriched with policy violation flags, CO2 emissions, booking lead times, and cost fields optimized for machine learning and spend forecasting models. Use this endpoint to build training datasets for compliance classification models, cost prediction models, or carbon reduction AI pipelines.
In the Out-of-Policy Only field, set to true to return only trips that violated travel policy. This is a key training signal for compliance ML classifiers. The default is false, which returns all trips regardless of policy compliance.
In the Start Date field, enter the earliest trip date for your model training window in YYYY-MM-DD format. The default is {now-365} (365 days ago), which provides a full year of historical data — a common window for model training.
This endpoint uses the same TravelPerk Trips API as List Trips but is pre-configured with parameters optimized for AI and analytics use cases. TravelPerk API reference: developers.travelperk.com/reference/listtrips.
List Bookings
Fetches all bookings across all travel categories — flights, hotels, trains, and car rentals — with segment details, booking status, and traveler information. Use this endpoint for operational reporting, booking volume analysis, supplier spend categorization, and integration with travel management analytics tools.
In the Page Size field, enter the number of bookings per page. The maximum is 200, which is also the default.
In the Booking Date From field, enter the earliest booking creation date in YYYY-MM-DD format. The default is {now-90} (90 days ago).
In the Booking Type field, select the travel segment type to filter by. Available options are:
Fetches all bookings with both booking date and travel date fields, enabling lead-time delta calculation. Lead time — the number of days between when a booking was made and when travel occurs — is a key cost driver in corporate travel: last-minute bookings typically cost significantly more than advance bookings. Use this endpoint to power cost optimization dashboards and AI-driven policy recommendations.
In the Booking Date From field, enter the start of the historical analysis window in YYYY-MM-DD format. The default is {now-365} (365 days ago), which provides a full year of lead-time data — sufficient for statistical analysis and model training.
Fetches all company travelers with their profile information, role, cost center assignment, manager, travel policy assignment, and active status. Use this endpoint for HR system synchronization, user directory exports, access audits, and as a reference data source for joining with trip and booking data.
In the Page Size field, enter the number of users to return per page. The maximum is 200, which is also the default.
In the Active Users Only field, set to true (default) to return only active users. Set to false to return all users including deactivated accounts — useful for full directory sync or offboarding audits.
This endpoint uses the TravelPerk REST API v2. For IdP-driven provisioning and SCIM-compatible pagination, see the List Users (SCIM Paginated) endpoint. TravelPerk API reference: developers.travelperk.com/reference/listusers.
List Users - Enriched Profiles
Fetches active travelers enriched with loyalty program IDs, travel preferences, frequent routes, and cost center assignments. Use this endpoint for traveler personalization engines, segmentation models, and AI-driven recommendation systems that need rich user profile data.
No additional configuration parameters are required. This endpoint automatically retrieves all active users with their full profile data including loyalty program information and travel preferences.
Retrieves the full profile of a single user by ID via the SCIM 2.0 endpoint, including role, travel preferences, loyalty program IDs, and travel policy assignment. Use this endpoint for targeted user lookups, identity verification, or detailed profile retrieval in IdP-driven provisioning workflows.
In the User ID field, enter the UUID of the user to retrieve. User UUIDs can be obtained from the List Users endpoint. This field is required.
This endpoint uses the TravelPerk SCIM v2 API at app.travelperk.com/api/scim/v2. SCIM access requires the TravelPerk Premium plan. TravelPerk API reference: developers.travelperk.com/reference/getuser.
List Users (SCIM Paginated)
Lists all users via the SCIM 2.0 endpoint using startIndex and count pagination. This endpoint is designed for full user directory synchronization with Identity Provider (IdP) systems such as Okta, Azure Active Directory, or Microsoft Entra ID.
In the Page Size field, enter the number of users to return per SCIM page (the count parameter). The default is 100. Unlike the REST API v2 Users endpoint, the SCIM endpoint uses 1-based pagination starting at startIndex=1.
SCIM access requires the TravelPerk Premium plan. This endpoint is best used for IdP-to-TravelPerk directory sync. For simpler user listing without SCIM requirements, use the List Users endpoint instead. TravelPerk API reference: developers.travelperk.com/reference/listusersscim.
Filter Users by External ID
Retrieves a user by their external ID via a SCIM filter query. Use this endpoint for IdP-driven user lookup and cross-system identity matching, where you need to find a TravelPerk user based on an identifier from an external system such as Okta, Azure AD, or an HR platform.
In the External ID field, enter the external identifier to search for. This is typically the user ID from your IdP or HR system (for example, an Okta user ID or Workday employee ID). This field is required.
Fetches all configured travel policies in your TravelPerk account, including booking class rules, hotel star rating limits, approval thresholds, and out-of-policy flags. Use this endpoint to audit policy configurations, sync policy data with compliance systems, or provide policy context for travel analytics dashboards.
No additional configuration parameters are required. This endpoint automatically retrieves all travel policies in your account.
Fetches all cost centers configured in TravelPerk for GL coding, departmental spend allocation, and ERP integration. Cost centers in TravelPerk represent the organizational units used to categorize travel spend — they map directly to chart-of-accounts entries in financial systems.
No additional configuration parameters are required. This endpoint automatically retrieves all cost centers in your account.
Retrieves details for a specific cost center by ID, including its name and the list of users assigned to it. Use this endpoint for targeted cost center lookups, user-to-cost-center mapping verification, or GL account validation workflows.
In the Cost Center ID field, enter the unique identifier of the cost center to retrieve. Cost center IDs can be obtained from the List Cost Centers endpoint. This field is required.
Fetches all user groups in TravelPerk, which are used for travel policy assignment, bulk user operations, and organizational hierarchy management. Use this endpoint to sync group memberships with your HR system or to audit group configurations in TravelPerk.
No additional configuration parameters are required. This endpoint automatically retrieves all groups in your account.
Fetches submitted expense reports for finance reconciliation, ERP export, and automated GL entry workflows. Expense reports in TravelPerk aggregate out-of-pocket expenses submitted by travelers alongside the automatically tracked booking costs.
In the Page Size field, enter the number of expense reports per page. The maximum is 200, which is also the default.
In the Submitted Date From field, enter the earliest submission date to include in YYYY-MM-DD format. The default is {now-90} (90 days ago). Adjust this window to match your expense reporting cycle.
Retrieves all travel suppliers in your TravelPerk account, including airlines, hotel chains, and rail operators. Use this endpoint to build reference data tables for spend categorization, supplier performance analysis, or preferred vendor reporting.
No additional configuration parameters are required. This endpoint automatically retrieves all suppliers in your account.
Fetches all active webhook subscriptions configured in your TravelPerk account. Use this endpoint to audit your event-driven integrations, verify webhook configurations, and ensure that all required event subscriptions are in place before going live.
No additional configuration parameters are required. This endpoint automatically retrieves all webhook subscriptions in your account.
Retrieves the details of a specific webhook subscription by ID, including the target URL, subscribed event types, and current status. Use this endpoint to verify the configuration of a specific webhook subscription as part of integration testing or monitoring.
In the Webhook ID field, enter the unique identifier of the webhook to retrieve. Webhook IDs can be obtained from the List Webhooks endpoint. This field is required.
Retrieves all available webhook event types that can be subscribed to in TravelPerk. Use this endpoint to discover the full list of subscribable events before creating or updating webhook subscriptions — ensuring your integration subscribes to all relevant event types.
No additional configuration parameters are required. This endpoint returns the complete catalog of event types supported by TravelPerk webhooks.
Retrieves travel safety guidelines for a specific country or region from TravelPerk's TravelSafe API. Use this endpoint for duty-of-care dashboards, AI risk scoring models, or pre-trip safety briefing workflows that need current safety information by location.
In the Location Type field, select the type of location for which guidelines are being requested. Available options are:
Country — Retrieve guidelines for an entire country.
Region — Retrieve guidelines for a specific region within a country.
This field is required.
In the Location Code field, enter the ISO 3166-1 alpha-2 country code or region code for the location (for example, US, GB, or EU). This field is required.
In the Language field, enter a BCP 47 language code to specify the language of the response content (for example, en for English, de for German, es for Spanish). The default is en.
Retrieves travel restrictions between an origin and destination, including entry requirements, quarantine rules, and testing requirements. Use this endpoint for real-time travel eligibility checks, duty-of-care workflows, or pre-trip automation that needs to verify whether travel between two locations is currently possible or restricted.
In the Origin Code field, enter the ISO country or region code of the travel origin (for example, US or GB). This field is required.
In the Origin Type field, select whether the origin is a Country or a Region. This field is required.
In the Destination Code field, enter the ISO country or region code of the travel destination. This field is required.
In the Destination Type field, select whether the destination is a Country or a Region. This field is required.
In the Travel Date field, enter the planned travel date in YYYY-MM-DD format. The default is {now} (today). Specify a future date to check restrictions for a planned trip.
In the Language field, enter a BCP 47 language code for the response language. The default is en.
Retrieves health and safety measures implemented by a specific airline, identified by its IATA airline code. Use this endpoint for duty-of-care reporting, traveler safety briefings, or risk assessment workflows that need airline-specific safety information.
In the IATA Airline Code field, enter the two-letter IATA code for the airline (for example, BA for British Airways, LH for Lufthansa, AA for American Airlines). This field is required.
In the Language field, enter a BCP 47 language code for the response language. The default is en.
Retrieves API call counts and usage statistics for your TravelPerk integration. Use this endpoint for rate limit monitoring, integration health checks, and API consumption reporting to ensure your integration stays within TravelPerk's API usage limits.
No additional configuration parameters are required. This endpoint automatically returns the current API usage statistics for your account.
TravelPerk enforces API rate limits and returns HTTP 429 when limits are exceeded. Use this endpoint proactively to monitor consumption and avoid disruptions to dependent integrations. TravelPerk API reference: developers.travelperk.com/reference/getapiusage.
Once the selected endpoint template has 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. Sample data will be displayed in the Endpoint Test Result panel on the right, allowing you to verify that the source is configured correctly before saving.
TravelPerk data sources can also be manually configured to ingest data from any valid TravelPerk API endpoint, including endpoints not covered by the pre-built templates, chained API calls, or custom request parameters. Select the Advanced tab at the top of the configuration screen, and follow the instructions in Connect to Any API to configure the API method, endpoint URL, date/time and lookup macros, path to data, metadata, and request headers.
TravelPerk uses two base URLs: the Production REST API at https://app.travelperk.com/api/v2/ followed by the resource path (for example, https://app.travelperk.com/api/v2/trips), and the Production SCIM API at https://app.travelperk.com/api/scim/v2/ for SCIM-compatible user management endpoints. For sandbox testing, replace app.travelperk.com with app.sandbox.travelperk.com in either base URL. Date-filtered endpoints (trips, bookings, invoices) accept macros in YYYY-MM-DD format for parameters such as start_date, end_date, issuing_date_gte, and issuing_date_lte. Path to Data varies by endpoint — paginated list responses use $.data[*], single-resource responses use $, and some nested responses use named arrays such as $.guidelines[*], $.restrictions[*], or $.suppliers[*]. TravelSafe endpoints also accept an Accept-Language header (BCP 47 format, for example en or de) to specify the response language. You do not need to include the Authorization header — it is automatically added by Nexla based on your TravelPerk credential configuration.
Once all of the relevant settings have been configured, click the Create button in the upper right corner of the screen to save and create the new TravelPerk 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.
Click the + icon on the Nexset that will be sent to the TravelPerk destination, and select the Send to Destination option from the menu. Select the TravelPerk connector from the list of available destination connectors, then select the credential that will be used to connect to the TravelPerk organization, and click Next; or, create a new TravelPerk credential for use in this flow.
Nexla provides pre-built templates that can be used to rapidly configure destinations to send data to common TravelPerk endpoints. Select the endpoint to which data will be sent from the Endpoint pulldown menu. Then, click on the template in the list below to expand it, and follow the instructions to configure additional endpoint settings.
Create User
Provisions a new traveler profile in TravelPerk. Use this endpoint to automate HR-driven onboarding workflows where new employees are automatically added to TravelPerk when they join your organization. This endpoint sends a POST request to the TravelPerk Users API and requires the users:write scope.
No additional URL parameters are required for this endpoint. The user data is sent in the request body as JSON. Ensure your Nexset contains the required TravelPerk user fields: at minimum, the user's email address, first name, and last name. Refer to the TravelPerk Create User API reference for the full list of supported fields and required attributes.
The Create User endpoint requires the users:write OAuth scope. If you are using API key authentication, ensure the key was generated by an administrator with the appropriate permissions. TravelPerk API reference: developers.travelperk.com/reference/createuser.
Update User
Updates an existing traveler profile in TravelPerk using a PATCH request. Use this endpoint for HR-driven profile updates, such as name changes, department reassignments, or manager updates. To deactivate a user as part of an offboarding flow, set is_active to false in the request body — this is the preferred approach over deletion as it preserves the user's travel history. Requires the users:write scope.
In the User ID field, enter the UUID of the user to update. User UUIDs can be obtained from the List Users endpoint in a TravelPerk data source. This field is required.
The updated user attributes are sent in the JSON request body. Only include the fields you want to update — PATCH requests apply partial updates without overwriting fields that are not included.
To deactivate a user for offboarding, set is_active: false in the request body rather than using the Delete User endpoint. This preserves the user's audit trail and travel history. TravelPerk API reference: developers.travelperk.com/reference/updateuser.
Add Group Member
Adds a user to a TravelPerk group for travel policy inheritance and access control. Use this endpoint to automate HR-driven group provisioning workflows, such as automatically assigning new employees to the appropriate department group in TravelPerk when they are onboarded.
In the Group ID field, enter the UUID of the group to add a member to. Group UUIDs can be obtained from the List Groups endpoint in a TravelPerk data source. This field is required.
The user to add is specified in the JSON request body. Include the user's UUID in the body payload. Refer to the TravelPerk Add Group Member API reference for the required body structure.
TravelPerk groups control which travel policy applies to a user. Assigning a user to the correct group ensures they are subject to the appropriate booking class rules, approval thresholds, and hotel limits. TravelPerk API reference: developers.travelperk.com/reference/addgroupmember.
Create Webhook
Registers a new webhook subscription in TravelPerk to receive real-time event notifications for trips, invoices, and bookings. Use this endpoint to programmatically configure event-driven integrations that respond to TravelPerk activity — for example, triggering downstream reconciliation workflows when a new invoice is issued. Requires the webhooks:write scope.
No additional URL parameters are required. The webhook configuration — including the target URL, secret, and subscribed event types — is sent in the JSON request body. Use the List Webhook Event Types endpoint in a TravelPerk data source to discover the available event types before creating a subscription.
TravelPerk will send a verification request to your webhook URL when it is first registered. Ensure the target endpoint is reachable and returns the expected response before creating the subscription. TravelPerk API reference: developers.travelperk.com/reference/createwebhook.
Update Webhook
Updates an existing webhook subscription using a PATCH request. Use this endpoint to change the target URL, rotate the webhook secret, or modify the list of subscribed event types without deleting and recreating the subscription.
In the Webhook ID field, enter the unique identifier of the webhook to update. Webhook IDs can be obtained from the List Webhooks endpoint in a TravelPerk data source. This field is required.
Include only the fields to update in the JSON request body — PATCH requests apply partial updates.
Deletes a webhook subscription by ID, permanently stopping all event notifications for the specified webhook. Use this endpoint to clean up unused webhook subscriptions or as part of integration decommissioning workflows.
In the Webhook ID field, enter the unique identifier of the webhook to delete. Webhook IDs can be obtained from the List Webhooks endpoint in a TravelPerk data source. This field is required.
Important
Deleting a webhook is irreversible. All event notifications associated with the subscription will immediately stop. Verify the webhook ID before proceeding.
Sends a test event to a webhook subscription to verify that the target endpoint is reachable and responding correctly. Use this endpoint as part of webhook integration testing to confirm end-to-end connectivity before relying on the webhook for production event delivery.
In the Webhook ID field, enter the unique identifier of the webhook to send a test event to. Webhook IDs can be obtained from the List Webhooks endpoint in a TravelPerk data source. This field is required.
Creates a new cost center in TravelPerk for GL coding and departmental spend allocation. Use this endpoint to automate cost center provisioning when new departments or business units are created in your ERP or HR system, keeping TravelPerk's cost structure synchronized with your chart of accounts.
No additional URL parameters are required. The cost center details (including the cost center name) are sent in the JSON request body. Refer to the TravelPerk Create Cost Center API reference for the required body structure.
Updates the name of an existing cost center by ID using a PATCH request. Use this endpoint when a department or business unit is renamed in your ERP or HR system and you need to keep TravelPerk's cost center names synchronized.
In the Cost Center ID field, enter the unique identifier of the cost center to update. Cost center IDs can be obtained from the List Cost Centers endpoint in a TravelPerk data source. This field is required.
The updated cost center name is sent in the JSON request body.
Updates multiple cost centers in a single PATCH request. Use this endpoint for batch rename operations or large-scale cost center reorganizations where updating each cost center individually would be impractical.
No additional URL parameters are required. The bulk update payload containing an array of cost center updates is sent in the JSON request body. Each cost center in the array should include its ID and the updated name. Refer to the TravelPerk Bulk Update Cost Centers API reference for the required body structure.
Assigns users to a cost center using a PUT request, replacing the existing user assignments entirely. Use this endpoint for HR-driven cost center provisioning workflows where an authoritative HR system owns the user-to-cost-center mapping and needs to push the complete assignment list to TravelPerk.
In the Cost Center ID field, enter the unique identifier of the cost center to assign users to. Cost center IDs can be obtained from the List Cost Centers endpoint in a TravelPerk data source. This field is required.
The complete list of user UUIDs to assign to this cost center is sent in the JSON request body. Because this is a PUT request, it replaces all existing assignments — include all users that should be assigned to the cost center, not just new additions.
Important
This endpoint uses PUT (full replacement), not PATCH (partial update). Sending this request will overwrite all existing cost center user assignments with the provided list. Ensure your payload contains the complete intended user list before proceeding.
Permanently deletes a user via the SCIM 2.0 endpoint. This action is irreversible and removes the user and their associated data from TravelPerk. For offboarding workflows where preserving travel history and the audit trail is important, use the Activate / Deactivate User endpoint with active: false instead.
In the User ID field, enter the UUID of the user to permanently delete. User UUIDs can be obtained from the List Users or List Users (SCIM Paginated) endpoints. This field is required.
Warning
Deleting a user is permanent and cannot be undone. All travel history, bookings, and profile data associated with the user will be removed. For most offboarding scenarios, deactivating the user (setting active: false via Activate / Deactivate User) is the preferred approach as it preserves the audit trail.
Replaces all SCIM attributes of an existing user via a PUT request. Use this endpoint for full user record synchronization from an IdP where the authoritative source of truth holds the complete user profile and pushes it wholesale to TravelPerk.
In the User ID field, enter the UUID of the user to fully replace. User UUIDs can be obtained from the List Users or List Users (SCIM Paginated) endpoints. This field is required.
The complete user SCIM record is sent in the JSON request body. All existing attributes will be overwritten with the values in the request payload.
Important
This endpoint uses PUT (full replacement). All existing user attributes will be overwritten. Ensure your payload contains the complete user record before proceeding. For partial updates, use the Update User endpoint instead.
Activates or deactivates a user account via a SCIM PATCH request. This is the recommended approach for offboarding employees in TravelPerk: deactivating a user (setting active: false) prevents them from booking travel while preserving their complete travel history and audit trail — which is essential for expense reconciliation and compliance reporting.
In the User ID field, enter the UUID of the user to activate or deactivate. User UUIDs can be obtained from the List Users or List Users (SCIM Paginated) endpoints. This field is required.
In the JSON request body, set the active field to control the user's status:
active: true — Activates the user, restoring their access to TravelPerk.
active: false — Deactivates the user, preventing new bookings while preserving their data.
Adds trip approval managers to a user account via SCIM PATCH. Use this endpoint in multi-approver workflows where managers need to be added to a user's approval chain — for example, when an employee moves to a new team or when an additional approver needs to be added during a restructure.
In the User ID field, enter the UUID of the user to add approvers to. User UUIDs can be obtained from the List Users endpoint. This field is required.
The approver UUIDs to add are specified in the SCIM PATCH request body. Refer to the TravelPerk Add User Approvers API reference for the required SCIM PATCH operation structure.
Replaces all trip approval managers for a user via SCIM PATCH, overwriting the existing approver list. Use this endpoint when the complete set of approvers for a user changes — for example, after a reporting line change where all previous approvers are no longer relevant.
In the User ID field, enter the UUID of the user whose approver list to fully replace. This field is required.
The complete replacement list of approver UUIDs is specified in the SCIM PATCH request body. All existing approvers will be replaced with this list.
Assigns or updates the travel policy for a user via SCIM PATCH. Use this endpoint when an employee's role or seniority changes and they need to be moved to a different travel policy tier — for example, moving a newly promoted executive to a policy that allows business class bookings.
In the User ID field, enter the UUID of the user whose travel policy to update. This field is required.
The travel policy UUID to assign is specified in the SCIM PATCH request body. Travel policy IDs can be obtained from the List Travel Policies endpoint in a TravelPerk data source.
Assigns or updates the cost center for a user via SCIM PATCH. Use this endpoint for HR-driven GL allocation automation — for example, automatically updating a user's cost center in TravelPerk when they transfer to a new department in your HR system.
In the User ID field, enter the UUID of the user whose cost center to update. This field is required.
The cost center UUID to assign is specified in the SCIM PATCH request body. Cost center IDs can be obtained from the List Cost Centers endpoint in a TravelPerk data source.
Adds passport or travel document details to a user profile via SCIM PATCH. Use this endpoint to populate travel documents from an HR or identity management system, enabling TravelPerk to validate passport validity during booking and ensure travelers meet international travel requirements.
In the User ID field, enter the UUID of the user to add travel documents to. This field is required.
The travel document details (including document type, number, expiry date, and issuing country) are specified in the SCIM PATCH request body. Refer to the TravelPerk Add User Travel Documents API reference for the required structure.
Replaces all travel documents for a user via SCIM PATCH, overwriting existing passport and document records. Use this endpoint when a user's travel documents have been renewed and you need to replace the old records entirely with current document information.
In the User ID field, enter the UUID of the user whose travel documents to fully replace. This field is required.
The complete replacement set of travel documents is specified in the SCIM PATCH request body. All existing travel documents will be replaced.
Updates emergency contact information for a user via SCIM PATCH. Maintaining current emergency contact details is a key component of duty-of-care compliance — many organizations require that all travelers have up-to-date emergency contacts in their travel management system before traveling internationally.
In the User ID field, enter the UUID of the user whose emergency contact to update. This field is required.
The updated emergency contact details (name, relationship, and phone number) are specified in the SCIM PATCH request body. Refer to the TravelPerk Update User Emergency Contact API reference for the required structure.
Updates the country of residence for a user via SCIM PATCH. A user's country of residence affects which travel policies apply to them and which VAT reclaim rules are relevant — keeping this field accurate is important for correct tax treatment and policy enforcement.
In the User ID field, enter the UUID of the user whose country of residence to update. This field is required.
The ISO 3166-1 alpha-2 country code (for example, GB, DE, US) is specified in the SCIM PATCH request body.
TravelPerk destinations can also be manually configured to send data to any valid TravelPerk API endpoint. Select the Advanced tab at the top of the configuration screen, and follow the instructions in Connect to Any API to configure the API method, data format, endpoint URL, request headers, attribute exclusions, record batching, and response webhooks.
TravelPerk accepts JSON (application/json) for all write endpoints. Common write methods are POST for creating resources (users, cost centers, webhooks), PATCH for partial updates (recommended for most updates), PUT for full replacement (cost center users, SCIM user records), and DELETE for removing resources (webhooks, users via SCIM). For update/patch operations, include the resource ID at the end of the URL. TravelPerk uses two base URLs: the Production REST API v2 at https://app.travelperk.com/api/v2/ and the Production SCIM API v2 at https://app.travelperk.com/api/scim/v2/ for SCIM-based user management. TravelPerk's individual write endpoints accept one record per request — batching is most relevant for the Update Cost Centers (Bulk) endpoint, which accepts an array of cost center updates in a single call. You do not need to include the Authorization or Content-Type headers — these are automatically added by Nexla based on your TravelPerk credential configuration and the selected data format.
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 TravelPerk endpoint, open the destination resource menu, and select Activate.
The Nexset data will not be sent to TravelPerk until the destination is activated. Destinations can be activated immediately or at a later time, providing full control over data movement.