Ellipse Gradient for Header

TravelPerk Integration Guide

Integrate TravelPerk with enterprise systems through its OAuth 2.0-secured REST APIs, selected event notifications, and Martini workflows.

TravelPerk integration options at a glance

TravelPerk provides an API-led integration model based primarily on REST APIs and OAuth 2.0 authorization. Martini can retrieve Trips, Bookings, Users, Companies, Invoices, and travel-policy data through workflows, using documented filters, pagination, and incremental checkpoints for synchronization. TravelPerk webhook or callback support may be available for selected events and should be confirmed for the relevant account and product. A general-purpose bulk API, broad attachment API, GraphQL API, SOAP API, SDK, and direct database access were not confirmed. Martini can transform TravelPerk JSON, apply business rules, expose normalized APIs, and route data to finance, HR, identity, analytics, and collaboration applications.

Integration pointSupported by TravelPerk?Common use casesHow Martini supports it
REST APIsYesRetrieve Trips, Bookings, Users, Companies, Invoices, and travel-policy data, subject to the API version, plan, and enabled functionality.Martini can consume TravelPerk REST endpoints from workflows, process JSON responses, paginate through results, and expose normalized APIs to downstream applications.
AuthenticationYesTravelPerk API integrations use OAuth 2.0 application authorization with permissions determined by the granted access.Martini can store OAuth client credentials, access tokens, refresh configuration, and endpoint settings in secure environment configuration.
Webhooks and outbound callbacksLimitedSelected TravelPerk products or accounts may provide notifications for specific events; coverage, delivery behavior, and event names must be confirmed.Martini can expose a receiving API or workflow trigger, validate payloads, deduplicate notifications, and launch follow-up retrieval and processing.
Scheduled incremental synchronizationYesPeriodic retrieval supports Trips, Bookings, Users, and Invoices when webhook coverage is incomplete or unavailable.Martini can schedule workflows, maintain timestamp or cursor checkpoints, paginate results, and run reconciliation windows for late updates.
Bulk, asynchronous, and batch APIsNot confirmedA general-purpose TravelPerk bulk or asynchronous API was not confirmed; large jobs should use documented list endpoints unless TravelPerk confirms another facility.Martini can orchestrate paginated and checkpointed workflows and can incorporate a documented bulk endpoint if one is confirmed for the account.
File and attachment APIsNot confirmedInvoice files, receipts, or other document downloads may depend on a specific endpoint; broad file or attachment support was not confirmed.Martini can process a documented download URL or document representation, but workflows should not assume that every invoice or booking includes a file.

How TravelPerk exposes data and business events

TravelPerk REST APIs

TravelPerk's documented developer platform is API-led and uses REST-style HTTP endpoints. REST APIs are the primary mechanism for retrieving Trips, Bookings, Users, Companies, Invoices, and travel-policy data, subject to the customer's API version, plan, permissions, and enabled functionality.

Martini implementation pattern

Martini implementation pattern: A workflow authenticates with OAuth 2.0, calls the required TravelPerk endpoint, handles pagination and transient responses, maps JSON into a canonical model, applies business rules, and writes to the target system or exposes the result through a Martini API.

Implementation sequence

Authorize the TravelPerk API application
Retrieve the current page of TravelPerk data
Apply filters and pagination checkpoints
Validate and map the JSON response
Apply business and privacy rules
Write or upsert the target data

TravelPerk webhook-style notifications

TravelPerk may provide webhook or callback notifications for selected events, but event coverage and delivery semantics must be verified for the specific product, account, and required event. Notifications should not be assumed for every booking, itinerary, traveler, invoice, or policy change.

Martini implementation pattern

Martini implementation pattern: Expose a receiving API or workflow trigger, authenticate or validate the incoming notification as supported, deduplicate it, retrieve the current TravelPerk resource when necessary, and invoke downstream processing. Scheduled reconciliation remains important for missed or unsupported events.

Implementation sequence

Receive the selected TravelPerk notification
Validate the request and event payload
Deduplicate the event or source-object version
Retrieve the current TravelPerk resource when required
Map and enrich the event data
Invoke the downstream workflow and record the outcome

TravelPerk scheduled synchronization

Polling is the dependable fallback when the required TravelPerk event notification is unavailable or incomplete. Scheduled workflows can retrieve changed Trips, Bookings, Users, and Invoices using documented filters, pagination, and incremental checkpoints.

Martini implementation pattern

Martini implementation pattern: A scheduler starts a workflow that reads the last successful checkpoint, retrieves pages of changed data, processes each object idempotently, and persists the checkpoint only after successful processing. A recurring reconciliation window addresses late updates and missed runs.

Implementation sequence

Start the scheduled synchronization workflow
Load the last successful cursor or timestamp
Retrieve and process each paginated response
Upsert objects using stable TravelPerk identifiers
Persist the checkpoint after successful processing
Run periodic reconciliation for late or missed updates

Common TravelPerk integration patterns

Pattern 1: Sync bookings and invoices to finance

When to use this pattern

Use this pattern when finance or ERP teams need TravelPerk booking and billing information for accounts payable, cost allocation, reconciliation, or reporting. The workflow should distinguish new bookings from amendments, cancellations, refunds, and duplicate invoice data.

Integration direction
TravelPerk
Martini
NetSuite
Example Mapping
TravelPerk FieldCanonical FieldTarget Field
Booking.idsourceBookingIdexternalId
Booking.statustravelStatusbookingStatus
Booking.totalAmountgrossAmountamount
Invoice.numberinvoiceNumbertranId
Martini implementation pattern

A scheduled Martini workflow retrieves changed Bookings and related Invoices through paginated REST calls. It normalizes currency and legal-entity values, applies cost-center rules, checks stable identifiers and invoice duplicates, upserts the finance records, and routes validation or transient failures to retry and exception handling.

Martini capabilities used
  • scheduled workflows
  • API consumption
  • pagination and checkpoints
  • data mapping
  • business rules
  • idempotent writes
  • error handling

Pattern 2: Synchronize travelers and organizations

When to use this pattern

Use this pattern to keep TravelPerk traveler and organization information aligned with an HR or identity source. It supports onboarding, changes to departments or managers, deactivation, privacy filtering, and conflict review.

Integration direction
Workday
Martini
TravelPerk
Example Mapping
TravelPerk FieldCanonical FieldTarget Field
Worker.workerIduserIdTravelPerk user identifier
Worker.emailemailUser.email
Worker.departmentdepartmentCodeCompany or organization mapping
Worker.activelifecycleStatusUser status
Martini implementation pattern

Martini retrieves approved changes from the source system, matches them to TravelPerk Users using stable identifiers or email, applies activation and privacy rules, and calls the documented TravelPerk API where the required user operation is available. Ambiguous matches and unsupported operations are routed for review rather than retried blindly.

Martini capabilities used
  • workflow orchestration
  • API consumption
  • data matching
  • data mapping
  • privacy filtering
  • business rules
  • exception handling

Pattern 3: Route selected travel events to collaboration tools

When to use this pattern

Use this pattern when TravelPerk provides the required event notification and the organization wants controlled operational alerts for travelers, travel coordinators, or managers. It is also suitable for a polling-based equivalent when event delivery is unavailable.

Integration direction
TravelPerk
Martini
Microsoft Teams
Example Mapping
TravelPerk FieldCanonical FieldTarget Field
event.typenotificationTypemessage template
Booking.idsourceBookingIdmessage correlation
Booking.statustravelStatusmessage status
Trip.destinationdestinationapproved message field
Martini implementation pattern

Martini receives a selected TravelPerk notification or discovers the change through polling, validates and deduplicates it, retrieves current data when needed, removes sensitive itinerary details, applies routing rules, and posts a controlled Teams notification. Failed deliveries are retried according to the error class and recorded for replay.

Martini capabilities used
  • receiving APIs
  • workflow triggers
  • event deduplication
  • data enrichment
  • privacy rules
  • conditional routing
  • retry handling

Pattern 4: Synchronize TravelPerk data to a warehouse

When to use this pattern

Use this pattern for reporting and analytics across Trips, Bookings, Users, Invoices, and Companies. It is appropriate when the organization needs incremental loads, late-arriving update handling, schema monitoring, and periodic full reconciliation.

Integration direction
TravelPerk
Martini
Data warehouse
Example Mapping
TravelPerk FieldCanonical FieldTarget Field
Trip.idtripIdtrip_id
Booking.updatedAtsourceUpdatedAtupdated_at
User.idtravelerIdtraveler_id
Invoice.totalAmountinvoiceAmountinvoice_amount
Martini implementation pattern

A Martini scheduler retrieves each object type using documented filters and pagination, transforms TravelPerk JSON into warehouse models, preserves source identifiers and update timestamps, handles late updates through a reconciliation window, and records failed batches without advancing the checkpoint prematurely.

Martini capabilities used
  • scheduler triggers
  • REST API consumption
  • pagination
  • JSON transformation
  • checkpoint management
  • schema validation
  • monitoring and reconciliation

Applications commonly integrated with TravelPerk

TravelPerk data can be incorporated into enterprise HR, finance, identity, collaboration, CRM, and operational workflows. The following are practical architecture patterns; direct TravelPerk support and endpoint coverage should be validated for each application and customer account.

Application Scenario Direction Martini Pattern
Workday Synchronize employees, departments, managers, and employment status with TravelPerk traveler and organization data. Workday → Martini → TravelPerk Use scheduled Workday retrieval and TravelPerk REST API calls in a Martini workflow. Match users by stable identifiers, filter sensitive fields, apply lifecycle rules, and route conflicts or failed updates for review.
SAP Concur Coordinate selected booking or expense-related information where an organization operates both platforms or is migrating between them. TravelPerk → Martini → SAP Concur Retrieve TravelPerk Bookings and Invoices, map them to the required SAP Concur model, deduplicate by source identifiers, and send exceptions to a controlled replay workflow.
NetSuite Transfer TravelPerk invoice and booking information into accounts-payable, department, vendor, and cost-center processes. TravelPerk → Martini → NetSuite Run an incremental TravelPerk synchronization, normalize currencies and legal entities, apply invoice status rules, and upsert the resulting records through NetSuite APIs.
Salesforce Associate approved travel activity with accounts, opportunities, projects, or customer visits. TravelPerk → Martini → Salesforce Retrieve relevant Trips and Bookings, enrich them with internal account mappings, suppress unnecessary personal data, and write idempotent updates to Salesforce.
Microsoft Teams Notify travelers, travel coordinators, or managers about selected booking and itinerary events. TravelPerk → Martini → Microsoft Teams Receive a supported TravelPerk event or poll for changes, validate and enrich the payload, remove sensitive itinerary details, and post routed notifications with retry handling.
Slack Deliver controlled travel operations or finance notifications to designated channels. TravelPerk → Martini → Slack Use a Martini webhook or scheduled workflow to identify qualifying TravelPerk changes, apply channel-routing and privacy rules, and send messages only after successful deduplication.
Okta Coordinate user lifecycle and access-related processes for TravelPerk users. Okta → Martini → TravelPerk Consume approved identity or HR changes, match users against TravelPerk identifiers, apply activation and deactivation rules, and record unsupported or ambiguous matches for operational review.
Jira Create operational issues for failed bookings, invoice exceptions, policy violations, or support follow-up. TravelPerk → Martini → Jira Classify TravelPerk workflow failures and business exceptions, enrich them with source identifiers and diagnostics, and create or update Jira issues without generating duplicates.

How to build a TravelPerk integration in Martini

Objective

Establish TravelPerk API access with the permissions required for the selected objects and operations.

Instructions in Martini

  • Register or obtain the required TravelPerk application authorization.
  • Configure OAuth 2.0 client settings, scopes, and endpoints from the current TravelPerk documentation.
  • Store client credentials and tokens in Martini secrets and environment configuration.
  • Use HTTPS and separate development, testing, and production configuration where supported.

Objective

Select polling, a supported TravelPerk notification, or a hybrid design based on the required event coverage and consistency needs.

Instructions in Martini

  • Use a scheduler for incremental retrieval when event coverage is unavailable or uncertain.
  • Use a Martini receiving API or workflow trigger only for confirmed TravelPerk notifications.
  • Add periodic reconciliation even when selected webhook-style events are available.

Objective

Read the required TravelPerk objects while respecting endpoint filters, pagination, permissions, and API limits.

Instructions in Martini

  • Retrieve Trips, Bookings, Users, Companies, Invoices, or travel policies through documented REST endpoints.
  • Process paginated responses and persist a cursor or timestamp only after successful processing.
  • Retrieve the current resource after a notification when the event payload is incomplete.

Objective

Coordinate validation, enrichment, business rules, target calls, and operational handling in a maintainable Martini workflow.

Instructions in Martini

  • Separate retrieval, transformation, target writes, and exception handling into clear workflow stages.
  • Use reusable logic for identifier matching, privacy filtering, and reconciliation.
  • Route permanent failures to an operational exception process rather than retrying indefinitely.

Objective

Convert TravelPerk JSON and object structures into the canonical model required by each target system.

Instructions in Martini

  • Map stable TravelPerk identifiers and source timestamps.
  • Normalize currencies, statuses, dates, legal entities, and cost centers where required.
  • Validate required fields and tolerate additive source fields without silently changing business meaning.

Objective

Apply organization-specific controls before data is written or notifications are sent.

Instructions in Martini

  • Implement booking status, cancellation, refund, duplicate invoice, and lifecycle rules.
  • Minimize personal and itinerary data transferred to each target.
  • Use explicit conflict-resolution rules for user and organization matching.

Common TravelPerk data objects used in integrations

ObjectTypical UseCommon target systemsMartini handling
TripsRepresent grouped business travel itineraries and associated travel activity.Data warehouses, analytics platforms, Salesforce, Microsoft Teams, SlackMartini retrieves Trips through REST workflows, maps itinerary fields to canonical travel models, filters personal data, and supports incremental reconciliation.
BookingsRepresent reservations for flights, hotels, rail, and other travel services.NetSuite, SAP Concur, finance platforms, Salesforce, JiraMartini retrieves and normalizes booking status, dates, amounts, and stable identifiers, then applies idempotency, amendment, cancellation, and refund rules.
UsersRepresent travelers and other users associated with a TravelPerk organization.Workday, Okta, identity platforms, HR systems, data warehousesMartini matches users by stable identifiers or email, applies privacy filtering and lifecycle rules, and routes ambiguous matches for review.
InvoicesRepresent billing documents and invoice-related information associated with travel activity.NetSuite, SAP Concur, finance applications, data warehousesMartini validates required invoice fields, normalizes currencies and legal entities, detects duplicates, and supports replay of failed writes.
CompaniesRepresent TravelPerk customer organizations and configuration context.Workday, identity platforms, finance systems, internal master-data servicesMartini uses Companies to enrich organization mappings, apply tenant or legal-entity rules, and control downstream routing.
Travel policiesRepresent rules governing how employees can book business travel.HR systems, reporting platforms, policy services, operational workflowsMartini retrieves documented policy data where available, maps policy attributes to internal rules, and flags policy exceptions for controlled processing.

Authentication and security considerations

OAuth 2.0 authorization

TravelPerk's developer platform documents OAuth 2.0-based API authorization. Required application approval, scopes, grant flow, and token lifetime should be confirmed against the current TravelPerk configuration.

Secrets and transport

  • Store OAuth client credentials, tokens, scopes, and endpoint configuration in Martini secrets and environment configuration.
  • Use HTTPS for TravelPerk API requests.
  • Request only the permissions needed for the selected objects and operations.
  • Plan for token expiration, refresh, revocation, and credential rotation.

Travel data protection

  • Minimize personal and itinerary data transferred to each destination.
  • Restrict access to traveler and invoice data by role and business need.
  • Prevent OAuth tokens, payment data, and unnecessary personal information from entering logs.

Operational considerations for TravelPerk integrations

Pagination and checkpoints

Assume list endpoints may be paginated unless the current endpoint documentation states otherwise. Persist a cursor or timestamp only after successful processing and periodically revisit a time window for late updates.

Rate limits and retries

Confirm current TravelPerk limits for the relevant plan and endpoint. Limit concurrency and use exponential backoff for HTTP 429 and transient 5xx responses; do not blindly retry validation or authorization failures.

Idempotency

Use stable identifiers for Trips, Bookings, Users, and Invoices. For selected event flows, store event identifiers or source-object/version combinations and use idempotent downstream upserts.

Schema and testing

Monitor booking statuses, traveler fields, invoice structures, pagination behavior, and API-version changes. Validate required fields and maintain contract tests against representative TravelPerk responses.

Reconciliation

Use hybrid synchronization where appropriate: notifications can initiate targeted retrieval, while scheduled reconciliation detects missed events and corrects data drift.

Why use Martini instead of scripts or point-to-point integrations?

Orchestrated integration logic

Martini coordinates TravelPerk API calls, pagination, transformations, business rules, downstream writes, and exception handling in workflows rather than scattering behavior across scripts.

Reusable and maintainable assets

Common authentication, mapping, validation, privacy, and reconciliation logic can be organized into reusable integration assets and exposed through controlled Martini APIs.

Reliable operations

  • Apply checkpoints, idempotency, retries, and reconciliation consistently.
  • Separate transient failures from validation and authorization failures.
  • Provide operational visibility and replay paths for failed Bookings, Invoices, and event-driven processes.

API-led flexibility

Martini can consume the documented TravelPerk REST API and expose normalized APIs to internal applications, avoiding a brittle point-to-point design while retaining the option for custom logic when vendor-specific rules require it.

Frequently asked questions

How can TravelPerk be integrated with enterprise systems?

TravelPerk can be integrated primarily through its OAuth 2.0-secured REST APIs. Enterprise workflows can retrieve Trips, Bookings, Users, Companies, Invoices, and travel-policy data using documented filters and pagination. Selected webhook or callback notifications may also be available, but event coverage must be confirmed for the account and product. Scheduled polling and reconciliation are recommended where notifications are incomplete.

Can Martini integrate with TravelPerk?

Yes. Martini can consume TravelPerk REST APIs from workflows, securely manage OAuth 2.0 configuration, transform TravelPerk JSON, apply business rules, and write to downstream systems. Where TravelPerk provides the required selected event notification, Martini can also receive it through a Martini API or workflow trigger.

Do I need a connector to integrate TravelPerk with Martini?

No dedicated TravelPerk connector is required. Martini can integrate using TravelPerk's confirmed native mechanisms, primarily its REST APIs and OAuth 2.0 authorization, with webhook-style notifications where the relevant TravelPerk product and account support them.

Is there any extra Lonti cost to integrate TravelPerk with Martini?

Lonti does not charge an additional per-connector or per-vendor fee to integrate TravelPerk. The integration is subject to the provisioned capacity of the Martini environment. Separate costs may apply from TravelPerk, cloud infrastructure, or other third-party systems depending on subscription, usage, and deployment model.

Which TravelPerk integration methods should an enterprise use?

The documented TravelPerk REST API should be the default integration method, with OAuth 2.0 used for authorization. Use scheduled incremental retrieval with pagination and checkpoints for synchronization. Use webhook-style notifications only when the required event, delivery behavior, and account support have been confirmed. GraphQL and SOAP were not confirmed.

Are TravelPerk webhooks or real-time events available?

TravelPerk may provide webhook or callback support for selected events, but this is not confirmed for every object or account. The required event names, payloads, delivery semantics, and retry behavior should be verified. A hybrid design that combines notifications with scheduled reconciliation is recommended.

How does Martini synchronize and transform TravelPerk data?

Martini workflows retrieve TravelPerk objects through REST endpoints, process pagination, maintain incremental checkpoints, and map JSON into canonical or target-specific models. Workflows can normalize currencies and statuses, apply privacy and business rules, upsert downstream data, and periodically reconcile a time window for late or missed updates.

How does Martini handle TravelPerk errors, retries, and duplicates?

Martini can classify authentication, authorization, validation, rate-limit, not-found, and server errors, retry transient failures with backoff, and route permanent failures to an exception or replay workflow. Stable TravelPerk identifiers and event or source-object versions can support idempotent upserts and duplicate prevention.