Use SAP Concur to manage expense reports, receipts, travel requests, cash advances, and related user and reference data. The actions below include report submission, approval, recall, and send-back operations.
Connect SAP Concur with an OAuth client ID and secret (client-credentials or password grant) — no account linking required. Manage expense reports and line items, allocations, attendees, comments, exceptions, quick expenses, receipts, travel requests and expected expenses, cash advances, itineraries, user identities, custom lists, budgets, exchange rates, and purchase requests across every Concur datacenter.
Approve an expense report as a manager (PATCH /expensereports/v4/reports/{reportId}/approve). Optional body fields: comment, expenseRejectedComment (required if the report has rejected expenses), expectedStepCode, expectedStepSequence, statusId (default A_APPR).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
reportId | string | Yes | Expense report ID to approve |
body | json | No | Optional request body. All fields are optional: comment (e.g., { "comment": "Approved" }), expenseRejectedComment (required only if the report contains rejected expenses), expectedStepCode, expectedStepSequence, statusId (defaults to "A_APPR"). |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Empty (204 No Content) |
Associate attendees with an expense (POST /expensereports/v4/users/{userId}/context/{contextType}/reports/{reportId}/expenses/{expenseId}/attendees).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
userId | string | Yes | Concur user UUID |
contextType | string | Yes | Access context: TRAVELER or PROXY |
reportId | string | Yes | Expense report ID |
expenseId | string | Yes | Expense ID |
body | json | Yes | Attendee association payload with exactly two top-level fields: "noShowAttendeeCount" (integer, default 0) and "expenseAttendeeList" (array). Each entry in expenseAttendeeList requires "attendeeId" (string) and "transactionAmount" (object: { "value": number, "currencyCode": string }), and optionally accepts "customData", "isAmountUserEdited" (boolean), "isTraveling" (boolean), "associatedAttendeeCount" (integer), and "versionNumber" (integer). Example: { "noShowAttendeeCount": 0, "expenseAttendeeList": [{ "attendeeId": "gWmMv2Ii5rGtEBTBhBqUw", "transactionAmount": { "value": 23, "currencyCode": "USD" } }] }. Note: the object form follows the request schema (Amount = value + currencyCode, both required), but the documented POST example sends a scalar "transactionAmount": 23 — the docs conflict here. |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Concur association response (201 Created with URI) |
↳ uri | string | Resource URI of the attendee associations collection |
Create a cash advance (POST /cashadvance/v4.1/cashadvances).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
body | json | Yes | Cash advance payload. Required fields: amountRequested ({ currency, amount }), name, and userId. Optional fields: accountCode, comment, purpose. The Concur docs are inconsistent on casing — the reference request example and the API Explorer swagger both use userId, while the schema table spells it userID; if a request is rejected with a 400, retry with the other spelling. |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Created cash advance payload |
↳ cashAdvanceId | string | Unique identifier of the created cash advance |
Create an expected expense on a travel request (POST /travelrequest/v4/requests/{requestUuid}/expenses).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
requestUuid | string | Yes | Travel request UUID |
userId | string | No | User UUID acting on the request (required when using a Company JWT, optional otherwise) |
body | json | Yes | Expected expense payload |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Created expected expense payload |
↳ id | string | Expected expense identifier |
↳ href | string | Self-link to the resource |
↳ expenseType | json | Expense type {id, name} |
↳ transactionDate | string | Transaction date |
↳ transactionAmount | json | Transaction amount {value, currency} |
↳ postedAmount | json | Posted amount {value, currency} |
↳ approvedAmount | json | Approved amount {value, currency} |
↳ remainingAmount | json | Remaining amount on the expected expense |
↳ businessPurpose | string | Business purpose of the expense |
↳ location | json | Location {id, name, city, countryCode, countrySubDivisionCode, iataCode, locationType} |
↳ exchangeRate | json | Exchange rate {value, operation} |
↳ allocations | json | Budget allocations array (allocationId, allocationAmount {value, currency}, approvedAmount {value, currency}, postedAmount {value, currency}, expenseId, percentEdited, systemAllocation, percentage) |
↳ tripData | json | Trip data {agencyBooked, selfBooked, tripType (ONE_WAY|ROUND_TRIP), legs[{id, returnLeg, startDate, startTime, startLocationDetail, startLocation, endLocation, class {code,value}, travelExceptionReasonCodes}], segmentType {category, code}} |
↳ parentRequest | json | Parent travel request resource link {href, id} |
↳ comments | json | Comments sub-resource link {href, id} |
Create an expense report (POST /expensereports/v4/users/{userId}/context/{contextType}/reports — supported contexts: TRAVELER, PROXY). Required body fields: name, policyId.
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
userId | string | Yes | Concur user UUID who will own the report |
contextType | string | Yes | Access context: TRAVELER (creating own report) or PROXY (creating on behalf of another user) |
body | json | Yes | Report payload — name and policyId are required. Optional fields: businessPurpose, comment, customData, countryCode, countrySubDivisionCode, etc. |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Created expense report (Concur returns 201 with a URI to the new report) |
↳ uri | string | URI of the newly created expense report |
Create a list item (POST /list/v4/items).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
body | json | Yes | List item payload. Required: listId, shortCode, value. Optional: parentId or parentCode (mutually exclusive). Note: Concur rejects shortCode/value containing hyphens. |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Created list item |
↳ id | string | List item UUID |
↳ listId | string | UUID of the list that contains the list item |
↳ code | string | Long code format for the item |
↳ shortCode | string | Short code identifier |
↳ value | string | Display value of the item |
↳ parentId | string | Parent item UUID (omitted for first-level items) |
↳ level | number | Hierarchy level (1 for root items) |
↳ isDeleted | boolean | Deletion status across all containing lists |
↳ lists | array | Lists containing this item |
↳ id | string | List UUID |
↳ hasChildren | boolean | Whether this item has children in the list |
Create a purchase request (POST /purchaserequest/v4/purchaserequests).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
body | json | Yes | Purchase request payload. Required: exactly one of userId, userEmail, or userLoginId; currencyCode (ISO 4217); and lineItems[]. Each line item requires purchaseType (GOODS or SERVICES), vendorCode, vendorAddressCode, description, quantity, and unitPrice. |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Created purchase request payload |
↳ id | string | Identifier of the created purchase request |
↳ uri | string | Resource URI for the created purchase request |
↳ errors | array | Validation or processing errors returned by Concur |
↳ errorCode | string | Error code |
↳ errorMessage | string | Error message |
↳ dataPath | string | Path to the request data which has the error |
Create a quick expense (POST /quickexpense/v4/users/{userId}/context/{contextType}/quickexpenses). TRAVELER is the only supported context type.
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
userId | string | Yes | Concur user UUID who owns the quick expense |
contextType | string | Yes | Access context: must be TRAVELER |
body | json | Yes | Quick expense payload. Required: expenseTypeId, transactionAmount {currencyCode, value}, transactionDate (YYYY-MM-DD). Optional: comment, entryDetails, location {city, countryCode, countrySubDivisionCode, id, name}, paymentTypeId (CASHX | CPAID | PENDC), vendor. |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Created quick expense response (HTTP 201 Created) |
↳ quickExpenseIdUri | string | URI of the created quick expense resource |
Create a quick expense with an attached image (POST /quickexpense/v4/users/{userId}/context/{contextType}/quickexpenses/image).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
userId | string | Yes | Concur user UUID |
contextType | string | Yes | Access context: must be TRAVELER |
receipt | json | Yes | Receipt image (UserFile). Allowed: PNG, PDF, TIFF, JPEG. Maximum size 50 MB |
body | json | Yes | Quick expense payload. Required: expenseTypeId, transactionAmount {currencyCode, value}, transactionDate (YYYY-MM-DD). Optional: comment, entryDetails, location {city, countryCode, countrySubDivisionCode, id, name}, paymentTypeId (CASHX | CPAID | PENDC), vendor. |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Created quick expense response (HTTP 201 with attached receipt image) |
↳ quickExpenseIdUri | string | URI of the created quick expense resource |
Create a comment on a report (POST /expensereports/v4/users/{userId}/context/{contextType}/reports/{reportId}/comments).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
userId | string | Yes | Concur user UUID |
contextType | string | Yes | Access context: TRAVELER, MANAGER, or PROXY |
reportId | string | Yes | Expense report ID |
comment | string | Yes | Comment text to add |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Created comment response (Concur returns 201 Created with URI) |
↳ uri | string | Resource URI of the created comment |
Create a travel request (POST /travelrequest/v4/requests).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
userId | string | No | Concur user UUID of the Request owner — required when using the default client_credentials (company) grant; omitting it returns 400 missingRequiredParam. |
body | json | Yes | Travel request payload. Supported fields: name, businessPurpose, startDate/endDate (YYYY-MM-DD), startTime/endTime (HH:mm), mainDestination ({ city, countryCode, countrySubDivisionCode, name }), policy ({ id }), and custom1-custom20 ({ value } or { code, value }). An id field is not allowed. |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Created travel request payload |
↳ id | string | Travel request UUID |
↳ href | string | Resource hyperlink |
↳ requestId | string | Public-facing request ID (4-6 alphanumeric characters) |
↳ name | string | Request name |
↳ businessPurpose | string | Business purpose |
↳ comment | string | Last attached comment |
↳ creationDate | string | Creation timestamp |
↳ lastModified | string | Last modification timestamp |
↳ submitDate | string | Last submission timestamp |
↳ startDate | string | Trip start date (ISO 8601) |
↳ endDate | string | Trip end date (ISO 8601) |
↳ startTime | string | Trip start time (HH:mm) |
↳ endTime | string | Trip end time (HH:mm) |
↳ approved | boolean | Whether the request is approved |
↳ pendingApproval | boolean | Pending approval flag |
↳ closed | boolean | Closed flag |
↳ everSentBack | boolean | Ever-sent-back flag |
↳ canceledPostApproval | boolean | Canceled after approval flag |
↳ approvalStatus | json | Approval status |
↳ code | string | Status code (NOT_SUBMITTED, SUBMITTED, APPROVED, CANCELED, SENTBACK) |
↳ name | string | Localized status name |
↳ owner | json | Travel request owner |
↳ id | string | User UUID |
↳ firstName | string | Owner first name |
↳ lastName | string | Owner last name |
↳ approver | json | Approver assigned to the request |
↳ id | string | User UUID |
↳ firstName | string | Approver first name |
↳ lastName | string | Approver last name |
↳ policy | json | Resource link to the applicable policy |
↳ id | string | Policy ID |
↳ href | string | Policy hyperlink |
↳ type | json | Request type |
↳ code | string | Request type code |
↳ label | string | Request type label |
↳ mainDestination | json | Main destination of the trip |
↳ city | string | City |
↳ countryCode | string | ISO country code |
↳ countrySubDivisionCode | string | ISO country sub-division code |
↳ name | string | Destination name |
↳ totalApprovedAmount | json | Total approved amount |
↳ value | number | Amount value |
↳ currency | string | Currency code |
↳ totalPostedAmount | json | Total posted amount |
↳ value | number | Amount value |
↳ currency | string | Currency code |
↳ totalRemainingAmount | json | Total remaining amount |
↳ value | number | Amount value |
↳ currency | string | Currency code |
↳ operations | array | Available workflow actions |
↳ rel | string | Operation name |
↳ href | string | Operation URL |
↳ expenses | array | Expected expenses attached to the request |
↳ highestExceptionLevel | string | Highest exception level (NONE, WARNING, ERROR) |
↳ travelAgency | json | Travel agency reference |
↳ id | string | Agency identifier |
↳ href | string | Agency URL |
↳ template | string | Template URL |
↳ custom1 | json | Custom field 1 |
↳ custom2 | json | Custom field 2 |
↳ custom3 | json | Custom field 3 |
↳ custom4 | json | Custom field 4 |
↳ custom5 | json | Custom field 5 |
↳ custom6 | json | Custom field 6 |
↳ custom7 | json | Custom field 7 |
↳ custom8 | json | Custom field 8 |
↳ custom9 | json | Custom field 9 |
↳ custom10 | json | Custom field 10 |
↳ custom11 | json | Custom field 11 |
↳ custom12 | json | Custom field 12 |
↳ custom13 | json | Custom field 13 |
↳ custom14 | json | Custom field 14 |
↳ custom15 | json | Custom field 15 |
↳ custom16 | json | Custom field 16 |
↳ custom17 | json | Custom field 17 |
↳ custom18 | json | Custom field 18 |
↳ custom19 | json | Custom field 19 |
↳ custom20 | json | Custom field 20 |
Create a new user identity (POST /profile/identity/v4.1/Users).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
body | json | Yes | SCIM User payload. Required: schemas (include both "urn:ietf:params:scim:schemas:core:2.0:User" and "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"), userName, name.familyName, name.givenName, emails[].value, and companyId — which is required and immutable and must be set inside the "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User" block, not at the top level. Optional: active, displayName, timezone, and other SCIM User attributes. |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Created SCIM User payload |
Delete an expected expense (DELETE /travelrequest/v4/expenses/{expenseUuid}).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
expenseUuid | string | Yes | Expected expense UUID to delete |
userId | string | No | User UUID acting on the request (required when using a Company JWT, optional otherwise) |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | boolean | true when the expected expense was deleted |
Delete an expense (DELETE /expensereports/v4/reports/{reportId}/expenses/{expenseId}).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
reportId | string | Yes | Expense report ID |
expenseId | string | Yes | Expense ID to delete |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Empty body on success (HTTP 204 No Content). Error details when status is non-2xx |
Delete an expense report (DELETE /expensereports/v4/reports/{reportId}).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
reportId | string | Yes | Expense report ID to delete |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Empty (204 No Content) |
Delete a list item from all lists that contain it (DELETE /list/v4/items/{itemId}). This is not scoped to a single list, and all children of that list item are also deleted.
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
itemId | string | Yes | List item UUID |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Empty body on success (HTTP 204 No Content). Error details when status is non-2xx |
Delete a travel request (DELETE /travelrequest/v4/requests/{requestUuid}).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
requestUuid | string | Yes | Travel request UUID to delete |
userId | string | No | Concur user UUID of the Request owner — required when using the default client_credentials (company) grant; omitting it returns 400 missingRequiredParam. |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | boolean | Concur delete response body — literally true on 200 OK |
Hard delete a user identity (DELETE /profile/identity/v4.1/Users/{id}). Not recommended: SAP restricts hard delete to users with no transaction history and governs it by the Concur Data Retention policy. To deactivate a user instead, use SAP Concur Update User with a PATCH replacing active with false.
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
userUuid | string | Yes | User UUID to delete |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Deletion response — empty body on HTTP 204 No Content |
Get a single allocation (GET /expensereports/v4/users/{userId}/context/{contextType}/reports/{reportId}/allocations/{allocationId}).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
userId | string | Yes | Concur user UUID |
contextType | string | Yes | Access context: TRAVELER or PROXY |
reportId | string | Yes | Expense report ID |
allocationId | string | Yes | Allocation ID |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Allocation detail payload |
↳ allocationId | string | Unique allocation identifier |
↳ accountCode | string | Ledger account code |
↳ overLimitAccountCode | string | Account code applied to amounts over the per-allocation limit |
↳ percentage | number | Allocation percentage |
↳ allocationAmount | json | Allocation amount (value, currencyCode) |
↳ value | number | Amount value |
↳ currencyCode | string | ISO 4217 currency code |
↳ approvedAmount | json | Pro-rated approved amount (value, currencyCode) |
↳ value | number | Amount value |
↳ currencyCode | string | ISO 4217 currency code |
↳ claimedAmount | json | Requested reimbursement amount (value, currencyCode) |
↳ value | number | Amount value |
↳ currencyCode | string | ISO 4217 currency code |
↳ customData | array | Custom field values (id, value, isValid) |
↳ expenseId | string | Associated expense identifier |
↳ isSystemAllocation | boolean | True when system-managed |
↳ isPercentEdited | boolean | True when the percentage was manually edited |
Get a budget item header by ID (GET /budget/v4/budgetItemHeader/{id}).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
budgetId | string | Yes | The budget item header's key field (uuid) |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Budget header detail payload |
↳ id | string | Budget item header ID |
↳ name | string | Admin-facing budget name |
↳ description | string | User-friendly display name |
↳ budgetItemStatusType | string | Status: OPEN, CLOSED, or REMOVED |
↳ budgetType | string | Type: PERSONAL_USE, BUDGET, RESTRICTED, or TEAM |
↳ periodType | string | Period type: YEARLY, QUARTERLY, MONTHLY, or DATE_RANGE |
↳ currencyCode | string | ISO 4217 currency code |
↳ isTest | boolean | Test budget flag |
↳ active | boolean | Display availability flag |
↳ owned | boolean | Caller ownership flag |
↳ annualBudget | number | Total annual budget amount |
↳ createdDate | string | UTC creation timestamp |
↳ lastModifiedDate | string | UTC modification timestamp |
↳ fiscalYear | json | Fiscal year reference (id, name, startDate, endDate, status) |
↳ budgetAmounts | json | Aggregate spend amounts (pendingAmount, spendAmount, unExpensedAmount, availableAmount, adjustedBudgetAmount, consumedPercent, threshold) |
↳ owner | json | Owner user (externalUserCUUID, employeeUuid, email, employeeId, name) |
↳ budgetManagers | array | Manager user objects |
↳ budgetApprovers | array | Approver user objects |
↳ budgetViewers | array | Viewer user objects |
↳ budgetTeamMembers | array | Team member entries (budgetPerson, startDate, endDate, active, status) |
↳ budgetCategory | json | Linked category (id, name, description, statusType) |
↳ costObjects | array | Tracking field values (fieldDefinitionId, code, value, operator) |
↳ budgetItemDetails | array | Per-period detail entries (id, currencyCode, amount, budgetItemDetailStatusType, fiscalPeriod, budgetAmounts) |
↳ dateRange | json | Date range for DATE_RANGE budgets (startDate, endDate) |
Get a cash advance (GET /cashadvance/v4.1/cashadvances/{cashAdvanceId}).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
cashAdvanceId | string | Yes | Cash advance ID |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Cash advance detail payload |
↳ cashAdvanceId | string | Unique identifier of the cash advance |
↳ name | string | Cash advance name |
↳ purpose | string | Purpose for the cash advance |
↳ comment | string | Comment recorded on the cash advance |
↳ accountCode | string | Account code linked to the employee |
↳ requestDate | string | Datetime the cash advance was requested (UTC, YYYY-MM-DD hh:mm:ss) |
↳ issuedDate | string | Datetime the cash advance was issued (UTC, YYYY-MM-DD hh:mm:ss) |
↳ lastModifiedDate | string | Datetime the cash advance was last modified (UTC, YYYY-MM-DD hh:mm:ss) |
↳ hasReceipts | boolean | Whether the cash advance has receipts |
↳ reimbursementCurrency | string | Reimbursement currency (3-letter ISO 4217 currency code) |
↳ amountRequested | json | Amount requested for the cash advance |
↳ amount | string | Requested amount value |
↳ currency | string | 3-letter ISO 4217 currency code |
↳ availableBalance | json | Unsubmitted balance for the cash advance |
↳ amount | string | Balance amount |
↳ currency | string | 3-letter ISO 4217 currency code |
↳ exchangeRate | json | Exchange rate that applies to the cash advance |
↳ value | string | Exchange rate value |
↳ operation | string | Exchange rate operation (MULTIPLY) |
↳ approvalStatus | json | Approval status of the cash advance |
↳ code | string | Status code |
↳ name | string | Status display name |
↳ paymentType | json | Payment type for the cash advance |
↳ paymentCode | string | Payment type code |
↳ description | string | Payment method description |
Bulk upload up to 100 custom exchange rates (POST /exchangerate/v4/rates). Body contains a currency_sets array, each with from_crn_code, to_crn_code, start_date (YYYY-MM-DD), and rate.
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
body | json | Yes | Bulk upload body: { currency_sets: [{ from_crn_code, to_crn_code, start_date: "YYYY-MM-DD", rate }] } (max 100 entries) |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Bulk-upload exchange rate response (Exchange Rate v4) |
↳ overallStatus | string | Overall result status for the bulk upload (e.g. SUCCESS, FAILURE) |
↳ message | string | Top-level result message |
↳ currencySets | json | Per-row results: array of { from_crn_code, to_crn_code, start_date, rate, statusCode, statusMessage } |
Get an expected expense (GET /travelrequest/v4/expenses/{expenseUuid}).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
expenseUuid | string | Yes | Expected expense UUID |
userId | string | No | User UUID acting on the request (optional) |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Expected expense payload |
↳ id | string | Expected expense identifier |
↳ href | string | Self-link |
↳ expenseType | json | Expense type {id, name} |
↳ transactionDate | string | Transaction date |
↳ transactionAmount | json | Transaction amount {value, currency} |
↳ postedAmount | json | Posted amount {value, currency} |
↳ approvedAmount | json | Approved amount {value, currency} |
↳ remainingAmount | json | Remaining amount on the expected expense |
↳ businessPurpose | string | Business purpose of the expense |
↳ location | json | Location {id, name, city, countryCode, countrySubDivisionCode, iataCode, locationType} |
↳ exchangeRate | json | Exchange rate {value, operation} |
↳ allocations | json | Budget allocations array |
↳ tripData | json | Trip data {agencyBooked, selfBooked, tripType (ONE_WAY|ROUND_TRIP), legs[{id, returnLeg, startDate, startTime, startLocationDetail, startLocation, endLocation, class {code,value}, travelExceptionReasonCodes}], segmentType {category, code}} |
↳ parentRequest | json | Parent travel request resource link {href, id} |
↳ comments | json | Comments sub-resource link {href, id} |
Get a single expense (GET /expensereports/v4/users/{userId}/context/{contextType}/reports/{reportId}/expenses/{expenseId}).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
userId | string | Yes | Concur user UUID |
contextType | string | Yes | Access context: TRAVELER, MANAGER, or PROXY |
reportId | string | Yes | Expense report ID |
expenseId | string | Yes | Expense ID |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Expense detail (ReportExpenseDetail) payload |
↳ expenseId | string | Expense identifier |
↳ allocationSetId | string | Identifier of the associated allocation set |
↳ allocationState | string | FULLY_ALLOCATED, NOT_ALLOCATED, or PARTIALLY_ALLOCATED |
↳ expenseType | json | Expense type {id, name, code, isDeleted} |
↳ paymentType | json | Payment type {id, name, code} |
↳ transactionDate | string | Transaction date (YYYY-MM-DD) |
↳ budgetAccrualDate | string | Budget accrual date |
↳ transactionAmount | json | Transaction amount {currencyCode, value} |
↳ postedAmount | json | Posted amount in report currency {currencyCode, value} |
↳ claimedAmount | json | Non-personal claimed amount {currencyCode, value} |
↳ approvedAmount | json | Approved amount {currencyCode, value} |
↳ approverAdjustedAmount | json | Total amount adjusted by the approver |
↳ exchangeRate | json | Exchange rate {value, operation} |
↳ vendor | json | Vendor info {id, name, description} |
↳ location | json | Location {id, name, city, countryCode, countrySubDivisionCode} |
↳ businessPurpose | string | Business purpose |
↳ isExpenseBillable | boolean | Billable flag |
↳ isPersonalExpense | boolean | Personal-expense flag |
↳ isExpenseRejected | boolean | Whether the expense was rejected |
↳ isExcludedFromCashAdvanceByUser | boolean | Whether the user excluded this from cash advance |
↳ isImageRequired | boolean | Whether a receipt image is required |
↳ isPaperReceiptRequired | boolean | Whether a paper receipt is required |
↳ isPaperReceiptReceived | boolean | Whether a paper receipt was received |
↳ isAutoCreated | boolean | Auto-creation indicator |
↳ hasBlockingExceptions | boolean | Whether submission-blocking exceptions exist |
↳ hasExceptions | boolean | Whether any exceptions exist |
↳ hasMissingReceiptDeclaration | boolean | Affidavit declaration status |
↳ attendeeCount | number | Number of attendees |
↳ receiptImageId | string | Identifier of the attached receipt image |
↳ ereceiptImageId | string | eReceipt image identifier |
↳ receiptType | json | Receipt {id, status} |
↳ imageCertificationStatus | string | Receipt image processing/certification status |
↳ ticketNumber | string | Associated travel ticket number |
↳ travel | json | Travel data (airline, car rental, hotel, etc.) |
↳ travelAllowance | json | Travel allowance association data |
↳ mileage | json | Mileage details (odometerStart, odometerEnd, totalDistance, ...) |
↳ expenseTaxSummary | json | Aggregated tax data for the expense |
↳ taxRateLocation | string | Tax rate location: FOREIGN, HOME, or OUT_OF_PROVINCE |
↳ fuelTypeListItem | json | Fuel type list item {id, value, isValid} |
↳ merchantTaxId | string | Merchant tax identifier |
↳ customData | json | Array of custom field values [{id, value, isValid}] |
↳ parentExpenseId | string | Identifier of the parent expense (for itemizations) |
↳ authorizationRequestExpenseId | string | Linked travel-request expected expense identifier |
↳ jptRouteId | string | Japan Public Transport route id |
↳ invoiceId | string | Invoice identifier |
↳ governmentInvoiceId | string | Government invoice identifier |
↳ lastModifiedDate | string | Last modified timestamp |
↳ expenseSourceIdentifiers | json | Source reference identifiers |
↳ links | array | HATEOAS links for the expense |
Retrieve a single expense report header by id via Expense Report v4 (/expensereports/v4/users/{userId}/context/{contextType}/reports/{reportId}).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
userId | string | Yes | Concur user UUID who owns the report |
contextType | string | Yes | Access context: TRAVELER (own report), MANAGER (report under approval), PROCESSOR, or PROXY |
reportId | string | Yes | Expense report ID |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Concur expense report header (ReportDetails) |
↳ reportId | string | Unique report identifier |
↳ reportNumber | string | Report number |
↳ reportFormId | string | Report form ID |
↳ policyId | string | Policy ID applied to the report |
↳ policy | string | Policy name |
↳ name | string | Report name |
↳ currencyCode | string | ISO currency code |
↳ currency | string | Currency name |
↳ approvalStatus | string | Approval status name |
↳ approvalStatusId | string | Approval status identifier |
↳ paymentStatus | string | Payment status name |
↳ paymentStatusId | string | Payment status identifier |
↳ ledger | string | Ledger name |
↳ ledgerId | string | Ledger identifier |
↳ userId | string | Owner user UUID |
↳ reportDate | string | Report date (YYYY-MM-DD) |
↳ creationDate | string | Creation timestamp (ISO 8601) |
↳ submitDate | string | Submit timestamp (ISO 8601) or null |
↳ startDate | string | Report period start (YYYY-MM-DD) |
↳ endDate | string | Report period end (YYYY-MM-DD) |
↳ approvedAmount | json | Amount approved { value, currencyCode } |
↳ claimedAmount | json | Amount claimed { value, currencyCode } |
↳ reportTotal | json | Report total { value, currencyCode } |
↳ amountDueEmployee | json | Amount due employee |
↳ amountDueCompany | json | Amount due company |
↳ amountDueCompanyCard | json | Amount due company card |
↳ amountCompanyPaid | json | Amount company has paid |
↳ personalAmount | json | Personal portion of the report |
↳ paymentConfirmedAmount | json | Confirmed payment amount |
↳ amountNotApproved | json | Amount not approved |
↳ totalAmountPaidEmployee | json | Total amount paid to employee |
↳ concurAuditStatus | string | Concur audit status |
↳ isFinancialIntegrationEnabled | boolean | Whether financial integration is enabled |
↳ isSubmitted | boolean | Whether the report has been submitted |
↳ isSentBack | boolean | Whether the report has been sent back |
↳ isReopened | boolean | Whether the report was reopened |
↳ isReportEverSentBack | boolean | Whether the report was ever sent back |
↳ canRecall | boolean | Whether the report can be recalled |
↳ canAddExpense | boolean | Whether expenses can be added to the report |
↳ canReopen | boolean | Whether the report can be reopened |
↳ isReceiptImageRequired | boolean | Whether receipt images are required |
↳ isReceiptImageAvailable | boolean | Whether receipt images are available |
↳ isPaperReceiptsReceived | boolean | Whether paper receipts were received |
↳ isPendingDelegatorReview | boolean | Whether pending delegator review |
↳ isFundsAndGrantsIntegrationEligible | boolean | Funds and grants eligibility |
↳ hasReceivedCashAdvanceReturns | boolean | Whether cash advance returns received |
↳ analyticsGroupId | string | Analytics group ID |
↳ hierarchyNodeId | string | Hierarchy node ID |
↳ allocationFormId | string | Allocation form ID |
↳ countryCode | string | ISO country code |
↳ countrySubDivisionCode | string | ISO country subdivision code |
↳ country | string | Country name |
↳ businessPurpose | string | Business purpose |
↳ comment | string | Header-level comment on the report |
↳ reportVersion | number | Report version number |
↳ reportType | string | Report type identifier |
↳ cardProgramStatementPeriodId | string | Card program statement period ID |
↳ defaultFieldAccess | string | Default field access (HD/RO/RW) |
↳ imageStatus | string | Image status |
↳ receiptContainerId | string | Receipt container ID |
↳ receiptStatus | string | Receipt status |
↳ sponsorId | string | Sponsor ID |
↳ submitterId | string | Submitter user ID |
↳ taxConfigId | string | Tax configuration ID |
↳ redirectFund | json | Redirect fund object { amount, creditCardId } |
↳ customData | array | Array of custom data { id, value, isValid }. Responses may additionally carry a response-only listItemUrl, which can be null |
↳ employee | json | Employee object { employeeId, employeeUuid } |
↳ links | array | HATEOAS links |
Get expense itemizations (GET /expensereports/v4/users/{userId}/context/{contextType}/reports/{reportId}/expenses/{expenseId}/itemizations).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
userId | string | Yes | Concur user UUID |
contextType | string | Yes | Access context: TRAVELER (the only value the endpoint supports) |
reportId | string | Yes | Expense report ID |
expenseId | string | Yes | Expense ID |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | array | Array of itemizations (ReportExpenseSummary[]) |
↳ expenseId | string | Itemization expense id |
↳ expenseType | json | Expense type {id, name, code, isDeleted} |
↳ transactionDate | string | Transaction date (YYYY-MM-DD) |
↳ transactionAmount | json | Transaction amount |
↳ postedAmount | json | Posted amount |
↳ approvedAmount | json | Approved amount |
↳ claimedAmount | json | Claimed amount |
↳ approverAdjustedAmount | json | Approver-adjusted amount |
↳ paymentType | json | Payment type |
↳ vendor | json | Vendor info |
↳ location | json | Location info |
↳ allocationState | string | Allocation state |
↳ allocationSetId | string | Allocation set identifier |
↳ attendeeCount | number | Attendee count |
↳ businessPurpose | string | Business purpose |
↳ hasBlockingExceptions | boolean | Has blocking exceptions |
↳ hasExceptions | boolean | Has exceptions |
↳ isPersonalExpense | boolean | Personal expense |
↳ links | array | HATEOAS links |
Get a single trip/itinerary (GET /api/travel/trip/v1.1/{tripID}).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
tripId | string | Yes | Trip ID |
useridType | string | No | User identifier type. The only value documented for Trips v1.1 is "login" (the value is the user login id); xmlsyncid and uuid are Travel Profile v2 identifier types and are not documented for this endpoint. |
useridValue | string | No | User identifier value (paired with useridType) |
systemFormat | string | No | Optional response format. The only supported value is "Tripit", which returns a completely different XML document rooted at <Response><Trip> instead of the standard itinerary document. |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | string | Raw XML trip document returned by Concur (Trips v1.1 emits application/xml only, so this is a string and not a parsed object). The document is rooted at <Itinerary> and contains id, ItinLocator, ClientLocator, ItinSourceName, BookedVia, TripName, Status, Description, Comments, CancelComments, ProjectName, StartDateUtc, EndDateUtc, StartDateLocal, EndDateLocal, DateCreatedUtc, DateModifiedUtc, DateBookedLocal, BookedByFirstName, BookedByLastName, IsPersonal, RuleViolations, and Bookings > Booking. When systemFormat=Tripit is passed the document is rooted at <Response><Trip> instead. |
Get a single custom list (GET /list/v4/lists/{listId}).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
listId | string | Yes | List ID |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | List detail payload |
↳ id | string | Unique identifier (UUID) of the list |
↳ value | string | Name of the list |
↳ levelCount | number | Number of levels in the list |
↳ searchCriteria | string | Search attribute (TEXT or CODE) |
↳ displayFormat | string | Display order ((CODE) TEXT or TEXT (CODE)) |
↳ category | json | List category |
↳ id | string | Category UUID |
↳ type | string | Category type |
↳ isReadOnly | boolean | Whether the list is read-only |
↳ isDeleted | boolean | Whether the list has been deleted |
↳ managedBy | string | Identifier of the managing application or service |
↳ externalThreshold | number | Threshold from where the level starts being external |
Get a single list item (GET /list/v4/items/{itemId}).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
itemId | string | Yes | List item ID |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | List item detail payload |
↳ id | string | List item UUID |
↳ listId | string | UUID of the list that contains the list item |
↳ code | string | Long code format for the item |
↳ shortCode | string | Short code identifier |
↳ value | string | Display value of the item |
↳ parentId | string | Parent item UUID (omitted for first-level items) |
↳ level | number | Hierarchy level (1 for root items) |
↳ isDeleted | boolean | Deletion status across all containing lists |
↳ lists | array | Lists containing this item |
↳ id | string | List UUID |
↳ hasChildren | boolean | Whether this item has children in the list |
Get a purchase request by ID (GET /purchaserequest/v4/purchaserequests/{id}).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
purchaseRequestId | string | Yes | Purchase request ID |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Purchase request detail payload |
↳ purchaseRequestId | string | Unique identifier of the purchase request |
↳ purchaseRequestNumber | string | Human-readable purchase request number |
↳ purchaseRequestQueueStatus | string | Queue status of the purchase request |
↳ purchaseRequestWorkflowStatus | string | Workflow status of the purchase request |
↳ purchaseOrders | array | Purchase orders generated from the request |
↳ purchaseOrderNumber | string | Purchase order number |
↳ purchaseRequestExceptions | array | Exceptions raised on the purchase request |
↳ eventCode | string | Event code |
↳ exceptionCode | string | Exception code |
↳ isCleared | boolean | Whether the exception has been cleared |
↳ prExceptionId | string | Identifier of the exception record |
↳ message | string | Exception message |
Get a single receipt by ID (GET /receipts/v4/{receiptId}).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
receiptId | string | Yes | Receipt ID |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Receipt detail payload |
↳ id | string | Receipt identifier |
↳ userId | string | Owning user UUID |
↳ dateTimeReceived | string | Timestamp when the receipt was received (ISO 8601) |
↳ receipt | json | Parsed receipt JSON object |
↳ image | string | Receipt image URL or data reference |
↳ validationSchema | string | Schema used to validate the receipt |
↳ self | string | URL to this receipt resource |
↳ template | string | URL template for receipts |
Get receipt processing status (GET /receipts/v4/status/{receiptId}).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
receiptId | string | Yes | Receipt ID |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Receipt status payload |
↳ status | string | Processing status: ACCEPTED, PROCESSING, PROCESSED, or FAILED |
↳ logs | array | Array of log entries |
↳ logLevel | string | Log level |
↳ message | string | Log message |
↳ timestamp | string | Log timestamp |
Get a travel profile (GET /api/travelprofile/v2.0/profile). Returns the calling user by default; pass userid_type and userid_value to impersonate.
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
useridType | string | No | Identifier type: login, xmlsyncid, or uuid |
useridValue | string | No | Identifier value (login id, xml sync id, or UUID) |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | string | Raw XML travel profile document returned by Concur (Travel Profile v2 emits application/xml only, per the TravelUserProfile.xsd schema, so this is a string and not a parsed object). The Profile root element contains General, EmergencyContact, Telephones, Addresses, NationalIDs, DriversLicenses, HasNoPassport, Passports, Visas, EmailAddresses, RatePreferences, DiscountCodes, Air, Rail, Car, Hotel, CustomFields, Roles, Sponsors, TSAInfo, UnusedTickets, SouthwestUnusedTickets, and AdvantageMemberships. LoginId is an attribute of the <ProfileResponse> element returned by create/update, not a child element; XmlProfileSyncID and ProfileLastModifiedUTC belong to the Travel Profile summaries (ProfileSummary) response, not to this document. |
Get a single travel request (GET /travelrequest/v4/requests/{requestUuid}).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
requestUuid | string | Yes | Travel request UUID |
userId | string | No | The unique identifier of the user getting the content of the Request. If empty when using a Company token the default system user will be assumed to perform the action. |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Travel request detail payload |
↳ id | string | Travel request UUID |
↳ href | string | Resource hyperlink |
↳ requestId | string | Public-facing request ID (4-6 alphanumeric characters) |
↳ name | string | Request name |
↳ businessPurpose | string | Business purpose |
↳ comment | string | Last attached comment |
↳ creationDate | string | Creation timestamp |
↳ lastModified | string | Last modification timestamp |
↳ submitDate | string | Last submission timestamp |
↳ authorizedDate | string | Date when approval was completed |
↳ approvalLimitDate | string | Required approval deadline |
↳ startDate | string | Trip start date (ISO 8601) |
↳ endDate | string | Trip end date (ISO 8601) |
↳ startTime | string | Trip start time (HH:mm) |
↳ endTime | string | Trip end time (HH:mm) |
↳ approved | boolean | Whether the request is approved |
↳ pendingApproval | boolean | Pending approval flag |
↳ closed | boolean | Closed flag |
↳ everSentBack | boolean | Ever-sent-back flag |
↳ canceledPostApproval | boolean | Canceled after approval flag |
↳ highestExceptionLevel | string | Highest exception level (WARNING, ERROR, NONE) |
↳ approvalStatus | json | Approval status |
↳ code | string | Status code (NOT_SUBMITTED, SUBMITTED, APPROVED, CANCELED, SENTBACK) |
↳ name | string | Localized status name |
↳ owner | json | Travel request owner |
↳ id | string | User UUID |
↳ firstName | string | Owner first name |
↳ lastName | string | Owner last name |
↳ approver | json | Approver assigned to the request |
↳ id | string | User UUID |
↳ firstName | string | Approver first name |
↳ lastName | string | Approver last name |
↳ policy | json | Resource link to the applicable policy |
↳ id | string | Policy ID |
↳ href | string | Policy hyperlink |
↳ type | json | Request type |
↳ code | string | Request type code |
↳ label | string | Request type label |
↳ mainDestination | json | Main destination of the trip |
↳ city | string | City |
↳ countryCode | string | ISO country code |
↳ countrySubDivisionCode | string | ISO country sub-division code |
↳ name | string | Destination name |
↳ totalApprovedAmount | json | Total approved amount |
↳ value | number | Amount value |
↳ currency | string | Currency code |
↳ totalPostedAmount | json | Total posted amount |
↳ value | number | Amount value |
↳ currency | string | Currency code |
↳ totalRemainingAmount | json | Total remaining amount |
↳ value | number | Amount value |
↳ currency | string | Currency code |
↳ expenses | array | Resource links to expected expenses |
↳ cashAdvances | json | Resource link to cash advances |
↳ id | string | Resource ID |
↳ href | string | Resource hyperlink |
↳ comments | json | Resource link to comments |
↳ id | string | Resource ID |
↳ href | string | Resource hyperlink |
↳ exceptions | json | Resource link to exceptions |
↳ id | string | Resource ID |
↳ href | string | Resource hyperlink |
↳ travelAgency | json | Resource link to travel agency |
↳ id | string | Resource ID |
↳ href | string | Resource hyperlink |
↳ extensionOf | json | The Request for which this Request is an extension of, or addendum to |
↳ requestId | string | The public key of the Request (unique per customer) |
↳ id | string | Unique identifier of the Request |
↳ href | string | Hyperlink to the resource |
↳ template | string | Hyperlink template to the resource |
↳ pnr | string | The value of the pnr provided within the agency proposals by the travel agency |
↳ isParentRequest | boolean | Indicates whether this Request is a Budget Request |
↳ parentRequestId | string | Required if a Child Request is created, corresponds to the unique identifier of the Budget Request the Child Request will be linked to |
↳ allocationFormId | string | The unique identifier of the allocation form |
↳ parentRequest | json | If the Request is a Child Request, reference to the corresponding Budget Request |
↳ id | string | Unique identifier of the related object |
↳ href | string | Hyperlink to the resource |
↳ template | string | Hyperlink template to the resource |
↳ eventRequest | json | The parent Event Request to which this child Request is related |
↳ id | string | Unique identifier of the related object |
↳ href | string | Hyperlink to the resource |
↳ template | string | Hyperlink template to the resource |
↳ operations | array | Available workflow actions |
↳ rel | string | Operation name |
↳ href | string | Operation URL |
↳ expensePolicy | json | Expense policy reference |
↳ id | string | Policy identifier |
↳ href | string | Policy URL |
↳ custom1 | json | Custom field 1 |
↳ custom2 | json | Custom field 2 |
↳ custom3 | json | Custom field 3 |
↳ custom4 | json | Custom field 4 |
↳ custom5 | json | Custom field 5 |
↳ custom6 | json | Custom field 6 |
↳ custom7 | json | Custom field 7 |
↳ custom8 | json | Custom field 8 |
↳ custom9 | json | Custom field 9 |
↳ custom10 | json | Custom field 10 |
↳ custom11 | json | Custom field 11 |
↳ custom12 | json | Custom field 12 |
↳ custom13 | json | Custom field 13 |
↳ custom14 | json | Custom field 14 |
↳ custom15 | json | Custom field 15 |
↳ custom16 | json | Custom field 16 |
↳ custom17 | json | Custom field 17 |
↳ custom18 | json | Custom field 18 |
↳ custom19 | json | Custom field 19 |
↳ custom20 | json | Custom field 20 |
Get a single user by UUID (GET /profile/identity/v4.1/Users/{id}).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
userUuid | string | Yes | User UUID |
attributes | string | No | Comma-separated SCIM attributes to include in the response |
excludedAttributes | string | No | Comma-separated SCIM attributes to exclude from the response |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | SCIM User identity payload |
Issue a cash advance (POST /cashadvance/v4.1/cashadvances/{cashAdvanceId}/issue).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
cashAdvanceId | string | Yes | Cash advance ID to issue |
body | json | No | Optional request body. All documented fields are optional: accountCode, comment, and exchangeRate. |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Issue cash advance result payload |
↳ issuedDate | string | Date the cash advance was issued (YYYY-MM-DD) |
↳ status | json | Cash advance status after the issue action |
↳ code | string | Status code |
↳ name | string | Status display name |
List allocations on an expense (GET /expensereports/v4/users/{userId}/context/{contextType}/reports/{reportId}/expenses/{expenseId}/allocations).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
userId | string | Yes | Concur user UUID |
contextType | string | Yes | Access context: TRAVELER or MANAGER |
reportId | string | Yes | Expense report ID |
expenseId | string | Yes | Expense ID |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | array | Bare array of allocation objects (ReportAllocationResponse[]) |
↳ allocationId | string | Unique allocation identifier |
↳ accountCode | string | Ledger account code |
↳ overLimitAccountCode | string | Account code applied to amounts over the per-allocation limit |
↳ percentage | number | Allocation percentage |
↳ allocationAmount | json | Allocation amount (value, currencyCode) |
↳ value | number | Amount value |
↳ currencyCode | string | ISO 4217 currency code |
↳ approvedAmount | json | Pro-rated approved amount (value, currencyCode) |
↳ value | number | Amount value |
↳ currencyCode | string | ISO 4217 currency code |
↳ claimedAmount | json | Requested reimbursement amount (value, currencyCode) |
↳ value | number | Amount value |
↳ currencyCode | string | ISO 4217 currency code |
↳ customData | array | Custom field values (id, value, isValid) |
↳ id | string | Custom field identifier |
↳ value | string | Custom field value |
↳ isValid | boolean | Whether the value passes validation |
↳ expenseId | string | Associated expense identifier |
↳ isSystemAllocation | boolean | True when system-managed |
↳ isPercentEdited | boolean | True when the percentage was manually edited |
List attendees associated with an expense (GET /expensereports/v4/users/{userId}/context/{contextType}/reports/{reportId}/expenses/{expenseId}/attendees).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
userId | string | Yes | Concur user UUID |
contextType | string | Yes | Access context: TRAVELER or PROXY |
reportId | string | Yes | Expense report ID |
expenseId | string | Yes | Expense ID |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Attendees list payload |
↳ noShowAttendeeCount | number | Number of unnamed/no-show attendees |
↳ expenseAttendeeList | array | Attendees associated with the expense, including amounts |
↳ attendeeId | string | Unique identifier of the attendee |
↳ transactionAmount | json | Expense portion assigned to this attendee |
↳ value | number | Numeric amount |
↳ currencyCode | string | ISO 4217 currency code |
↳ approvedAmount | json | Approved amount in report currency |
↳ value | number | Numeric amount |
↳ currencyCode | string | ISO 4217 currency code |
↳ isAmountUserEdited | boolean | Whether the amount was manually edited |
↳ isTraveling | boolean | Whether the attendee is traveling (affects tax calculations) |
↳ associatedAttendeeCount | number | Total attendee count; greater than 1 indicates unnamed attendees |
↳ versionNumber | number | Version number preserving previous attendee state |
↳ customData | array | Custom field values for the association |
↳ id | string | Custom field identifier |
↳ value | string | Custom field value (max 48 characters) |
↳ isValid | boolean | Whether the value passes validation |
↳ listItemUrl | string | HATEOAS link for list items |
List budget categories (GET /budget/v4/budgetCategory).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | array | Top-level array of budget category objects |
↳ id | string | Category ID |
↳ name | string | Admin-facing category name |
↳ description | string | Friendly name |
↳ statusType | string | Status: OPEN or REMOVED |
↳ expenseTypes | array | Expense types in this category (id, featureTypeCode, expenseTypeCode, name) |
List budget item headers (GET /budget/v4/budgetItemHeader).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
adminView | boolean | No | When true, returns all budgets the caller can administer (default false) |
offset | number | No | Page offset (Concur returns up to 50 budget headers per page) |
responseSchema | string | No | Response schema variant: "COMPACT" returns a smaller payload. Defaults to the non-compact schema |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Budget headers collection payload |
↳ budgetItemHeaders | array | Array of budget item header summaries (id, name, description, budgetItemStatusType, budgetType, currencyCode, fiscalYear, budgetAmounts, owner, ...) |
↳ totalRows | number | Total number of budget headers |
↳ offset | number | Offset of the current page |
↳ limit | number | Page size (Concur returns up to 50) |
↳ href | string | URL of the current page |
↳ previous | json | Previous page link ({ href }); null on the first page |
↳ href | string | Previous page URL |
↳ next | json | Next page link ({ href }); null when no results remain. This is the only forward cursor for paging |
↳ href | string | Next page URL |
List exceptions on a report (GET /expensereports/v4/users/{userId}/context/{contextType}/reports/{reportId}/exceptions).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
userId | string | Yes | Concur user UUID |
contextType | string | Yes | Access context: TRAVELER, MANAGER, or PROXY |
reportId | string | Yes | Expense report ID |
excludeExpenses | boolean | No | Return only exceptions for the report header, excluding expense-level and allocation-level exceptions (default false) |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | array | Array of report header exception entries |
↳ exceptionCode | string | Unique exception code |
↳ exceptionVisibility | string | Visibility scope: ALL, APPROVER_PROCESSOR, or PROCESSOR |
↳ isBlocking | boolean | Whether the exception prevents report submission |
↳ message | string | Human-readable description of the exception |
↳ expenseId | string | Related expense entry ID |
↳ allocationId | string | Related allocation ID, if any |
↳ parentExpenseId | string | Parent expense ID for itemized entries |
List expected expenses on a travel request (GET /travelrequest/v4/requests/{requestUuid}/expenses).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
requestUuid | string | Yes | Travel request UUID |
userId | string | No | User UUID acting on the request (optional) |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | array | Array of expected expense objects |
↳ id | string | Expected expense identifier |
↳ href | string | Self-link |
↳ expenseType | json | Expense type {id, name} |
↳ transactionDate | string | Transaction date |
↳ transactionAmount | json | Transaction amount {value, currency} |
↳ postedAmount | json | Posted amount {value, currency} |
↳ approvedAmount | json | Approved amount {value, currency} |
↳ remainingAmount | json | Remaining amount on the expected expense |
↳ businessPurpose | string | Business purpose of the expense |
↳ location | json | Location {id, name, city, countryCode, countrySubDivisionCode, iataCode, locationType} |
↳ exchangeRate | json | Exchange rate {value, operation} |
↳ allocations | json | Budget allocations array |
↳ tripData | json | Trip data {agencyBooked, selfBooked, tripType (ONE_WAY|ROUND_TRIP), legs[{id, returnLeg, startDate, startTime, startLocationDetail, startLocation, endLocation, class {code,value}, travelExceptionReasonCodes}], segmentType {category, code}} |
↳ parentRequest | json | Parent travel request resource link {href, id}. Documented on the single-expense GET, not on this list endpoint |
↳ comments | json | Comments sub-resource link {href, id}. Documented on the single-expense GET, not on this list endpoint |
List expenses on a report (GET /expensereports/v4/users/{userId}/context/{contextType}/reports/{reportId}/expenses).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
userId | string | Yes | Concur user UUID |
contextType | string | Yes | Access context: TRAVELER (the only value the endpoint supports) |
reportId | string | Yes | Expense report ID |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | array | Array of expense summary entries (ReportExpenseSummary[]) |
↳ expenseId | string | Expense identifier |
↳ expenseType | json | Expense type {id, name, code, isDeleted} |
↳ transactionDate | string | Transaction date (YYYY-MM-DD) |
↳ transactionAmount | json | Transaction amount {currencyCode, value} |
↳ postedAmount | json | Posted amount |
↳ approvedAmount | json | Approved amount |
↳ claimedAmount | json | Claimed amount |
↳ approverAdjustedAmount | json | Approver-adjusted amount |
↳ paymentType | json | Payment type {id, name, code} |
↳ vendor | json | Vendor info |
↳ location | json | Location info |
↳ allocationState | string | Allocation state |
↳ allocationSetId | string | Allocation set identifier |
↳ attendeeCount | number | Attendee count |
↳ businessPurpose | string | Business purpose |
↳ hasBlockingExceptions | boolean | Has submission-blocking exceptions |
↳ hasExceptions | boolean | Has exceptions |
↳ hasMissingReceiptDeclaration | boolean | Has missing-receipt declaration |
↳ isAutoCreated | boolean | Auto-created |
↳ isPersonalExpense | boolean | Personal-expense flag |
↳ isImageRequired | boolean | Receipt image required |
↳ isPaperReceiptRequired | boolean | Paper receipt required |
↳ imageCertificationStatus | string | Receipt image certification status |
↳ receiptImageId | string | Receipt image identifier |
↳ ereceiptImageId | string | eReceipt image identifier |
↳ ticketNumber | string | Ticket number |
↳ exchangeRate | json | Exchange rate |
↳ fuelTypeListItem | json | Fuel type list item {id, value, isValid} |
↳ jptRouteId | string | Japan Public Transport route id |
↳ travelAllowance | json | Travel allowance |
↳ expenseSourceIdentifiers | json | Expense source identifiers |
↳ links | array | HATEOAS links |
List expense reports (GET /api/v3.0/expense/reports). Returns a v3 envelope with Items and NextPage.
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
user | string | No | Filter by a specific user (login id or user identifier). |
submitDateBefore | string | No | Filter to reports submitted on or before this date (YYYY-MM-DD) |
submitDateAfter | string | No | Filter to reports submitted on or after this date (YYYY-MM-DD) |
paidDateBefore | string | No | Filter to reports paid on or before this date (YYYY-MM-DD) |
paidDateAfter | string | No | Filter to reports paid on or after this date (YYYY-MM-DD) |
modifiedDateBefore | string | No | Filter to reports last modified on or before this date (YYYY-MM-DD) |
modifiedDateAfter | string | No | Filter to reports last modified on or after this date (YYYY-MM-DD) |
createDateBefore | string | No | Filter to reports created on or before this date (YYYY-MM-DD) |
createDateAfter | string | No | Filter to reports created on or after this date (YYYY-MM-DD) |
approvalStatusCode | string | No | Filter by approval status code (e.g. A_NOTF, A_PEND, A_APPR) |
paymentStatusCode | string | No | Filter by payment status code |
currencyCode | string | No | Filter by ISO currency code (e.g. USD, EUR) |
approverLoginID | string | No | Filter by approver login ID |
limit | number | No | Number of records per page (default 25) |
offset | string | No | Pagination token. The previous response returns NextPage as a full URI — extract its offset query parameter and pass that value here, not the whole URI. |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Concur v3 expense reports envelope |
↳ Items | array | Array of report header objects |
↳ ID | string | Report ID |
↳ Name | string | Report name |
↳ OwnerLoginID | string | Owner login ID |
↳ OwnerName | string | Owner display name |
↳ Total | number | Report total |
↳ TotalApprovedAmount | number | Total approved amount |
↳ TotalClaimedAmount | number | Total claimed amount |
↳ AmountDueEmployee | number | Amount due employee |
↳ CurrencyCode | string | ISO currency code |
↳ ApprovalStatusName | string | Approval status name |
↳ ApprovalStatusCode | string | Approval status code |
↳ PaymentStatusName | string | Payment status name |
↳ PaymentStatusCode | string | Payment status code |
↳ ApproverLoginID | string | Approver login ID |
↳ ApproverName | string | Approver display name |
↳ HasException | boolean | Whether the report has any exception |
↳ ReceiptsReceived | boolean | Whether paper receipts were received |
↳ CreateDate | string | Creation date |
↳ SubmitDate | string | Submit date |
↳ LastModifiedDate | string | Last modified date |
↳ PaidDate | string | Paid date |
↳ URI | string | Self URI |
↳ NextPage | string | Full URI of the next page — read its offset query parameter to page forward |
List travel trips/itineraries (GET /api/travel/trip/v1.1).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
startDate | string | No | Filter trips starting on/after this date (YYYY-MM-DD) |
endDate | string | No | Filter trips ending on/before this date (YYYY-MM-DD) |
bookingType | string | No | Filter by booking type. Supported values are capitalized: Air, Car, Dining, Hotel, Parking, Rail, Ride. |
useridType | string | No | User identifier type. The only value documented for Trips v1.1 is "login" (the value is the user login id); xmlsyncid and uuid are Travel Profile v2 identifier types and are not documented for this endpoint. |
useridValue | string | No | User identifier value (paired with useridType) |
itemsPerPage | number | No | Items per page. Concur only paginates when includeMetadata is also sent, so this tool sets includeMetadata automatically whenever itemsPerPage or page is provided. |
page | number | No | 1-based page number. Concur only paginates when includeMetadata is also sent, so this tool sets includeMetadata automatically whenever page or itemsPerPage is provided. |
includeMetadata | boolean | No | Include paging metadata in the response. Implied when page or itemsPerPage is set. |
includeCanceledTrips | boolean | No | Include canceled trips in the result set |
createdAfterDate | string | No | Only trips created after this date (YYYY-MM-DD) |
createdBeforeDate | string | No | Only trips created before this date (YYYY-MM-DD) |
lastModifiedDate | string | No | Only trips modified on/after this date (YYYY-MM-DD) |
includeVirtualTrip | string | No | Set to "1" to include virtual trips, which carry the offline segments booked through Concur Request. |
includeGuestBookings | boolean | No | Include trips booked on behalf of guests. Defaults to false. |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | string | Raw XML trips list returned by Concur (Trips v1.1 emits application/xml only, so this is a string and not a parsed object). By default the document is rooted at <ItineraryInfoList> containing one <ItineraryInfo> per trip (TripId, TripName, TripStatus, StartDateLocal, EndDateLocal, DateModifiedUtc, UserLoginId, id). When includeMetadata is sent — which this tool does automatically whenever page or itemsPerPage is supplied — the document is instead rooted at <ConnectResponse> with ConnectResponse > Metadata > Paging (TotalPages, TotalItems, Page, ItemsPerPage, PreviousPageURL, NextPageURL) and ConnectResponse > Data > ItineraryInfoList > ItineraryInfo. |
List custom lists (GET /list/v4/lists).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
page | number | No | Page number (1-based; page size is fixed at 100) |
sortBy | string | No | Sort field: name, levelcount, or listcategory |
sortDirection | string | No | Sort direction: asc or desc |
value | string | No | Filter by list name. Accepts an operator prefix: sw: (starts with), ew: (ends with), not:, cp: (contains) (e.g. "sw:Cost"). |
categoryType | string | No | Filter by category type (mapped to the category.type query param). Accepts an operator prefix: eq:, not:. |
isDeleted | string | No | Filter by deletion status. Pass "true" or "false" as a string because the filter also accepts the eq operator prefix (eq:true) — eq is the only operator this filter supports. |
levelCount | string | No | Filter by number of levels. Accepts an operator prefix: eq:, gt:, gte:, lt:, lte: (e.g. "eq:1", "gt:2", "lte:9"). |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Paginated lists collection |
↳ content | array | Lists in the current page |
↳ id | string | List UUID |
↳ value | string | Name of the list |
↳ levelCount | number | Number of levels in the list |
↳ searchCriteria | string | Search attribute (TEXT or CODE) |
↳ displayFormat | string | Display order ((CODE) TEXT or TEXT (CODE)) |
↳ category | json | List category |
↳ id | string | Category UUID |
↳ type | string | Category type |
↳ isReadOnly | boolean | Whether the list is read-only |
↳ isDeleted | boolean | Whether the list has been deleted |
↳ managedBy | string | Managing application or service identifier |
↳ externalThreshold | number | Threshold from where the level starts being external |
↳ page | json | Pagination metadata |
↳ number | number | Current page number |
↳ size | number | Items per page |
↳ totalElements | number | Total item count |
↳ totalPages | number | Total page count |
↳ links | array | Navigation links (next, previous, first, last) |
↳ rel | string | Link relation |
↳ href | string | Link URL |
List the top-level items (children) for a custom list (GET /list/v4/lists/{listId}/children).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
listId | string | Yes | List ID |
page | number | No | Page number (1-based; page size is fixed at 100) |
sortBy | string | No | Sort field: value or shortCode |
sortDirection | string | No | Sort direction: asc or desc |
hasChildren | boolean | No | Include only items that have children |
isDeleted | string | No | Filter by deletion status. Pass "true" or "false" as a string because the filter also accepts the eq operator prefix (eq:true) — eq is the only operator this filter supports. |
shortCode | string | No | Filter by short code |
value | string | No | Filter by display value |
shortCodeOrValue | string | No | Filter by short code OR value |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Paginated list items collection |
↳ content | array | List items in the current page |
↳ id | string | List item UUID |
↳ listId | string | UUID of the list that contains the list item |
↳ code | string | Long code format for the item |
↳ shortCode | string | Short code identifier |
↳ value | string | Display value of the item |
↳ parentId | string | Parent item UUID (omitted for first-level items) |
↳ level | number | Hierarchy level (1 for root items) |
↳ isDeleted | boolean | Deletion status across all containing lists |
↳ lists | array | Lists containing this item |
↳ id | string | List UUID |
↳ hasChildren | boolean | Whether this item has children in the list |
↳ page | json | Pagination metadata |
↳ number | number | Current page number |
↳ size | number | Items per page |
↳ totalElements | number | Total item count |
↳ totalPages | number | Total page count |
↳ links | array | Navigation links (next, previous, first, last) |
↳ rel | string | Link relation |
↳ href | string | Link URL |
List receipts for a user (GET /receipts/v4/users/{userId}). Concur documents no query parameters for this endpoint, so page size and offset cannot be controlled; follow the "next" URL in the response to page forward.
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
userId | string | Yes | Concur user UUID |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | E-receipt collection wrapper |
↳ receipts | array | Array of e-receipt objects |
↳ id | string | Receipt id |
↳ userId | string | Owner user UUID |
↳ dateTimeReceived | string | Timestamp the receipt was received |
↳ receipt | json | Structured receipt data |
↳ image | string | Receipt image URL or reference |
↳ validationSchema | string | Validation schema URI |
↳ self | string | Self URL |
↳ template | string | Template URL |
↳ next | string | URL of the next page of receipts, if returned. Concur documents this cursor on the image-only-receipts endpoint rather than on this one |
List comments on a report (GET /expensereports/v4/users/{userId}/context/{contextType}/reports/{reportId}/comments).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
userId | string | Yes | Concur user UUID |
contextType | string | Yes | Access context: TRAVELER, MANAGER, or PROXY |
reportId | string | Yes | Expense report ID |
includeAllComments | boolean | No | Include comments from all expenses in the report (default false) |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | array | Array of report comment entries |
↳ comment | string | Comment text |
↳ creationDate | string | Comment creation timestamp (ISO 8601) |
↳ expenseId | string | Related expense entry ID (null for report header comments) |
↳ isAuditorComment | boolean | Whether the comment was added by an auditor |
↳ isLatest | boolean | Whether this is the latest comment |
↳ createdForEmployeeId | string | Employee ID the comment was created for |
↳ author | json | Comment author |
↳ employeeId | string | Employee identifier |
↳ employeeUuid | string | Employee UUID |
↳ createdForEmployee | json | Employee the comment was created for |
↳ employeeId | string | Employee identifier |
↳ employeeUuid | string | Employee UUID |
↳ stepInstanceId | string | Workflow step instance identifier |
List expense reports awaiting approval (GET /expensereports/v4/users/{userId}/context/MANAGER/reportsToApprove).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
userId | string | Yes | Manager user UUID |
contextType | string | No | Access context: must be MANAGER (default) |
sort | string | No | Report field name to sort by (e.g., reportDate) |
order | string | No | Sort direction: asc or desc |
includeDelegateApprovals | boolean | No | Whether to include reports the caller can approve as a delegate |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | array | Array of reports awaiting approval (ReportToApprove[]) |
↳ reportId | string | Unique report identifier |
↳ name | string | Report name |
↳ reportDate | string | Report date (YYYY-MM-DD) |
↳ reportNumber | string | User-friendly report number |
↳ submitDate | string | Submission timestamp (ISO 8601 UTC) |
↳ approver | json | Approver employee { employeeId, employeeUuid } |
↳ employee | json | Report owner employee { employeeId, employeeUuid } |
↳ amountDueEmployee | json | Amount due employee { value, currencyCode } |
↳ claimedAmount | json | Total claimed amount { value, currencyCode } |
↳ totalApprovedAmount | json | Total approved amount { value, currencyCode } |
↳ hasExceptions | boolean | Whether the report has exceptions |
↳ reportType | string | Report creation method identifier |
↳ links | array | HATEOAS links |
Get a single cash advance assigned to a travel request (GET /travelrequest/v4/cashadvances/{cashAdvanceUuid}). This endpoint exists for feature parity only and will be deprecated in the future — SAP recommends relying on the list of cash advances link available in the Request payload response instead.
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
cashAdvanceUuid | string | Yes | Cash advance UUID (returned as part of a travel request) |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Cash advance detail |
↳ cashAdvanceId | string | Unique cash advance identifier |
↳ amountRequested | json | Requested amount |
↳ amount | number | Preferred amount field — use this over value |
↳ value | number | Legacy amount value — will soon be deprecated in favor of amount |
↳ currency | string | Currency code |
↳ approvalStatus | json | Approval status |
↳ code | string | Status code |
↳ name | string | Status name |
↳ requestDate | string | Request datetime (ISO 8601) |
↳ issueDate | string | Date the cash advance was issued (ISO 8601) |
↳ comment | string | Comment attached to the cash advance |
↳ exchangeRate | json | Exchange rate |
↳ value | number | Rate value |
↳ operation | string | Multiply or divide |
List travel profile summaries (GET /api/travelprofile/v2.0/summary). LastModifiedDate is required by Concur.
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
lastModifiedDate | string | Yes | Required UTC datetime in YYYY-MM-DDThh:mm:ss format |
page | number | No | 1-based page number |
itemsPerPage | number | No | Items per page (max 200) |
travelConfigs | string | No | Comma-separated travel configuration ids |
active | string | No | Filter by user state: "1" returns active users, "0" returns inactive users. |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | string | Raw XML travel profile summary list returned by Concur (Travel Profile v2 emits application/xml only, per the TravelProfileSummaryV2.xsd schema, so this is a string and not a parsed object). The document is rooted at <ConnectResponse> with ConnectResponse > Metadata > Paging (TotalPages, TotalItems, Page, ItemsPerPage, PreviousPageURL, NextPageURL) and ConnectResponse > Data > ProfileSummary, whose only child elements are Status, LoginID, XmlProfileSyncID, and ProfileLastModifiedUTC. |
List comments on a travel request (GET /travelrequest/v4/requests/{requestUuid}/comments).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
requestUuid | string | Yes | Travel request UUID |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | array | Array of comment entries |
↳ author | json | Comment author |
↳ firstName | string | Author first name |
↳ lastName | string | Author last name |
↳ creationDateTime | string | Comment creation timestamp (ISO 8601) |
↳ isLatest | boolean | Whether this is the latest comment |
↳ value | string | Comment text |
List travel requests (GET /travelrequest/v4/requests).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
view | string | No | View filter: ALL, ACTIVE, ACTIVEAPPROVED, UNSUBMITTED, PENDING, VALIDATED, APPROVED, CANCELED, CLOSED, SUBMITTED, TOAPPROVE, PENDINGEBOOKING, PENDINGPROPOSAL, PROPOSALAPPROVED, or PROPOSALCANCELED. Defaults to ALL when omitted. The three TMC-agent views (PENDINGPROPOSAL, PROPOSALAPPROVED, PROPOSALCANCELED) require userId. |
limit | number | No | Records per page (default 10, maximum 100 — higher values return 400) |
start | number | No | Page start cursor (offset) |
userId | string | No | For a traveler view, the unique identifier of the Request owner to search for. For an approver view, the unique identifier of the approver. For a TMC-agent view (PENDINGPROPOSAL, PROPOSALAPPROVED, PROPOSALCANCELED) this is required and is the unique identifier of the TMC agent. |
approvedBefore | string | No | ISO 8601 date — return requests approved before this date |
approvedAfter | string | No | ISO 8601 date — return requests approved after this date |
modifiedBefore | string | No | ISO 8601 date — return requests modified before this date |
modifiedAfter | string | No | ISO 8601 date — return requests modified after this date |
sortField | string | No | Field to sort by: startDate, approvalStatus, or requestId (default startDate) |
sortOrder | string | No | Sort order: ASC or DESC (default DESC) |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Travel requests list payload |
↳ data | array | Array of travel request summaries |
↳ id | string | Travel request UUID |
↳ href | string | Resource hyperlink |
↳ requestId | string | Public-facing request ID |
↳ name | string | Request name |
↳ businessPurpose | string | Business purpose |
↳ comment | string | Last attached comment |
↳ creationDate | string | Creation timestamp |
↳ submitDate | string | Last submission timestamp |
↳ startDate | string | Trip start date (ISO 8601) |
↳ endDate | string | Trip end date (ISO 8601) |
↳ startTime | string | Trip start time (HH:mm) |
↳ approved | boolean | Whether the request is approved |
↳ pendingApproval | boolean | Pending approval flag |
↳ closed | boolean | Closed flag |
↳ everSentBack | boolean | Ever-sent-back flag |
↳ canceledPostApproval | boolean | Canceled after approval flag |
↳ approvalStatus | json | Approval status |
↳ code | string | Status code (NOT_SUBMITTED, SUBMITTED, APPROVED, CANCELED, SENTBACK) |
↳ name | string | Localized status name |
↳ owner | json | Travel request owner |
↳ id | string | User UUID |
↳ firstName | string | Owner first name |
↳ lastName | string | Owner last name |
↳ approver | json | Approver assigned to the request |
↳ id | string | User UUID |
↳ firstName | string | Approver first name |
↳ lastName | string | Approver last name |
↳ type | json | Request type |
↳ code | string | Request type code |
↳ label | string | Request type label |
↳ totalApprovedAmount | json | Total approved amount |
↳ value | number | Amount value |
↳ currency | string | Currency code |
↳ totalPostedAmount | json | Total posted amount |
↳ value | number | Amount value |
↳ currency | string | Currency code |
↳ totalRemainingAmount | json | Total remaining amount |
↳ value | number | Amount value |
↳ currency | string | Currency code |
↳ expenses | array | Resource links to expected expenses |
↳ operations | array | Pagination links (next, prev, first, last) |
↳ rel | string | Link relation |
↳ href | string | Link target |
List Concur user identities (GET /profile/identity/v4.1/Users).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
count | number | No | Max number of users to return (default 100, max 1000) |
cursor | string | No | SCIM v4.1 pagination cursor — the nextCursor value returned by a prior call |
attributes | string | No | Comma-separated list of attributes to include in the response |
excludedAttributes | string | No | Comma-separated list of attributes to exclude from the response |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | SCIM ListResponse with Resources array |
Move a travel request through workflow (POST /travelrequest/v4/requests/{requestUuid}/{action}). Valid actions: submit, recall, cancel, approve, sendback, close, reopen.
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
requestUuid | string | Yes | Travel request UUID |
action | string | Yes | Workflow action: submit, recall, cancel, approve, sendback, close, reopen |
userId | string | No | The unique identifier of the user performing the status transition. Required when connecting with a Company token for traveler and Non traveler actions only; not required for External system validation actions. If empty, a 400 missingRequiredParam error code is returned. For non-traveler actions, if not provided, "System, Concur" is displayed in the Audit Trail of the Request. |
companyID | string | No | Optional company identifier for the workflow action (documented as companyID, distinct from the companyUuid auth field) |
comment | string | No | Comment sent as a query parameter. Only works when the workflow action is sendback. This comment is visible wherever Request comments are available. |
body | json | No | Optional payload — only the sendback action accepts one (e.g., { "comment": "..." }). Every other action takes no payload. |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | The full travel request having that requestUuid, after the workflow transition |
↳ id | string | Travel request UUID |
↳ href | string | Resource hyperlink |
↳ requestId | string | Public-facing request ID (4-6 alphanumeric characters) |
↳ name | string | Request name |
↳ businessPurpose | string | Business purpose |
↳ comment | string | Last attached comment |
↳ creationDate | string | Creation timestamp |
↳ lastModified | string | Last modification timestamp |
↳ submitDate | string | Last submission timestamp |
↳ authorizedDate | string | Date when approval was completed |
↳ approvalLimitDate | string | Required approval deadline |
↳ startDate | string | Trip start date (ISO 8601) |
↳ endDate | string | Trip end date (ISO 8601) |
↳ startTime | string | Trip start time (HH:mm) |
↳ endTime | string | Trip end time (HH:mm) |
↳ approved | boolean | Whether the request is approved |
↳ pendingApproval | boolean | Pending approval flag |
↳ closed | boolean | Closed flag |
↳ everSentBack | boolean | Ever-sent-back flag |
↳ canceledPostApproval | boolean | Canceled after approval flag |
↳ highestExceptionLevel | string | Highest exception level (WARNING, ERROR, NONE) |
↳ approvalStatus | json | Approval status after the workflow transition |
↳ code | string | Status code (NOT_SUBMITTED, SUBMITTED, APPROVED, CANCELED, SENTBACK) |
↳ name | string | Localized status name |
↳ owner | json | Travel request owner |
↳ id | string | User UUID |
↳ firstName | string | Owner first name |
↳ lastName | string | Owner last name |
↳ approver | json | Approver assigned after the transition |
↳ id | string | User UUID |
↳ firstName | string | Approver first name |
↳ lastName | string | Approver last name |
↳ policy | json | Resource link to the applicable policy |
↳ id | string | Policy ID |
↳ href | string | Policy hyperlink |
↳ type | json | Request type |
↳ code | string | Request type code |
↳ label | string | Request type label |
↳ mainDestination | json | Main destination of the trip |
↳ city | string | City |
↳ countryCode | string | ISO country code |
↳ countrySubDivisionCode | string | ISO country sub-division code |
↳ name | string | Destination name |
↳ totalApprovedAmount | json | Total approved amount |
↳ value | number | Amount value |
↳ currency | string | Currency code |
↳ totalPostedAmount | json | Total posted amount |
↳ value | number | Amount value |
↳ currency | string | Currency code |
↳ totalRemainingAmount | json | Total remaining amount |
↳ value | number | Amount value |
↳ currency | string | Currency code |
↳ expenses | array | Resource links to expected expenses |
↳ cashAdvances | json | Resource link to cash advances |
↳ id | string | Resource ID |
↳ href | string | Resource hyperlink |
↳ comments | json | Resource link to comments |
↳ id | string | Resource ID |
↳ href | string | Resource hyperlink |
↳ exceptions | json | Resource link to exceptions |
↳ id | string | Resource ID |
↳ href | string | Resource hyperlink |
↳ travelAgency | json | Resource link to travel agency |
↳ id | string | Resource ID |
↳ href | string | Resource hyperlink |
↳ extensionOf | json | The Request for which this Request is an extension of, or addendum to |
↳ requestId | string | The public key of the Request (unique per customer) |
↳ id | string | Unique identifier of the Request |
↳ href | string | Hyperlink to the resource |
↳ template | string | Hyperlink template to the resource |
↳ expensePolicy | json | Expense policy reference |
↳ id | string | Policy identifier |
↳ href | string | Policy URL |
↳ operations | array | Available follow-up workflow actions |
↳ rel | string | Link relation |
↳ href | string | Link target |
Recall a submitted expense report (PATCH /expensereports/v4/users/{userId}/context/{contextType}/reports/{reportId}/recall — supported contexts: TRAVELER, PROXY). Takes no request body. This operation supports user-level access tokens: set grantType to "password" with username and password, since the default client_credentials grant yields a company-level token.
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password. Recall requires a user-level access token, so set this to "password" and supply username/password — client_credentials produces a company-level token that Concur rejects for this operation. |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
userId | string | Yes | Concur user UUID who owns the report |
contextType | string | Yes | Access context: TRAVELER or PROXY |
reportId | string | Yes | Expense report ID to recall |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Empty (204 No Content) |
Remove all attendees from an expense (DELETE /expensereports/v4/users/{userId}/context/{contextType}/reports/{reportId}/expenses/{expenseId}/attendees).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
userId | string | Yes | Concur user UUID |
contextType | string | Yes | Access context: TRAVELER or PROXY |
reportId | string | Yes | Expense report ID |
expenseId | string | Yes | Expense ID |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Empty response body (Concur returns 204 No Content) |
Search Concur location reference data (GET /localities/v5/locations).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
searchText | string | No | Free-text for location search. Conditional — required if none of locationNameKey, locationNameId, or locCode is present. |
locCode | string | No | Location code. Conditional — required if none of locationNameKey, locationNameId, or searchText is present. |
locationNameId | string | No | UUID identifier of the location name. Conditional — required if none of locationNameKey, locCode, or searchText is present. |
locationNameKey | number | No | Unique key for the location name. Conditional — required if none of locationNameId, locCode, or searchText is present. |
countryCode | string | No | 2-letter ISO 3166-1 country code. Only valid together with searchText. |
subdivisionCode | string | No | ISO 3166-2:2007 country subdivision (e.g. US-WA). Only valid together with searchText. |
adminRegionId | string | No | Administrative region ID. Only valid together with searchText. |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Localities v5 search response |
↳ locations | array | Array of matching Location records |
↳ id | string | Location ID (UUID) |
↳ code | string | IATA / location code |
↳ legacyKey | number | Legacy numeric location key |
↳ timeZoneOffset | number | Time zone offset of the location, in minutes (e.g. 60) |
↳ active | boolean | Whether the location is active |
↳ point | json | Geographic coordinates |
↳ latitude | number | Latitude |
↳ longitude | number | Longitude |
↳ names | array | Localized location names |
↳ id | string | Name ID |
↳ legacyKey | number | Legacy numeric name key |
↳ langCode | string | Language code |
↳ name | string | Display name |
↳ active | boolean | Whether the name is active |
↳ administrativeRegion | json | Administrative region (e.g., metro area) |
↳ id | string | Unique identifier of the admin region |
↳ names | array | Localized region names |
↳ countryCode | string | ISO 3166-1 country code of the region |
↳ subDivCode | string | ISO 3166-2 subdivision code of the region |
↳ links | array | HATEOAS links |
↳ country | json | Country reference (Code schema) |
↳ code | string | ISO country code |
↳ names | array | Localized country names |
↳ links | array | HATEOAS links |
↳ subDivision | json | Country subdivision (state/province, Code schema) |
↳ code | string | ISO subdivision code |
↳ names | array | Localized subdivision names |
↳ links | array | HATEOAS links |
↳ links | array | HATEOAS links |
Search users via SCIM .search endpoint (POST /profile/identity/v4.1/Users/.search).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
body | json | Yes | SCIM search payload. Required: schemas: ["urn:ietf:params:scim:api:messages:concur:2.0:SearchRequest"] (Concur-specific URN, not the standard SearchRequest URN). Optional: filter, count (1-1000), attributes, excludedAttributes, cursor (the nextCursor value from a prior response). The startIndex request parameter is not supported (responses still return a startIndex value). |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | SCIM search ListResponse |
Send back an expense report to the employee (PATCH /expensereports/v4/reports/{reportId}/sendBack). Required body field: comment.
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
reportId | string | Yes | Expense report ID to send back |
body | json | Yes | Request body — comment is required by Concur (e.g., { "comment": "Missing receipt" }). Optional fields: expectedStepCode, expectedStepSequence. |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Empty (204 No Content) |
Submit an expense report into the workflow via Expense Report v4 (PATCH /expensereports/v4/users/{userId}/reports/{reportId}/submit). Takes no request body.
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
userId | string | Yes | Concur user UUID who owns the report |
reportId | string | Yes | Expense report ID to submit |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Empty (204 No Content) |
Update an allocation (PATCH /expensereports/v4/users/{userId}/context/{contextType}/reports/{reportId}/allocations/{allocationId}).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
userId | string | Yes | Concur user UUID |
contextType | string | Yes | Access context: TRAVELER or PROXY (write requires expense.report.readwrite) |
reportId | string | Yes | Expense report ID |
allocationId | string | Yes | Allocation ID to update |
body | json | Yes | JSON Merge Patch (RFC 7386) payload. Must be the two-key envelope { "allocation": { "customData": [{ "id": "custom9", "value": "...", "isValid": true }] }, "expenseIds": ["29EE..."] }. |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Empty body on success (Concur returns 204 No Content) |
Update an expected expense (PUT /travelrequest/v4/expenses/{expenseUuid}).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
expenseUuid | string | Yes | Expected expense UUID to update |
userId | string | No | User UUID acting on the request (required when using a Company JWT, optional otherwise) |
body | json | Yes | Fields to update on the expected expense |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Updated expected expense payload |
↳ id | string | Expected expense identifier |
↳ href | string | Self-link |
↳ expenseType | json | Expense type {id, name} |
↳ transactionDate | string | Transaction date |
↳ transactionAmount | json | Transaction amount {value, currency} |
↳ postedAmount | json | Posted amount {value, currency} |
↳ approvedAmount | json | Approved amount {value, currency} |
↳ remainingAmount | json | Remaining amount on the expected expense |
↳ businessPurpose | string | Business purpose of the expense |
↳ location | json | Location {id, name, city, countryCode, countrySubDivisionCode, iataCode, locationType} |
↳ exchangeRate | json | Exchange rate {value, operation} |
↳ allocations | json | Budget allocations array |
↳ tripData | json | Trip data {agencyBooked, selfBooked, tripType (ONE_WAY|ROUND_TRIP), legs[{id, returnLeg, startDate, startTime, startLocationDetail, startLocation, endLocation, class {code,value}, travelExceptionReasonCodes}], segmentType {category, code}} |
↳ parentRequest | json | Parent travel request resource link {href, id} |
↳ comments | json | Comments sub-resource link {href, id} |
Update an expense (PATCH /expensereports/v4/reports/{reportId}/expenses/{expenseId}). Only Company JWT authentication is allowed on this endpoint — the password grant is rejected. A submitted report cannot be updated once it has reached a Paid workflow status. Although the primary intent of this operation is for submitted report updates, it also works on unsubmitted reports, but with the same limited set of fields.
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
reportId | string | Yes | Expense report ID |
expenseId | string | Yes | Expense ID to update |
body | json | Yes | PATCH body. Allowed fields: businessPurpose (string, max 64), customData (CustomData[]), expenseSource (required: EA|MOB|OTHER|SE|TA|TR|UI), isExpenseRejected (boolean), isPaperReceiptReceived (boolean). |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Empty body on success (HTTP 204 No Content). Error details when status is non-2xx |
Update an unsubmitted expense report (PATCH /expensereports/v4/users/{userId}/context/{contextType}/reports/{reportId} — supported contexts: TRAVELER, PROXY). The body must always include reportSource (EA, MOB, OTHER, SE, TR, or UI).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
userId | string | Yes | Concur user UUID who owns the report |
contextType | string | Yes | Access context: TRAVELER (own report) or PROXY (editing on behalf of another user) |
reportId | string | Yes | Expense report ID to update |
body | json | Yes | Fields to update on the report. reportSource is REQUIRED by Concur on every update — one of "EA", "MOB", "OTHER", "SE", "TR", "UI" (use "OTHER" if unknown). Other updatable fields: businessPurpose, comment, country, countryCode, countrySubDivisionCode, customData, endDate, isCopyDownInherited, isPaperReceiptsReceived, name, policy, policyId, redirectFund, reportDate, startDate. |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Empty (204 No Content) |
Update a list item (PUT /list/v4/items/{itemId}).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
itemId | string | Yes | List item UUID |
body | json | Yes | List item payload. Required: shortCode, value. Other fields in the body are ignored. |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Updated list item |
↳ id | string | List item UUID |
↳ listId | string | UUID of the list that contains the list item |
↳ code | string | Long code format for the item |
↳ shortCode | string | Short code identifier |
↳ value | string | Display value of the item |
↳ parentId | string | Parent item UUID (omitted for first-level items) |
↳ level | number | Hierarchy level (1 for root items) |
↳ isDeleted | boolean | Deletion status across all containing lists |
↳ lists | array | Lists containing this item |
↳ id | string | List UUID |
↳ hasChildren | boolean | Whether this item has children in the list |
Update a travel request (PUT /travelrequest/v4/requests/{requestUuid}).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
requestUuid | string | Yes | Travel request UUID to update |
userId | string | No | The unique identifier of the user performing the update. Optional. Will be taken into account only if calling with a Company token. If not provided the update will be performed as "Concur System". |
body | json | Yes | Fields to update on the travel request. Partial update is supported. Only these fields are updatable: comment, startDate, startTime, endDate, endTime, expensePolicy, name, businessPurpose, mainDestination, travelAgency, and the custom1-custom20 fields — any other field is silently ignored. Pass an unquoted null to clear a field. |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Updated travel request payload |
↳ id | string | Travel request UUID |
↳ href | string | Resource hyperlink |
↳ requestId | string | Public-facing request ID (4-6 alphanumeric characters) |
↳ name | string | Request name |
↳ businessPurpose | string | Business purpose |
↳ comment | string | Last attached comment |
↳ creationDate | string | Creation timestamp |
↳ lastModified | string | Last modification timestamp |
↳ submitDate | string | Last submission timestamp |
↳ startDate | string | Trip start date (ISO 8601) |
↳ endDate | string | Trip end date (ISO 8601) |
↳ startTime | string | Trip start time (HH:mm) |
↳ endTime | string | Trip end time (HH:mm) |
↳ approved | boolean | Whether the request is approved |
↳ pendingApproval | boolean | Pending approval flag |
↳ closed | boolean | Closed flag |
↳ everSentBack | boolean | Ever-sent-back flag |
↳ canceledPostApproval | boolean | Canceled after approval flag |
↳ approvalStatus | json | Approval status |
↳ code | string | Status code (NOT_SUBMITTED, SUBMITTED, APPROVED, CANCELED, SENTBACK) |
↳ name | string | Localized status name |
↳ owner | json | Travel request owner |
↳ id | string | User UUID |
↳ firstName | string | Owner first name |
↳ lastName | string | Owner last name |
↳ approver | json | Approver assigned to the request |
↳ id | string | User UUID |
↳ firstName | string | Approver first name |
↳ lastName | string | Approver last name |
↳ policy | json | Resource link to the applicable policy |
↳ id | string | Policy ID |
↳ href | string | Policy hyperlink |
↳ type | json | Request type |
↳ code | string | Request type code |
↳ label | string | Request type label |
↳ mainDestination | json | Main destination of the trip |
↳ city | string | City |
↳ countryCode | string | ISO country code |
↳ countrySubDivisionCode | string | ISO country sub-division code |
↳ name | string | Destination name |
↳ totalApprovedAmount | json | Total approved amount |
↳ value | number | Amount value |
↳ currency | string | Currency code |
↳ totalPostedAmount | json | Total posted amount |
↳ value | number | Amount value |
↳ currency | string | Currency code |
↳ totalRemainingAmount | json | Total remaining amount |
↳ value | number | Amount value |
↳ currency | string | Currency code |
↳ operations | array | Available workflow actions |
Patch a user identity (PATCH /profile/identity/v4.1/Users/{id}).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
userUuid | string | Yes | User UUID to update |
body | json | Yes | SCIM PATCH payload. Required: schemas: ["urn:ietf:params:scim:api:messages:2.0:PatchOp"] and Operations, an array of { op, path, value } where op is add, replace, or remove. If the target location is a multi-valued attribute and no filter is specified, the attribute and all values are replaced. Example: deactivate a user with { op: "replace", path: "active", value: false }. |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Updated SCIM User payload |
Upload an image-only receipt (POST /receipts/v4/users/{userId}/image-only-receipts).
| Parameter | Type | Required | Description |
|---|
datacenter | string | No | Concur datacenter base URL (defaults to us.api.concursolutions.com) |
grantType | string | No | OAuth grant type: client_credentials (default) or password |
clientId | string | Yes | Concur OAuth client ID |
clientSecret | string | Yes | Concur OAuth client secret |
username | string | No | Username (only for password grant) |
password | string | No | Password (only for password grant) |
companyUuid | string | No | Company UUID for multi-company access tokens |
userId | string | Yes | Concur user UUID who owns the receipt |
receipt | json | Yes | Receipt image file (UserFile reference). Supported formats: png, jpg, jpeg, tiff, tif, gif, pdf. TIFF/TIF files are converted to PDF server-side. Maximum size 25 MB. |
| Parameter | Type | Description |
|---|
status | number | HTTP status code returned by Concur |
data | json | Image-only receipt upload response (HTTP 202 Accepted; Location and Link response headers exposed in body) |
↳ location | string | Location header URL for the new receipt image (e.g. /receipts/v4/images/{receiptId}) |
↳ link | string | Raw Link header value, forwarded verbatim — it is not a bare URL. Format: <https://{datacenter}/receipts/v4/status/{receiptId}>; rel="processing-status". Parse the href out of the angle brackets before using it. |