Expense Configuration v4
The Expense Configuration v4 API can be used to read expense configuration associated with expense groups.
Prior Versions
- Expense Group Configuration v3 documentation is available here
Limitations
Access to this documentation does not provide access to the API.
Process Flow
Products and Editions
- Concur Expense Professional Edition
- Concur Expense Standard Edition
Scope Usage
Required Scopes:
Name | Description | Endpoint |
---|---|---|
expense.config.policies.restricted.read |
Get a list of all expense policies applicable to a user. | GET |
expense.config.expensetypes.restricted.read |
Get a list of expense types applicable to a user based on a policy. | GET |
expense.config.paymenttypes.restricted.read |
Get a list of all payment types applicable to a user. | GET |
expense.config.attendeetypes.restricted.read |
Get a list of all attendee types applicable to a user. | GET |
expense.config.groups.restricted.read |
Get group information applicable to a user/company. | GET |
user.read |
Get User Information, necessary for userID . |
GET |
Dependencies
SAP Concur clients must purchase Concur Expense in order to use this API. This API requires the Identity v4 API. Please contact your SAP Concur representative for more information.
Access Token Usage
This API supports both company level and user level access tokens.
Retrieve a List of Policies
Retrieves a list of policies applicable to a user
Scopes
expense.config.policies.restricted.read
- Refer to Scope Usage for full details.
Request
URI Template
https://{datacenterURI}/expenseconfig/v4/users/{userID}/policies
Parameters
Name | Type | Format | Description |
---|---|---|---|
userID |
string |
- | Required The unique identifier of the SAP Concur user. Use Identity v4 API to retrieve the userID . |
Headers
- RFC 7231 Accept-Language
- RFC 7231 Content-Type
- RFC 7231 Content-Encoding
- RFC 7234 Cache-Control
- RFC 7232 If-Modified-Since
- RFC 7231 Accept-Encoding
- RFC 7235 Authorization - Bearer Token that identifies the caller. This is the Company or User access token.
Response
Status Codes
Payload
Example
Request
curl --location --request GET 'https://us.api.concursolutions.com/expenseconfig/v4/users/32C2FCC3-B2E8-4907-9672-5B3F49B1C643/policies' \
--header 'Authorization: Bearer {access_token}' \
--header 'Content-Type: application/json'
Response
200 OK
[
{
"policyId": "B3173DEE4434427293ED0286992452E3",
"policyName": "US Expense Policy",
"isDefault": true,
"isInheritable": false
},
{
"policyId": "4A0A51AF6F244476B65F9FF06E82AF2F",
"policyName": "CA Expense Policy",
"isDefault": false,
"isInheritable": false
}
]
Retrieve a List of Expense Types for a Policy
Retrieves a list of expense types applicable to a user based on a policy
Scopes
expense.config.expensetypes.restricted.read
- Refer to Scope Usage for full details.
expense.config.policies.restricted.read
- Refer to Scope Usage for full details.
Request
URI Template
https://{datacenterURI}/expenseconfig/v4/users/{userID}/policies/{policyId}/expensetypes
Parameters
Name | Type | Format | Description |
---|---|---|---|
userID |
string |
- | Required The unique identifier of the SAP Concur user. Use Identity v4 API to retrieve the userID . |
policyId |
string |
- | Required The unique identifier of an expense policy. Use Expense Policies v4 API to retrieve the policyId . |
Headers
- RFC 7231 Accept-Language
- RFC 7231 Content-Type
- RFC 7231 Content-Encoding
- RFC 7234 Cache-Control
- RFC 7232 If-Modified-Since
- RFC 7231 Accept-Encoding
- RFC 7235 Authorization - Bearer Token that identifies the caller. This is the Company or User access token.
Response
Status Codes
Payload
Example
Request
curl --location --request GET 'https://us.api.concursolutions.com/expenseconfig/v4/users/32C2FCC3-B2E8-4907-9672-5B3F49B1C643/policies/B3173DEE4434427293ED0286992452E3/expensetypes' \
--header 'Authorization: Bearer {access_token}' \
--header 'Content-Type: application/json'
Response
200 OK
[
{
"expenseTypeId": "TRAVL",
"expenseTypeName": "01. Travel",
"spendCategoryCode": "OTHER",
"spendCategoryName": "Other",
"isCategory": true
},
{
"expenseTypeId": "TRANS",
"expenseTypeName": "02. Transportation",
"spendCategoryCode": "OTHER",
"spendCategoryName": "Other",
"isCategory": true
},
{
"expenseTypeId": "MLENT",
"expenseTypeName": "03. Meals and Entertainment",
"spendCategoryCode": "OTHER",
"spendCategoryName": "Other",
"isCategory": true
},
{
"expenseTypeId": "OFFIC",
"expenseTypeName": "04. Office Expenses",
"spendCategoryCode": "OTHER",
"spendCategoryName": "Other",
"isCategory": true
},
{
"expenseTypeId": "AIRFR",
"expenseTypeName": "Airfare",
"spendCategoryCode": "OTHER",
"spendCategoryName": "Other",
"isCategory": false,
"parentExpenseTypeId": "TRAVL",
"parentName": "01. Travel"
},
{
"expenseTypeId": "AIRTX",
"expenseTypeName": "Airfare Ticket Tax",
"spendCategoryCode": "OTHER",
"spendCategoryName": "Other",
"isCategory": false,
"parentExpenseTypeId": "TRAVL",
"parentName": "01. Travel"
},
{
"expenseTypeId": "AIRFE",
"expenseTypeName": "Airline Fees",
"spendCategoryCode": "OTHER",
"spendCategoryName": "Other",
"isCategory": false,
"parentExpenseTypeId": "TRAVL",
"parentName": "01. Travel"
}
]
Retrieve a List of Payment Types
Retrieves a list of payment types applicable to a user
Scopes
expense.config.paymenttypes.restricted.read
- Refer to Scope Usage for full details.
Request
URI Template
https://{datacenterURI}/expenseconfig/v4/users/{userID}/paymenttypes
Parameters
Name | Type | Format | Description |
---|---|---|---|
userID |
string |
- | Required The unique identifier of the SAP Concur user. Use Identity v4 API to retrieve the userID . |
Headers
- RFC 7231 Accept-Language
- RFC 7231 Content-Type
- RFC 7231 Content-Encoding
- RFC 7234 Cache-Control
- RFC 7232 If-Modified-Since
- RFC 7231 Accept-Encoding
- RFC 7235 Authorization - Bearer Token that identifies the caller. This is the Company or User access token.
Response
Status Codes
Payload
Example
Request
curl --location --request GET 'https://us.api.concursolutions.com/expenseconfig/v4/users/32C2FCC3-B2E8-4907-9672-5B3F49B1C643/paymenttypes' \
--header 'Authorization: Bearer {access_token}' \
--header 'Content-Type: application/json'
Response
200 OK
[
{
"paymentTypeId": "CASH",
"paymentTypeName": "Cash",
"isDefault": true
},
{
"paymentTypeId": "PERS",
"paymentTypeName": "Personal",
"isDefault": false
},
{
"paymentTypeId": "PCCD",
"paymentTypeName": "Pending Card Transaction",
"isDefault": false
}
]
Retrieve a List of Attendee Types
Retrieves a list of attendee types applicable to a user’s expense group
Scopes
expense.config.attendeetypes.restricted.read
- Refer to Scope Usage for full details.
Request
URI Template
https://{datacenterURI}/expenseconfig/v4/users/{userID}/attendeetypes
Parameters
Name | Type | Format | Description |
---|---|---|---|
userID |
string |
- | Required The unique identifier of the SAP Concur user. Use Identity v4 API to retrieve the userID . |
Headers
- RFC 7231 Accept-Language
- RFC 7231 Content-Type
- RFC 7231 Content-Encoding
- RFC 7234 Cache-Control
- RFC 7232 If-Modified-Since
- RFC 7231 Accept-Encoding
- RFC 7235 Authorization - Bearer Token that identifies the caller. This is the Company or User access token.
Response
Status Codes
Payload
Example
Request
curl --location --request GET 'https://us.api.concursolutions.com/expenseconfig/v4/users/32C2FCC3-B2E8-4907-9672-5B3F49B1C643/attendeetypes' \
--header 'Authorization: Bearer {access_token}' \
--header 'Content-Type: application/json'
Response
200 OK
[
{
"attendeeTypeCode": "BUSGUEST",
"attendeeTypeName": "Business Guest"
},
{
"attendeeTypeCode": "SPOUSE",
"attendeeTypeName": "Spouse"
}
]
Retrieve an Expense Group applicable to a user
Retrieves an expense group applicable to a user
Scopes
expense.config.groups.restricted.read
- Refer to Scope Usage for full details.
Request
URI Template
https://{datacenterURI}/expenseconfig/v4/users/{userID}/groupconfigs
Parameters
Name | Type | Format | Description |
---|---|---|---|
userID |
string |
- | Required The unique identifier of the SAP Concur user. Use Identity v4 API to retrieve the userID . |
Headers
- RFC 7231 Accept-Language
- RFC 7231 Content-Type
- RFC 7231 Content-Encoding
- RFC 7234 Cache-Control
- RFC 7232 If-Modified-Since
- RFC 7231 Accept-Encoding
- RFC 7235 Authorization - Bearer Token that identifies the caller. This is the Company or User access token.
Response
Status Codes
Payload
Example
Request
curl --location --request GET 'https://us.api.concursolutions.com/expenseconfig/v4/users/32C2FCC3-B2E8-4907-9672-5B3F49B1C643/groupconfigs' \
--header 'Authorization: Bearer {access_token}' \
--header 'Content-Type: application/json'
Response
200 OK
{
"hierarchyNodeId": "40D435A25DAE45A093AF455A93702A02",
"groupName": "Global",
"allowUserDigitalTaxInvoice": true,
"allowUserRegisterYodlee": true,
"attendeeListFormId": "5717E29E031346ACB36502AE5E6852BA",
"attendeeListFormName": "Attendee List Default Form",
"cashAdvance": {
"allowUserCarryBalance": true,
"allowUserLinkMultiple": true,
"allowUserUpdateExchangeRate": true,
"name": "Default Cash Advance Workflow",
"workflowId": "3A2AADC26EE84A1E9833C431FCBB16AC"
},
"policies": [
{
"policyId": "B3173DEE4434427293ED0286992452E3",
"policyName": "US Expense Policy",
"isDefault": true,
"isInheritable": true
}
],
"paymentTypes": [
{
"paymentTypeId": "CASH",
"paymentTypeName": "Cash",
"isDefault": true
}
],
"attendeeTypes": [
{
"attendeeTypeCode": "SPOUSE",
"attendeeTypeName": "Spouse"
}
]
}
Retrieve all Expense Groups applicable to a company
Retrieves all expense groups applicable to a company
Scopes
expense.config.groups.restricted.read
- Refer to Scope Usage for full details.
Request
URI Template
https://{datacenterURI}/expenseconfig/v4/companies/{companyId}/groupconfigs
Parameters
Name | Type | Format | Description |
---|---|---|---|
companyId |
string |
- | Required The unique identifier of the SAP Concur Company. Use Identity v4 API to retrieve the companyId . |
Headers
- RFC 7231 Accept-Language
- RFC 7231 Content-Type
- RFC 7231 Content-Encoding
- RFC 7234 Cache-Control
- RFC 7232 If-Modified-Since
- RFC 7231 Accept-Encoding
- RFC 7235 Authorization - Bearer Token that identifies the caller. This is the Company or User access token.
Response
Status Codes
Payload
Example
Request
curl --location --request GET 'https://us.api.concursolutions.com/expenseconfig/v4/company/32C2FCC3-B2E8-4907-9672-5B3F49B1C643/groupconfigs' \
--header 'Authorization: Bearer {access_token}' \
--header 'Content-Type: application/json'
Response
200 OK
{
"hierarchyNodeId": "40D435A25DAE45A093AF455A93702A02",
"groupName": "Global",
"allowUserDigitalTaxInvoice": true,
"allowUserRegisterYodlee": true,
"attendeeListFormId": "5717E29E031346ACB36502AE5E6852BA",
"attendeeListFormName": "Attendee List Default Form",
"cashAdvance": {
"allowUserCarryBalance": true,
"allowUserLinkMultiple": true,
"allowUserUpdateExchangeRate": true,
"name": "Default Cash Advance Workflow",
"workflowId": "3A2AADC26EE84A1E9833C431FCBB16AC"
}
}
Retrieve an Expense Group by ID
Company level API to retrieve an expense group by Id, including policies, payment types and attendee types linked to the group
Scopes
expense.config.groups.restricted.read
- Refer to Scope Usage for full details.
Request
URI Template
https://{datacenterURI}/expenseconfig/v4/companies/{companyId}/groupconfigs/{hierarchyNodeId}
Parameters
Name | Type | Format | Description |
---|---|---|---|
companyId |
string |
- | Required The unique identifier of the SAP Concur Company. Use Identity v4 API to retrieve the companyId . |
hierarchyNodeId |
string |
- | Required The unique identifier of a node within the expense group hierarchy. Use Company Groups v4 API to retrieve the hierarchyNodeId |
applicableConfigs |
`string | - | Optional Query parameter to include applicable configurations for the group. For example, applicableConfigs=attendeeTypes,paymentTypes,policies. |
Headers
- RFC 7231 Accept-Language
- RFC 7231 Content-Type
- RFC 7231 Content-Encoding
- RFC 7234 Cache-Control
- RFC 7232 If-Modified-Since
- RFC 7231 Accept-Encoding
- RFC 7235 Authorization - Bearer Token that identifies the caller. This is the Company or User access token.
Response
Status Codes
Payload
Example
Request
curl --location --request GET 'https://us.api.concursolutions.com/expenseconfig/v4/company/32C2FCC3-B2E8-4907-9672-5B3F49B1C643/groupconfigs/40D435A25DAE45A093AF455A93702A02?applicableConfigs=attendeeTypes,paymentTypes,policies' \
--header 'Authorization: Bearer {access_token}' \
--header 'Content-Type: application/json'
Response
200 OK
{
"hierarchyNodeId": "40D435A25DAE45A093AF455A93702A02",
"groupName": "Global",
"allowUserDigitalTaxInvoice": true,
"allowUserRegisterYodlee": true,
"attendeeListFormId": "5717E29E031346ACB36502AE5E6852BA",
"attendeeListFormName": "Attendee List Default Form",
"cashAdvance": {
"allowUserCarryBalance": true,
"allowUserLinkMultiple": true,
"allowUserUpdateExchangeRate": true,
"name": "Default Cash Advance Workflow",
"workflowId": "3A2AADC26EE84A1E9833C431FCBB16AC"
},
"policies": [
{
"policyId": "B3173DEE4434427293ED0286992452E3",
"policyName": "US Expense Policy",
"isDefault": true,
"isInheritable": true
}
],
"paymentTypes": [
{
"paymentTypeId": "CASH",
"paymentTypeName": "Cash",
"isDefault": true
}
],
"attendeeTypes": [
{
"attendeeTypeCode": "SPOUSE",
"attendeeTypeName": "Spouse"
}
]
}
Schema
Expense Policy
Name | Type | Format | Description |
---|---|---|---|
policyId |
string |
- | Required The unique identifier of a policy. |
policyName |
string |
- | Required Name of a policy. |
isDefault |
boolean |
true /false |
Required Indicates whether this policy is the default for user’s group. |
isInheritable |
boolean |
true /false |
Required Indicates whether this policy is inheritable for user’s group. |
Expense Type
Name | Type | Format | Description |
---|---|---|---|
expenseTypeId |
string |
- | Required The unique identifier of an expense type. |
expenseTypeName |
string |
- | Required Name of an expense type. |
spendCategoryCode |
string |
- | Required The unique identifier of a spend category. |
spendCategoryName |
string |
- | Required Name of a spend category. |
isCategory |
boolean |
true /false |
Required Is Expense Type a category? Expenses cannot be created from category expense types. |
parentExpenseTypeId |
string |
- | The unique identifier on a parent expense type. |
parentName |
string |
- | Parent expense type name. |
Payment Type
Name | Type | Format | Description |
---|---|---|---|
paymentTypeId |
string |
- | Required The unique identifier of a payment type. |
paymentTypeName |
string |
- | Required Name of a payment type. |
isDefault |
boolean |
true /false |
Required Indicates whether this payment type is the default for user’s group. |
Attendee Type
Name | Type | Format | Description |
---|---|---|---|
attendeeTypeCode |
string |
- | Required The unique identifier of an attendee type. |
attendeeTypeName |
string |
- | Required Name of an attendee type. |
Group
Name | Type | Format | Description |
---|---|---|---|
hierarchyNodeId |
string |
- | Required The unique identifier of a node within the expense group hierarchy. |
groupName |
string |
- | Required Name of an expense group. |
allowUserDigitalTaxInvoice |
boolean |
true /false |
Allow user to upload digital tax invoice (Allow Xml Receipt Import) |
allowUserRegisterYodlee |
boolean |
true /false |
Allow user to register Yodlee credit cards (Allow Personal Card Integration) |
attendeeListFormId |
string |
- | The unique identifier of an Attendee list form |
attendeeListFormName |
string |
- | Attendee list form name |
cashAdvance |
Cash Advance |
- | Cash advance configuration |
Group Config
Name | Type | Format | Description |
---|---|---|---|
hierarchyNodeId |
string |
- | Required The unique identifier of a node within the expense group hierarchy. |
groupName |
string |
- | Required Name of an expense group. |
allowUserDigitalTaxInvoice |
boolean |
true /false |
Allow user to upload digital tax invoice (Allow Xml Receipt Import) |
allowUserRegisterYodlee |
boolean |
true /false |
Allow user to register Yodlee credit cards (Allow Personal Card Integration) |
attendeeListFormId |
string |
- | The unique identifier of an Attendee list form |
attendeeListFormName |
string |
- | Attendee list form name |
cashAdvance |
Cash Advance |
- | Cash advance configuration |
policies |
Expense Policy |
- | List of Expense Policies applicable to the expense group |
paymentTypes |
Payment Type |
- | List of Payment Types applicable to the expense group |
attendeeTypes |
Attendee Type |
- | List of Attendee Types applicable to the expense group |
Cash Advance
Name | Type | Format | Description |
---|---|---|---|
workflowId |
string |
- | Unique identifier for the cash advance workflow. Null means there is no such workflow. |
name |
string |
- | Name of the cash advance workflow |
allowUserCarryBalance |
boolean |
true /false |
Allow user to carry a cash advance balance from one report to another. |
allowUserLinkMultiple |
boolean |
true /false |
Allow user to link multiple cash advances to one expense report. |
allowUserUpdateExchangeRate |
boolean |
true /false |
Allow user to update the currency exchange rate for expense entries. |
ErrorMessage
Name | Type | Format | Description |
---|---|---|---|
errorId |
string |
- | The unique identifier of the error associated with the response. |
errorMessage |
string |
- | Required The detailed error message. |
httpStatus |
string |
- | Required The http response code and phrase for the response. |
path |
string |
- | Required The URI of the attempted request. |
timestamp |
string |
date-time |
Required The time when the error was captured. |
validationErrors |
ValidationError |
- | The validation error messages. |
ValidationError
Name | Type | Format | Description |
---|---|---|---|
id |
string |
- | The ID of the validation error. |
message |
string |
- | The detailed message of the validation error. |
source |
string |
- | The type of validation which failed. |