SAP Concur

SAP Concur is a cloud-based travel and expense management platform that helps businesses manage travel bookings, expense reporting, and invoice processing.

API version

The SAP Concur connector uses the following SAP Concur APIs:

Refer to the Required scopes by trigger and action section for details on how these APIs relate to specific triggers and actions.

Connection setup

The SAP Concur connector supports the following OAuth 2.0 authentication types:

::: note REQUIRED SCOPE You must add the EXPRPT scope when connecting to SAP Concur. SAP Concur returns a Forbidden Request error without this scope. :::

Create an OAuth 2.0 application

All authentication methods require an OAuth 2.0 application in your SAP Concur instance. Complete the following steps to create one, or refer to the OAuth 2.0 Application Management Tool documentation:

1

Sign in to your SAP Concur instance with administrator credentials.

2

Go to Administration > Company > Authentication Admin.

3

Select OAuth 2.0 Application Management from the menu.

4

Click Create new app.

5

Complete the basic application configuration fields:

  • App Name: Enter a descriptive name for your application (for example, Workato Integration).
  • App Description: Enter a description for your application.
  • App Stage: Select your environment (Development, Test, or Production).
  • Application Type: Select your application type (Web Services (WS) Client or Integration with Concur Solutions (ICS) Client).
  • Allowed Grants: Select the grants your integration requires. Select password and refresh_token for password grant or refresh token grant authentication. Select authorization_code for authorization code grant authentication.
  • Redirect URIs: Enter https://www.workato.com/oauth/callback for authorization code grant authentication. This field appears only when authorization_code is selected.
6

Configure the allowed scopes for your integration. At minimum, include EXPRPT. Refer to the Required scopes by trigger and action section to identify any additional scopes required by the triggers and actions you plan to use.

Alternatively, you can click Enter Manually and copy and paste the following scopes to enable full connector functionality:

plaintext
ATTEND
CONFIG
expense.report.read
expense.report.readwrite
EXPRPT
identity.user.core.read
identity.user.coreenterprise.writeonly
identity.user.coresensitive.read
identity.user.enterprise.read
identity.user.externalID.writeonly
identity.user.ids.read
identity.user.sap.read
IMAGE
INVPMT
INVVEN
LIST
openid
spend.list.read
spend.list.write
spend.listitem.delete
spend.listitem.read
spend.listitem.write
spend.user.general.read
spend.user.general.writeonly
travel.user.general.read
travel.user.private.read
user.provision.read
user.provision.write
user.read
user.write
7

Click Submit.

8

Record your Client ID and Client Secret in a secure location. These values are required to establish the connection in Workato.

SAVE YOUR CREDENTIALS

The client secret is only displayed once. If you lose it, you must regenerate it or create a new application.

Refresh token grant

Use this authentication method for production instances. Contact your Concur account manager to receive refresh token credentials.

Generate a company request token

Complete the following steps to generate a company request token:

1

In the SAP Concur admin panel, go to Administration > Company > Authentication Admin.

2

Select Company Request Token from the menu.

3

Enter your App ID (Client ID) from the OAuth application you created in the previous section.

4

Click Submit.

5

Record the following information displayed in the success dialog:

  • Company UUID: Your company's unique identifier.
  • Company Request Token: A temporary token that expires in 24 hours.

TOKEN EXPIRATION

The company request token expires after 24 hours. If you don't complete the next steps within 24 hours, you must regenerate the token.

6

Click OK to close the dialog.

Obtain a refresh token

Complete the following steps to obtain a refresh token using your company request token:

1

Open an API client of your choice, such as Postman or cURL.

2

Create a POST request to the SAP Concur OAuth2 token resource using the endpoint that matches your SAP Concur environment:

  • Production: https://us.api.concursolutions.com/oauth2/v0/token
  • Implementation (Test): https://us-impl.api.concursolutions.com/oauth2/v0/token
3

Configure the request body with the following parameters (use x-www-form-urlencoded format):

  • client_id: Your Client ID from the OAuth application
  • client_secret: Your Client Secret from the OAuth application
  • username: Your Company UUID from the Company Request Token step
  • password: Your Company Request Token from the Company Request Token step
  • grant_type: password
  • credtype: authtoken

Example Postman configuration:

Postman configuration for refresh tokenPostman configuration

4

Send the request.

5

Record the refresh_token value in a secure location. This value is required to establish the SAP Concur connection in Workato.

Connect to SAP Concur using refresh token grant

Complete the following steps to connect to SAP Concur using refresh token grant authentication:

1

Click Create > Connection.

2

Search for and select SAP Concur on the New connection page.

3

Enter a name for your connection in the Connection name field. Give this connection a unique name that identifies which SAP Concur instance it's connected to.

Connect to SAP ConcurConnect to SAP Concur

4

Use the first Location drop-down menu to select the project or folder to store your connection.

5

Use the Implementation instance drop-down menu to select whether you're connecting to a Concur implementation server. Select Yes if connecting to an implementation server. Defaults to No for existing connections.

6

Use the Authentication type drop-down menu to select Refresh token grant.

7

Use the second Location drop-down menu to select the location of your Concur implementation server.

8

Enter the client ID from your application in the Client ID field.

9

Enter the client secret from your application in the Client secret field.

10

Enter the refresh token from your application in the Refresh token field.

11

Click Connect.

Password grant

Use this authentication method for sandbox instances.

Connect to SAP Concur using password grant

Complete the following steps to connect to SAP Concur using password grant authentication:

1

Click Create > Connection.

2

Search for and select SAP Concur on the New connection page.

3

Enter a name for your connection in the Connection name field. Give this connection a unique name that identifies which SAP Concur instance it's connected to.

Connect to SAP ConcurConnect to SAP Concur

4

Use the first Location drop-down menu to select the project or folder to store your connection.

5

Use the Implementation instance drop-down menu to select whether you're connecting to a Concur implementation server. Select Yes if connecting to an implementation server. Defaults to No for existing connections.

6

Use the Authentication type drop-down menu to select Password grant.

7

Enter your SAP Concur Username.

8

Enter your SAP Concur Password.

9

Use the second Location drop-down menu to select the location of your Concur implementation server.

10

Enter the Client ID from your application.

11

Enter the Client secret from your application.

12

Click Connect.

Authorization code grant

Use this authentication method to authenticate with SAP Concur using an interactive OAuth login flow.

Authorization code grant is required to use Verified User Access (VUA). Other grant types, including API keys, basic auth, and other OAuth 2.0 flows, are not compatible with VUA.

This option requires a custom OAuth profile configured with your SAP Concur client credentials.

Set up a custom OAuth profile

Authorization code grant authentication requires a custom OAuth profile in Workato. The profile stores your SAP Concur client credentials and is required to complete the connection. Workato returns an error if you select authorization code grant without a custom OAuth profile, or if the profile is missing a client ID or client secret.

Complete the following steps to create a custom OAuth profile:

1

Go to Tools > Custom OAuth profiles.

2

Click + New custom profile.

3

Search for SAP Concur and select it as your app.

4

Enter a name for the profile.

5

Enter the Client ID and Client secret from the OAuth application you created.

6

Click Save.

Minimum and default scopes

Ensure your SAP Concur OAuth app has every scope you request in the connection settings. The connection fails with a 400 Bad Request error if a requested scope isn't enabled in your OAuth app.

The minimum required scopes are openid, user.read, and EXPRPT. Workato requests the following default scopes if you leave the Scopes field blank. Ensure your OAuth app has all of them configured.

Default scopes:

  • openid
  • user.read
  • user.write
  • EXPRPT
  • expense.report.read
  • expense.report.readwrite
  • LIST
  • spend.list.read
  • spend.list.write
  • spend.listitem.read
  • spend.listitem.write
  • spend.listitem.delete
  • IMAGE
  • ATTEND
  • CONFIG
  • INVPMT
  • INVVEN
  • identity.user.core.read
  • identity.user.coresensitive.read
  • identity.user.enterprise.read
  • identity.user.coreenterprise.writeonly
  • identity.user.externalID.writeonly
  • identity.user.ids.read
  • user.provision.read
  • user.provision.write
  • spend.user.general.read
  • spend.user.general.writeonly
  • travel.user.general.read

Connect to SAP Concur using authorization code grant

Complete the following steps to connect to SAP Concur using authorization code grant:

1

Click Create > Connection.

2

Search for SAP Concur and select it as your app.

3

Enter a name for your connection in the Connection name field.

Connect to SAP Concur using authorization code grantConnect to SAP Concur

4

Use the first Location drop-down menu to select the project or folder to store your connection.

5

Use the Connection type drop-down menu to specify whether this is a cloud or on-prem connection.

6

Use the Implementation instance drop-down menu to specify whether you're connecting to a Concur implementation server. Select Yes if connecting to an implementation server. Defaults to No.

7

Use the Authentication type drop-down menu to select Authorization code grant.

8

Use the second Location drop-down menu to select the location of your Concur implementation server.

9

Optional. Expand Advanced settings and use the Scopes drop-down menu to select OAuth 2.0 scopes. Refer to Minimum and default scopes for requirements.

10

Use the Custom OAuth profile drop-down menu to select the custom OAuth profile configured with your SAP Concur client credentials.

11

Click Connect. You are redirected to SAP Concur to sign in and authorize access.

Required scopes by trigger and action

The credentials you use to set up the SAP Concur connection must have access to certain scopes depending on the triggers and actions you plan to use.

REQUIRED SCOPE

The EXPRPT scope is required for connection setup.

Each trigger and action in the connector uses a specific API version due to SAP Concur's granular versioning approach.

The following table lists:

  • The scopes required for each trigger and action
  • The API name and version associated with each trigger and action

Refer to the SAP Concur API Reference documentation for more information.

NameScopesAPI groupAPI name and version
New expense report triggerEXPRPTExpenseReports v3
New expense report submission triggerEXPRPTExpenseReports v3
New or updated expense report triggerEXPRPTExpenseReports v3
New or updated invoice triggerINVPMTInvoiceInvoice v3
New or updated user triggeridentity.user.ids.read,
identity.user.core.read,
identity.user.coresensitive.read,
identity.user.enterprise.read,
identity.user.sap.read
UserIdentity v4
Create list item actionspend.listitem.write,
LIST
CommonList Item v4
Create user actionuser.provision.write,
identity.user.coreenterprise.writeonly,
identity.user.externalID.writeonly,
spend.user.general.writeonly
UserUser Provisioning v4
Create users action (batch)user.provision.write,
identity.user.coreenterprise.writeonly,
identity.user.externalID.writeonly,
spend.user.general.writeonly
UserUser Provisioning v4
Create vendors action (batch)INVVENInvoiceVendor v3.1
Delete list item actionspend.listitem.deleteCommonList Item v4
Get all attendee types action (batch)CONFIGExpenseExpense Group Configurations v3
Get all expense group configurations action (batch)CONFIGExpenseExpense Group Configurations v3
Get all expense types action (batch)CONFIGExpenseExpense Group Configurations v3
Get all list item action (batch)spend.list.readCommonList Item v4
Get all lists actionspend.list.readCommonList v4
Get all payment types action (batch)CONFIGExpenseExpense Group Configurations v3
Get expense report details actionexpense.report.readExpenseReports v4
Get invoice details actionINVPMTInvoiceInvoice v3
Get itemizations of specific expense actionexpense.report.readExpenseExpenses v4
Get user actiontravel.user.general.read,
travel.user.private.read,
spend.user.general.read,

user.provision.read
UserTravel Extension v4,

User Provisioning v4
Get user provisioning status details actionuser.provision.readUserUser Provisioning v4
Retrieve children of list item actionspend.listitem.readCommonList Item v4
Search expense reports action (batch)EXPRPTExpenseReports v3
Search users action (batch)identity.user.ids.read,
identity.user.core.read,
identity.user.coresensitive.read,
identity.user.enterprise.read,
identity.user.sap.read
UserIdentity v4
Search vendors action (batch)INVVENInvoiceVendor v3.1
Submit an expense report through a workflow actionEXPRPTExpenseSubmit v1.1
Update user actionuser.provision.write,
identity.user.coreenterprise.writeonly,
identity.user.externalID.writeonly,
spend.user.general.writeonly
UserUser Provisioning v4
Update user action (batch)user.provision.write,
identity.user.coreenterprise.writeonly,
identity.user.externalID.writeonly,
spend.user.general.writeonly
UserUser Provisioning v4
Update vendors action (batch)INVVENInvoiceVendor v3.1
Upload receipt image actionIMAGEReceipt ImageImage v3
Get entry image URL actionIMAGEReceipt ImageImage v1.0
Get expense report details action (deprecated)expense.report.readExpenseExpenses v4
Get payment batch list action (deprecated)PAYBATExpensePayment Batches v1.1

Last updated: