Skip to main content

Integration setup

The following article guides you through the Coupa integration setup. It consists of two mandatory parts: Coupa configuration and Rossum hook configuration.

Configuring Coupa

The main prerequisite is to have a valid Coupa user with needed permissions (see OAuth 2.0 scopes). If you don't have a user with needed permission, ask your admin to create it.

tip

You can always (also) check the official documentation OAuth 2.0 Getting Started with Coupa API

  1. Login to the Coupa web admin at URL https://[example-company].coupacloud.com
  2. Go to the Setup, search for keyword oauth and click the one result OAuth2/OpenID Connect Clients

Coupa: OAuth

  1. Create a new Client and make sure that you have selected a Grant type with Client Credentials option and save it.

Coupa: create client

  1. Find the user prepared for the integration and note the values Identifier and Secrets. You will need it for every hook setup later

Coupa: credentials and permissions

  1. For start, these scopes should work for basic integration core.accounting.read, core.common.read, core.invoice.create, core.invoice.read, core.invoice.write, core.purchase_order.read, core.supplier.read - you can copy and paste it exactly like this when using the Postman collection provided by Coupa

Configuring Rossum

Coupa service (integration) is provided by Rossum.ai in the form of webhook. To start using Coupa (either imports or exports), follow these steps:

Webhook in UI

  1. Login to your Rossum account.
  2. Navigate to Extensions → My extensions.
  3. Click on Create extension.
  4. Set the following fields:
    1. Name: Coupa: Import/Export [what]
    2. Trigger events: Manual (later also Scheduled)
    3. Extension type: Webhook
    4. URL (see Import configuration and Export configuration)
    5. Token owner of the extension (typically a system user)
  5. Click Create the webhook.
  6. Fill Configuration (see Import configuration examples or Export configuration examples)
  7. Fill Secrets fields.

Setting hook secrets schema (optional):

Optional step is it cannot be done via UI (but can be done either via API or via prd deployment tool)

{
"type": "object",
"properties": {
"client_secret": {
"type": "string",
"minLength": 1,
"description": "API OAuth Client secret"
}
},
"additionalProperties": false
}

As a result of this change, it is easier to update the hook secrets (and to know what is in the secrets). You will see the following value in the hook secrets that can be easily modified:

{
"client_secret": "__change_me__"
}

Initial test

You can invoke the webhook manually using curl (for example):

curl --location --request POST 'https://[company-example].rossum.app/api/v1/hooks/[hook-id]/invoke' \
--header 'Authorization: token [token]' \
--data ''

Then go to the Rossum Extension Logs and observe the content

Available configuration options

Work in progress

We're still working on this part and would love to hear your thoughts! Feel free to share your feedback or submit a pull request. Thank you! 🙏