Work with this as data
Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
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.
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/concur:concur-expense-reports-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
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 Specification
openapi: 3.2.0
info:
title: Concur Expense Reports API
x-refined-note:
- x-generated-from differs across the merged source definitions and was not carried
- x-last-validated differs across the merged source definitions and was not carried
version: '1.0'
description: 'Operations tagged Expense Reports across 2 of this provider''s published API definitions: concur-expense-api.yaml, sap-concur-expense-expense-reports-api-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://us.api.concursolutions.com
description: US Production
- url: https://emea.api.concursolutions.com
description: EMEA Production
- url: https://us.api.concursolutions.com/api/v3.0
description: United States Production
- url: https://eu.api.concursolutions.com/api/v3.0
description: Europe Production
- url: https://cn.api.concursolutions.com/api/v3.0
description: China Production
tags:
- name: Expense Reports
description: Manage expense reports
paths:
/expensereports/v4/users/{userId}/context/{contextType}/reports:
get:
operationId: getExpenseReports
summary: SAP Concur Get Expense Reports
description: Retrieves all expense reports for the specified user and context.
tags:
- Expense Reports
parameters:
- name: userId
in: path
required: true
description: The unique identifier of the user.
schema:
type: string
- name: contextType
in: path
required: true
description: The context type for the reports (TRAVELER, PROXY, etc.).
schema:
type: string
enum:
- TRAVELER
- PROXY
- APPROVER
responses:
'200':
description: Successfully retrieved expense reports.
content:
application/json:
schema:
$ref: '#/components/schemas/ExpenseReportCollection'
examples:
GetExpenseReports200Example:
summary: Default getExpenseReports 200 response
x-microcks-default: true
value:
reports:
- reportId: '500123'
reportName: Q1 Travel Expenses
ownerName: Jane Smith
submitDate: '2026-03-15T14:30:00Z'
approvalStatus: SUBMITTED
total: 2450.75
currencyCode: USD
'401':
description: Unauthorized - invalid or missing authentication.
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
security:
- bearerAuth: []
post:
operationId: createExpenseReport
summary: SAP Concur Create Expense Report
description: Creates a new expense report for the specified user.
tags:
- Expense Reports
parameters:
- name: userId
in: path
required: true
description: The unique identifier of the user.
schema:
type: string
- name: contextType
in: path
required: true
description: The context type for the report.
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExpenseReportCreate'
examples:
CreateExpenseReportRequestExample:
summary: Default createExpenseReport request
x-microcks-default: true
value:
reportName: Q1 Travel Expenses
businessPurpose: Client meetings in New York
countryCode: US
currencyCode: USD
reportDate: '2026-03-15'
responses:
'201':
description: Expense report created successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/ExpenseReport'
'400':
description: Bad request - invalid report data.
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
security:
- bearerAuth: []
servers:
- url: https://us.api.concursolutions.com
description: US Production
- url: https://emea.api.concursolutions.com
description: EMEA Production
/expensereports/v4/reports/{reportId}:
get:
operationId: getExpenseReport
summary: SAP Concur Get Expense Report by ID
description: Retrieves a specific expense report by its identifier.
tags:
- Expense Reports
parameters:
- name: reportId
in: path
required: true
description: The unique identifier of the expense report.
schema:
type: string
responses:
'200':
description: Successfully retrieved the expense report.
content:
application/json:
schema:
$ref: '#/components/schemas/ExpenseReport'
'404':
description: Report not found.
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
security:
- bearerAuth: []
servers:
- url: https://us.api.concursolutions.com
description: US Production
- url: https://emea.api.concursolutions.com
description: EMEA Production
/expense/reports:
get:
operationId: listExpenseReports
summary: List Expense Reports
description: Returns a collection of expense reports belonging to the current user or accessible via company-level access. Supports filtering by approval status, submission date, payment status, and reimbursement method.
tags:
- Expense Reports
parameters:
- name: offset
in: query
description: Starting page offset for pagination
required: false
schema:
type: string
- name: limit
in: query
description: Number of records to return per page (max 100)
required: false
schema:
type: integer
maximum: 100
- name: approvalStatusCode
in: query
description: 'Filter by approval status code. Valid values: A_AAFH, A_AAPH, A_ADMIN, A_APPR, A_EXTV, A_FILE, A_NOTF, A_PBDG, A_PECO, A_PEND, A_PVAL, A_RESU, A_RHLD, A_TEXP'
required: false
schema:
type: string
- name: paymentStatusCode
in: query
description: 'Filter by payment status code. Valid values: P_HOLD, P_NOTP, P_PAID, P_PAYC, P_PROC'
required: false
schema:
type: string
- name: modifiedDateBefore
in: query
description: Return reports modified before this date (ISO 8601 format)
required: false
schema:
type: string
format: date-time
- name: modifiedDateAfter
in: query
description: Return reports modified after this date (ISO 8601 format)
required: false
schema:
type: string
format: date-time
- name: userID
in: query
description: The login ID of the report owner. May only be used by company-level access token holders.
required: false
schema:
type: string
- name: reimbursementMethod
in: query
description: 'Filter by reimbursement method. Valid values: ADPPAYR, APCHECK, AVI, CNQRPAY, PMTSERV'
required: false
schema:
type: string
responses:
'200':
description: Success - Returns list of expense reports
content:
application/json:
schema:
$ref: '#/components/schemas/ExpenseReportCollection_2'
'400':
description: Bad Request
'401':
description: Unauthorized
'500':
description: Internal Server Error
security:
- OAuth2:
- expense.report.read
- expense.report.write
post:
operationId: postExpenseReports
summary: Create Expense Report
description: Creates a new expense report header. After creating the report header, expense entries can be added using the expense entries endpoint.
tags:
- Expense Reports
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExpenseReportCreate_2'
responses:
'200':
description: Success - Returns the created expense report ID
content:
application/json:
schema:
$ref: '#/components/schemas/ExpenseReportCreateResponse'
'400':
description: Bad Request
'401':
description: Unauthorized
'500':
description: Internal Server Error
security:
- OAuth2:
- expense.report.read
- expense.report.write
x-operation-id-source: normalized
x-operation-id-original: createExpenseReport
servers:
- url: https://us.api.concursolutions.com/api/v3.0
description: United States Production
- url: https://eu.api.concursolutions.com/api/v3.0
description: Europe Production
- url: https://cn.api.concursolutions.com/api/v3.0
description: China Production
/expense/reports/{id}:
get:
operationId: getExpenseReportsById
summary: Get Expense Report
description: Returns a single expense report by its ID. Includes report header information such as approval status, totals, and submission date.
tags:
- Expense Reports
parameters:
- name: id
in: path
description: The unique identifier of the expense report
required: true
schema:
type: string
responses:
'200':
description: Success - Returns the expense report
content:
application/json:
schema:
$ref: '#/components/schemas/ExpenseReport_2'
'400':
description: Bad Request
'401':
description: Unauthorized
'404':
description: Not Found
'500':
description: Internal Server Error
security:
- OAuth2:
- expense.report.read
- expense.report.write
x-operation-id-source: normalized
x-operation-id-original: getExpenseReport
put:
operationId: updateExpenseReport
summary: Update Expense Report
description: Updates an existing expense report header. Only draft reports (not yet submitted) can be updated.
tags:
- Expense Reports
parameters:
- name: id
in: path
description: The unique identifier of the expense report
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExpenseReportUpdate'
responses:
'204':
description: Success - No content returned
'400':
description: Bad Request
'401':
description: Unauthorized
'404':
description: Not Found
'500':
description: Internal Server Error
security:
- OAuth2:
- expense.report.read
- expense.report.write
delete:
operationId: deleteExpenseReport
summary: Delete Expense Report
description: Deletes an expense report. Only draft reports that have never been submitted can be deleted.
tags:
- Expense Reports
parameters:
- name: id
in: path
description: The unique identifier of the expense report
required: true
schema:
type: string
responses:
'204':
description: Success - No content returned
'400':
description: Bad Request
'401':
description: Unauthorized
'404':
description: Not Found
'500':
description: Internal Server Error
security:
- OAuth2:
- expense.report.read
- expense.report.write
servers:
- url: https://us.api.concursolutions.com/api/v3.0
description: United States Production
- url: https://eu.api.concursolutions.com/api/v3.0
description: Europe Production
- url: https://cn.api.concursolutions.com/api/v3.0
description: China Production
components:
schemas:
ExpenseReport:
type: object
description: An expense report containing expense entries.
properties:
reportId:
type: string
description: Unique identifier for the expense report.
example: '500123'
reportName:
type: string
description: Name of the expense report.
example: Q1 Travel Expenses
ownerName:
type: string
description: Full name of the report owner.
example: Jane Smith
businessPurpose:
type: string
description: Business purpose for the expenses.
example: Client meetings in New York
submitDate:
type: string
format: date-time
description: Date the report was submitted.
example: '2026-03-15T14:30:00Z'
approvalStatus:
type: string
description: Current approval status of the report.
enum:
- NOT_SUBMITTED
- SUBMITTED
- APPROVED
- SENT_BACK
- RECALLED
example: SUBMITTED
total:
type: number
format: double
description: Total amount of all expenses in the report.
example: 2450.75
currencyCode:
type: string
description: ISO 4217 currency code.
example: USD
countryCode:
type: string
description: ISO country code.
example: US
reportDate:
type: string
format: date
description: Date of the report.
example: '2026-03-15'
ExpenseReportCollection:
type: object
description: Collection of expense reports.
properties:
reports:
type: array
items:
$ref: '#/components/schemas/ExpenseReport'
ExpenseReportCreate:
type: object
description: Request body for creating a new expense report.
required:
- reportName
- currencyCode
properties:
reportName:
type: string
description: Name of the expense report.
example: Q1 Travel Expenses
businessPurpose:
type: string
description: Business purpose for the expenses.
example: Client meetings in New York
countryCode:
type: string
description: ISO country code.
example: US
currencyCode:
type: string
description: ISO 4217 currency code.
example: USD
reportDate:
type: string
format: date
description: Date of the report.
example: '2026-03-15'
ExpenseReportUpdate:
type: object
properties:
Name:
type: string
description: Updated name for the expense report
Comment:
type: string
description: Updated comment
Purpose:
type: string
description: Updated business purpose
ExpenseReportCollection_2:
type: object
properties:
Items:
type: array
items:
$ref: '#/components/schemas/ExpenseReport_2'
NextPage:
type: string
description: URL to the next page of results
ExpenseReport_2:
type: object
properties:
ID:
type: string
description: The unique identifier of the expense report
Name:
type: string
description: The name of the expense report
Total:
type: number
format: double
description: Total amount of all expenses in the report
CurrencyCode:
type: string
description: ISO 4217 currency code for the report total
ApprovalStatusCode:
type: string
description: Current approval status code
ApprovalStatusName:
type: string
description: Human-readable approval status name
PaymentStatusCode:
type: string
description: Current payment status code
PaymentStatusName:
type: string
description: Human-readable payment status name
SubmitDate:
type: string
format: date-time
description: Date the report was submitted for approval
CreateDate:
type: string
format: date-time
description: Date the report was created
ProcessingPaymentDate:
type: string
format: date-time
description: Date payment processing began
OwnerLoginID:
type: string
description: Login ID of the report owner
OwnerName:
type: string
description: Full name of the report owner
PolicyID:
type: string
description: The expense policy ID applied to this report
ReportNumber:
type: string
description: Human-readable report number
HasException:
type: boolean
description: Whether the report has policy exceptions
URI:
type: string
description: URI to retrieve this resource
ExpenseReportCreate_2:
type: object
required:
- Name
properties:
Name:
type: string
description: The name of the expense report
Comment:
type: string
description: Additional comments for the report
PolicyID:
type: string
description: The expense policy ID to apply
Purpose:
type: string
description: Business purpose for the expenses
UserDefinedDate:
type: string
format: date-time
description: User-defined date for the report
ExpenseReportCreateResponse:
type: object
properties:
ID:
type: string
description: The unique identifier of the created expense report
URI:
type: string
description: URI of the created resource
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: OAuth 2.0 Bearer Token authentication.
OAuth2:
type: oauth2
flows:
authorizationCode:
authorizationUrl: https://us.api.concursolutions.com/oauth2/v0/authorize
tokenUrl: https://us.api.concursolutions.com/oauth2/v0/token
scopes:
expense.report.read: Read expense reports
expense.report.write: Create and modify expense reports
expense.report.delete: Delete expense reports
externalDocs:
description: SAP Concur Expense API Reference
url: https://developer.concur.com/api-reference/expense/
x-refined-from:
- concur-expense-api.yaml
- sap-concur-expense-expense-reports-api-openapi.yml