Perk Invoices API
The Invoices API from Perk — 4 operation(s) for invoices.
The Invoices API from Perk — 4 operation(s) for invoices.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/perk:perk-invoices-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: travelperk-api-v1 Invoices API
version: '1.5'
servers:
- url: https://api.travelperk.com/
security:
- sec0: []
tags:
- name: Invoices
paths:
/invoices:
get:
summary: List all Invoices
description: Get list of invoices, filters may be added as query parameters. Only invoices issued on or after January 1st 2019 will be returned
operationId: list-invoice
parameters:
- name: profile_id
in: query
description: Filter, only fetch invoices that match any of the provided invoice profile ids
schema:
type: array
items:
type: string
- name: serial_number
in: query
description: Filter, only fetch invoices that exactly match one of the provided invoice serial numbers
schema:
type: array
items:
type: string
- name: serial_number_contains
in: query
description: Filter, only fetch invoices that partially match a serial_number
schema:
type: string
- name: billing_period
in: query
description: Filter, only fetch invoices that match a billing_period (instant, weekly, biweekly, monthly)
schema:
type: string
- name: travelperk_bank_account_number
in: query
description: Filter, only fetch invoices that match the number of the tk_bank_account in the invoice
schema:
type: string
- name: customer_country_name
in: query
description: Filter, only fetch invoices that match the country name of the customer's billing address in the invoice
schema:
type: string
- name: status
in: query
description: 'Filter, only fetch invoices that match invoice''s status. Available values : paid, unpaid'
schema:
type: string
- name: issuing_date_gte
in: query
description: Filter, only fetch invoices where invoice.issuing_date is greater than or equal to this date. Dates should be in format YYYY-MM-DD.
schema:
type: string
format: date
default: '2023-11-10'
- name: issuing_date_lte
in: query
description: Filter, only fetch invoices where invoice.issuing_date is less than or equal to this date. Dates should be in format YYYY-MM-DD.
schema:
type: string
format: date
default: '2023-11-10'
- name: due_date_gte
in: query
description: Filter, only fetch invoices where invoice.due_date is greater than or equal to this date. Dates should be in format YYYY-MM-DD.
schema:
type: string
format: date
- name: due_date_lte
in: query
description: Filter, only fetch invoices where invoice.due_date is less than or equal to this date. Dates should be in format YYYY-MM-DD.
schema:
type: string
format: date
- name: limit
in: query
description: Maximum number of elements to return per page. See more info in [Pagination](reference#pagination-1)
schema:
type: integer
format: int32
- name: offset
in: query
description: Pagination offset index, 0 based.
schema:
type: integer
format: int32
- name: sort
in: query
description: 'Sorting criteria on fields in Invoice. Available values : issuing_date, -issuing_date'
schema:
type: string
default: -issuing_date
responses:
'200':
description: '200'
content:
application/json:
examples:
Result:
value: "{\n \"serial_number\": \"INV-01-987654\",\n \"profile_id\": \"edb6322b-8e11-48e9-8d6f-6402e445e50d\",\n \"company_id\": 1346,\n \"profile_name\": \"My Company Ltd\",\n \"billing_information\": {\n \"legal_name\": \"My Company Ltd\",\n \"vat_number\": \"GB123456789\",\n \"address_line_1\": \"199 Bishopsgate\",\n \"address_line_2\": \"Spitalfields\",\n \"city\": \"London\",\n \"postal_code\": \"EC2M 3TY\",\n \"country_name\": \"United Kingdom\"\n },\n \"mode\": \"reseller\",\n \"status\": \"paid\",\n \"issuing_date\": \"2020-03-31\",\n \"billing_period\": \"monthly\",\n \"from_date\": \"2020-03-01\",\n \"to_date\": \"2020-03-31\",\n \"due_date\": \"2020-04-15\",\n \"currency\": \"EUR\",\n \"total\": \"13579.24\",\n \"taxes_summary\": [\n {\n \"tax_regime\": \"STAR\",\n \"subtotal\": \"6543.21\",\n \"tax_percentage\": \"0.00\",\n \"tax_amount\": \"0.00\",\n \"total\": \"6543.21\",\n },\n {\n \"tax_regime\": \"G-VAT-R\",\n \"subtotal\": \"5912.63\",\n \"tax_percentage\": \"19.00\",\n \"tax_amount\": \"1123.40\",\n \"total\": \"7036.03\",\n }\n ],\n \"reference\": \"My Company Ltd - SEPA - Monthly 2020-03\",\n \"travelperk_bank_account\": {\n \"bank_name\": \"La Caixa\",\n \"account_number\": \"ES01 2345 6789 1098 7654 3210\",\n \"bic\": \"CAIX ES BB XXX\",\n \"reference\": \"INV-01-987654\"\n },\n \"pdf\": \"https://api.travelperk.com/invoices/INV-01-987654/pdf\"\n}"
x-readme:
code-samples:
- language: curl
code: "curl -i \\\n -H 'Authorization: ApiKey 123456.abcdefghijklmnopqrstuvwxyz123456' \\\n -H 'Api-Version: 1' \\\n -X GET https://api.travelperk.com/invoices"
samples-languages:
- curl
tags:
- Invoices
/invoices/lines:
get:
summary: List all Invoice lines
description: Get list of invoices lines, filters may be added as query parameters. Returns InvoiceLineExtended models.
operationId: list-invoice-lines-1
parameters:
- name: profile_id
in: query
description: Filter, only fetch invoices that match any of the provided profile ids
schema:
type: array
items:
type: string
- name: serial_number
in: query
description: Filter, only fetch invoices that exactly match one of the provided serial numbers
schema:
type: array
items:
type: string
- name: serial_number_contains
in: query
description: Filter, only fetch lines on invoices that partially match invoice.serial_number
schema:
type: string
- name: billing_period
in: query
description: Filter, only fetch invoices that match a billing_period (instant, weekly, biweekly, monthly)
schema:
type: string
- name: travelperk_bank_account_number
in: query
description: Filters the invoices that need to be paid against a specific TravelPerk’s bank account, using its account number. See the tk_bank_account attribute of the Invoice model for more detail
schema:
type: string
- name: customer_country_name
in: query
description: Filter, only fetch invoices that match the country name of the customer's billing address in the invoice
schema:
type: string
- name: status
in: query
description: 'Filter, only fetch invoices that match invoice''s status. Available values : paid, unpaid'
schema:
type: string
- name: issuing_date_gte
in: query
description: Filter, only fetch invoices where invoice.issuing_date is greater than or equal to this date
schema:
type: string
format: date
- name: issuing_date_lte
in: query
description: Filter, only fetch invoices where invoice.issuing_date is less than or equal to this date
schema:
type: string
format: date
- name: due_date_gte
in: query
description: Filter, only fetch invoices where invoice.due_date is greater than or equal to this date
schema:
type: string
format: date
- name: due_date_lte
in: query
description: Filter, only fetch invoices where invoice.due_date is less than or equal to this date
schema:
type: string
format: date
- name: limit
in: query
description: Pagination maximum number of elements to return. See more info in [Pagination](reference#pagination-1)
schema:
type: integer
format: int32
- name: offset
in: query
description: Pagination offset index, 0 based.
schema:
type: integer
format: int32
- name: network_transaction_id
in: query
description: Filter, only fetch InvoiceLines that match the specified network transaction ID of the card transaction used to cover them. This ID is provided by card vendors such as expense card providers to help match card transactions with invoice lines in TravelPerk. This filter cannot be combined with other filters and is only available for invoices with dates after March 31, 2025.
schema:
type: string
responses:
'200':
description: '200'
content:
application/json:
examples:
Result:
value: "{\n \"total\": 1,\n \"offset\": 0,\n \"limit\": 10,\n \"invoice_lines\": [\n {\n \"id\": \"6dc6d45e-55f5-48cc-9e23-cad798b364ef\",\n \"expense_date\": \"2020-02-13\",\n \"description\": \"FLIGHT for Trip ID 1687664\",\n \"quantity\": 1,\n \"unit_price\": \"20.00000000\",\n \"non_taxable_unit_price\": \"0E-8\",\n \"tax_percentage\": \"0E-8\",\n \"tax_amount\": \"0E-8\",\n \"tax_regime\": \"STAR\",\n \"total_amount\": \"20.00000000\",\n \"metadata\": {\n \"trip_id\": 1687664,\n \"trip_name\": \"Meeting with German company GmbH\",\n \"service\": \"flight\",\n \"travelers\": [\n { \"name\": \"John Doe\", \"email\": \"john.doe@mycompany.com\", \"external_id\": \"ASD123\" \n }\n ],\n \t\"start_date\": \"2020-03-27\",\n \"end_date\": \"2020-04-05\",\n \"cost_center\": \"DACH Accounts\",\n \"labels\": [ \"Sales trips\", \"Special\",],\n \"vendor\": {\"code\": \"LH\", \"name\": \"Lufthansa\"},\n \"out_of_policy\": false,\n \"approvers\": [\n { \"name\": \"Jake Bolt\", \"email\": \"jake.bolt@mycompany.com\", \"external_id\": \"ASD124\" \n }\n ],\n \"booker\": { \"name\": \"Marien Lint\", \"email\": \"marien.lint@mycompany.com\", \"external_id\": \"ASD124\" \n }\n },\n \"invoice_serial_number\": \"INV-01-190111\",\n \"profile_id\": \"09d649d1-35fa-4d9f-b688-046d5790afd2\",\n \"profile_name\": \"My Company Ltd\",\n \"invoice_mode\": \"reseller\",\n \"invoice_status\": \"paid\",\n \"issuing_date\": \"2020-02-13\",\n \"due_date\": \"2020-02-13\",\n \"currency\": \"EUR\"\n }\n ]\n}"
deprecated: false
x-readme:
code-samples:
- language: curl
code: "curl -i \\\n -H 'Authorization: ApiKey 123456.abcdefghijklmnopqrstuvwxyz123456' \\\n -H 'Api-Version: 1' \\\n -X GET https://api.travelperk.com/invoices/lines"
samples-languages:
- curl
tags:
- Invoices
/invoices/{serial_number}:
get:
summary: Retrieve an Invoice
description: Get invoice detail
operationId: get-invoice
parameters:
- name: serial_number
in: path
description: invoice serial number
schema:
type: string
required: true
responses:
'200':
description: '200'
content:
application/json:
examples:
Result:
value: "{\n \"serial_number\": \"INV-01-987654\",\n \"profile_id\": \"edb6322b-8e11-48e9-8d6f-6402e445e50d\",\n \"profile_name\": \"My Company Ltd\",\n \"billing_information\": {\n \"legal_name\": \"My Company Ltd\",\n \"vat_number\": \"GB123456789\",\n \"address_line_1\": \"199 Bishopsgate\",\n \"address_line_2\": \"Spitalfields\",\n \"city\": \"London\",\n \"postal_code\": \"EC2M 3TY\",\n \"country_name\": \"United Kingdom\"\n },\n \"mode\": \"reseller\",\n \"status\": \"paid\",\n \"issuing_date\": \"2020-03-31\",\n \"billing_period\": \"monthly\",\n \"from_date\": \"2020-03-01\",\n \"to_date\": \"2020-03-31\",\n \"due_date\": \"2020-04-15\",\n \"currency\": \"EUR\",\n \"total\": \"13579.24\",\n \"lines\": {\n \"total\": 15,\n \"data\": [\n (objects of type InvoiceLine)\n ],\n \"next\": \"/invoices/lines?serial_number=INV-01-987654&offset=10\"\n },\n \"taxes_summary\": [\n {\n \"tax_regime\": \"STAR\",\n \"subtotal\": \"6543.21\",\n \"tax_percentage\": \"0.00\",\n \"tax_amount\": \"0.00\",\n \"total\": \"6543.21\",\n },\n {\n \"tax_regime\": \"G-VAT-R\",\n \"subtotal\": \"5912.63\",\n \"tax_percentage\": \"19.00\",\n \"tax_amount\": \"1123.40\",\n \"total\": \"7036.03\",\n }\n ],\n \"reference\": \"My Company Ltd - SEPA - Monthly 2020-03\",\n \"travelperk_bank_account\": {\n \"bank_name\": \"La Caixa\",\n \"account_number\": \"ES01 2345 6789 1098 7654 3210\",\n \"bic\": \"CAIX ES BB XXX\",\n \"reference\": \"INV-01-987654\"\n },\n \"pdf\": \"https://api.travelperk.com/invoices/INV-01-987654/pdf\"\n}"
deprecated: false
x-readme:
code-samples:
- language: curl
code: "curl -i \\\n -H 'Authorization: ApiKey 123456.abcdefghijklmnopqrstuvwxyz123456' \\\n -H 'Api-Version: 1' \\\n -X GET https://api.travelperk.com/invoices/INV-01-987654"
samples-languages:
- curl
tags:
- Invoices
/invoices/{serial_number}/pdf:
get:
summary: Retrieve Invoice PDF
description: Download invoice in PDF format
operationId: download-pdf
parameters:
- name: serial_number
in: path
description: invoice serial number
schema:
type: string
required: true
responses:
'200':
description: '200'
content:
text/plain:
examples:
Result:
value: '***binary***'
deprecated: false
x-readme:
code-samples:
- language: curl
code: "curl -i \\\n -H 'Authorization: ApiKey 123456.abcdefghijklmnopqrstuvwxyz123456' \\\n -H 'Api-Version: 1' \\\n -X GET https://api.travelperk.com/invoices/INV-01-987654/pdf"
samples-languages:
- curl
tags:
- Invoices
components:
securitySchemes:
sec0:
type: apiKey
in: header
x-default: ''
name: Authorization
x-bearer-format: token
x-readme-fauxas: true
x-provenance:
method: searched
source: https://developers.perk.com/reference
harvested: '2026-10-14'
tool: harvest-readme-openapi.py
note: Assembled verbatim from the OpenAPI definition ReadMe embeds in each operation page of the provider's developer portal; paths and components merged by API title, nothing authored.
assembled_from:
- https://developers.perk.com/reference/companies-1.md
- https://developers.perk.com/reference/delete-webhook-subscription.md
- https://developers.perk.com/reference/download-pdf.md
- https://developers.perk.com/reference/get-invoice.md
- https://developers.perk.com/reference/get-subscription-details.md
- https://developers.perk.com/reference/list-all-bookings.md
- https://developers.perk.com/reference/list-all-suppliers.md
- https://developers.perk.com/reference/list-all-trips.md
- https://developers.perk.com/reference/list-all-users-1.md
- https://developers.perk.com/reference/list-events.md
- https://developers.perk.com/reference/list-invoice-lines-1.md
- https://developers.perk.com/reference/list-invoice-profiles.md
- https://developers.perk.com/reference/list-invoice.md
- https://developers.perk.com/reference/list-webhooks.md
- https://developers.perk.com/reference/retrieve-a-trip-by-id.md
- https://developers.perk.com/reference/retrieve-custom-fields.md
- https://developers.perk.com/reference/subscribe-to-event.md
- https://developers.perk.com/reference/test-webhook.md
- https://developers.perk.com/reference/update-subscription.md
merge:
pages: 19
deduped: 18
conflicts_kept_first: 0