openapi: 3.0.3 info: title: SAP Concur Expense Expense Reports API description: REST API for managing expense reports, entries, allocations, and attendees. Supports creating, updating, and submitting expense reports with receipt images, policy validation, and approval workflows. version: '4.0' contact: name: SAP Concur Developer Support url: https://developer.concur.com/ x-generated-from: documentation x-last-validated: '2026-04-18' servers: - url: https://us.api.concursolutions.com description: US Production - url: https://emea.api.concursolutions.com description: EMEA Production security: - bearerAuth: [] 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 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 /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 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' securitySchemes: bearerAuth: type: http scheme: bearer description: OAuth 2.0 Bearer Token authentication.