> ## Documentation Index
> Fetch the complete documentation index at: https://docs.parable.work/llms.txt
> Use this file to discover all available pages before exploring further.

# SAP Concur

> Connect Parable to SAP Concur using OAuth 2.0

export const platform_1 = "SAP Concur"

export const limit_0 = "rate limits vary by API; typically 100-500 requests/minute"

export const platform_0 = "SAP Concur"

export const role_0 = undefined

<Tabs>
  <Tab title="Setup">
    <Card title="What You'll Need" icon="key">
      | Credential        | What it is               |
      | ----------------- | ------------------------ |
      | **Client ID**     | OAuth application ID     |
      | **Client Secret** | OAuth application secret |
      | **Refresh Token** | Long-lived access token  |
      | **Geolocation**   | Data center (us, eu, cn) |
    </Card>

    ## Overview

    Connect Parable to SAP Concur for expense management, travel, and invoice data.

    <CardGroup cols={2}>
      <Card title="Expenses" icon="receipt">
        Expense reports, line items, receipts
      </Card>

      <Card title="Travel & Invoices" icon="plane">
        Travel requests, bookings, invoices
      </Card>
    </CardGroup>

    ## Prerequisites

    <Info>
      **Setup access in {platform_0}.** These steps require **{role_0}**, or a colleague with equivalent permissions who can create credentials for you.

      If that is not you, ask your {platform_0} administrator.
    </Info>

    * **Company Admin** access in SAP Concur
    * Partner app credentials (contact SAP or Parable for setup)
    * Understanding of your Concur data center location

    ## Setup Guide

    <Steps>
      <Step title="Obtain Partner Application Credentials">
        Contact SAP Concur or Parable to obtain:

        * **Client ID**
        * **Client Secret**
        * **OAuth Scopes** approved for the application

        <Info>
          SAP Concur requires partner certification for production API access.
        </Info>
      </Step>

      <Step title="Get Company Request Token">
        1. Log in to SAP Concur as Company Admin
        2. Go to **Administration** → **Company** → **Authentication Admin**
        3. Click **Company Request Tokens**
        4. Click **Create New Request Token**
        5. Select the app → **Create**
        6. Copy the **Request Token** (valid for 24 hours)
      </Step>

      <Step title="Exchange for Refresh Token">
        Use the Company Request Token to get a refresh token:

        ```bash theme={null}
        curl -X POST "https://us.api.concursolutions.com/oauth2/v0/token" \
          -H "Content-Type: application/x-www-form-urlencoded" \
          -d "grant_type=password" \
          -d "client_id=YOUR_CLIENT_ID" \
          -d "client_secret=YOUR_CLIENT_SECRET" \
          -d "username=YOUR_COMPANY_UUID" \
          -d "password=YOUR_REQUEST_TOKEN" \
          -d "credtype=authtoken"
        ```

        <Warning>
          The request token is single-use. If the exchange fails, generate a new one.
        </Warning>
      </Step>

      <Step title="Store the Refresh Token">
        The response includes:

        * `access_token` — Short-lived (1 hour)
        * `refresh_token` — Long-lived (6 months)

        Store the refresh token securely for ongoing access.
      </Step>

      <Step title="Determine Geolocation">
        | Region | Base URL                             |
        | ------ | ------------------------------------ |
        | US     | `https://us.api.concursolutions.com` |
        | EU     | `https://eu.api.concursolutions.com` |
        | China  | `https://cn.api.concurcdc.cn`        |

        Check your Concur login URL to determine your region.
      </Step>

      <Step title="Enter values in the form">
        1. Enter **Client ID**, **Client Secret**, **Company UUID**, refresh token, and geolocation base URL fields as shown in the form.
        2. Click **Save & test connection**.
      </Step>
    </Steps>
  </Tab>

  <Tab title="Reference">
    ## Verify Your Setup

    <CodeGroup>
      ```bash Refresh Access Token theme={null}
      curl -X POST "https://us.api.concursolutions.com/oauth2/v0/token" \
        -H "Content-Type: application/x-www-form-urlencoded" \
        -d "grant_type=refresh_token" \
        -d "client_id=YOUR_CLIENT_ID" \
        -d "client_secret=YOUR_CLIENT_SECRET" \
        -d "refresh_token=YOUR_REFRESH_TOKEN"
      ```

      ```bash Test API Access theme={null}
      curl -H "Authorization: Bearer ACCESS_TOKEN" \
        "https://us.api.concursolutions.com/api/v3.0/common/users?limit=5"
      ```
    </CodeGroup>

    <Check>
      **Success!** If you received a `200 OK` response with valid data, your credentials are configured correctly. You can now proceed to configure this connector in Parable.
    </Check>

    <Tip>
      **Rate Limits:** {platform_1} enforces rate limits of **{limit_0}**.

      Parable handles rate limiting automatically with exponential backoff, but initial syncs of large datasets may take longer due to these limits.
    </Tip>

    ## Troubleshooting

    | Error            | Meaning               | Solution                     |
    | ---------------- | --------------------- | ---------------------------- |
    | `invalid_client` | Wrong credentials     | Verify Client ID/Secret      |
    | `invalid_grant`  | Bad token             | Generate new request token   |
    | `expired_token`  | Refresh token expired | Re-run company authorization |
    | `403 Forbidden`  | Missing scope         | Check approved API scopes    |

    <Accordion title="Common Issues">
      ### Request token already used

      Company request tokens are single-use. Generate a new one in the Concur Admin portal.

      ### Wrong data center

      API calls must go to your company's data center. Check your Concur login URL (us.concursolutions.com, eu.concursolutions.com, etc.).
    </Accordion>

    ## Additional Resources

    <CardGroup cols={2}>
      <Card title="Concur API Documentation" icon="book" href="https://developer.concur.com/api-reference/">
        Official API reference
      </Card>

      <Card title="OAuth Guide" icon="key" href="https://developer.concur.com/api-reference/authentication/apidoc.html">
        Authentication documentation
      </Card>
    </CardGroup>
  </Tab>
</Tabs>
