Skip to main content

Coupa

Coupa is a comprehensive business spend management platform that streamlines procurement, invoicing, and expense management processes, providing organizations with complete visibility and control over their spending while optimizing supplier relationships and reducing costs.

Coupa icon

Power end-to-end data operations for your Coupa API with Nexla. Our bi-directional Coupa connector is purpose-built for Coupa, making it simple to ingest data, sync it across systems, and deliver it anywhere — all with no coding required. Nexla turns API-sourced data into ready-to-use, reusable data products and makes it easy to send data to Coupa or any other destination. With comprehensive monitoring, lineage tracking, and access controls, Nexla keeps your Coupa workflows fast, secure, and fully governed.

Features

Type: API

SourceDestination

  • Seamless API Integration: Connect to any endpoint as source or destination without coding, with automatic data product creation
  • Visual Composition & Chaining: Build complex integrations using visual templates, chain API calls, and compose workflows with data validation and filtering
  • API Proxy: Expose curated slices of your data securely with a secure and customizable API proxy that validates and transforms data on the fly
  • Request optimization with intelligent batching, retry, and caching to minimize API calls and costs

Prerequisites

Before creating a Coupa credential, you need to obtain an API URL and API key from your Coupa account. The API URL and API key are required to authenticate with the Coupa API.

To obtain your API URL and API key, you need to have a Coupa account with API access enabled. Once you have access to your account, you can view and manage your API keys in the Coupa admin setup tab. The API URL should be of the format https://{instance_name}.coupahost.com where {instance_name} is your Coupa instance name. The API key is sent in the X-COUPA-API-KEY header for all API requests to the Coupa API. For detailed information about API key setup and authentication, refer to the Coupa API documentation.

Authenticate

Credentials required

FieldRequiredSecretDescription
API URLYesYesEnter your Coupa API URL. This would be of the format https://{instance_name}.coupahost.com
API KeyYesYesEnter your Coupa API Key. You can view and manage your API keys in the Coupa admin setup tab.

Create a credential in Nexla

  1. After selecting the data source/destination type, click the Add Credential tile to open the Add New Credential overlay.

New Credential Overlay – Coupa

CoupaCred.png
  1. Enter a name for the credential in the Credential Name field and a short, meaningful description in the Credential Description field.

  2. Enter your Coupa API URL in the API URL field. This should be of the format https://{instance_name}.coupahost.com where {instance_name} is your Coupa instance name. The API URL is used to construct the full endpoint URLs for API requests.

    The API URL should be of the format https://{instance_name}.coupahost.com where {instance_name} is your Coupa instance name. The API URL is used to construct the full endpoint URLs for API requests. For detailed information about determining your API URL, see the Coupa API documentation.

  3. Enter your Coupa API key in the API Key field. This is the API key you obtained from your Coupa admin setup tab. The API key is sent in the X-COUPA-API-KEY header for all API requests to the Coupa API.

    Keep your API key secure and do not share it publicly. The API key provides access to your Coupa account and should be treated as sensitive information. You can view and manage your API keys in the Coupa admin setup tab. The API key is sent in the X-COUPA-API-KEY header for all API requests to the Coupa API. For detailed information about obtaining and managing API keys, see the Coupa API documentation.

  4. Click the Save button at the bottom of the overlay. The newly added credential will now appear in a tile on the Authenticate screen during data source/destination creation.

Use as a data source

To create a new data flow, navigate to the Integrate section, and click the New Data Flow button. Select the Coupa connector tile, then select the credential that will be used to connect to the Coupa instance, and click Next; or, create a new Coupa credential for use in this flow.

Endpoint templates

Nexla provides pre-built templates that can be used to rapidly configure data sources to ingest data from common Coupa endpoints. Select the endpoint from which this source will fetch data from the Endpoint pulldown menu. Available endpoint templates are listed in the expandable boxes below.

Fetch all Records

This endpoint retrieves a list of all records of a type. Use this endpoint when you need to access all records of a specific type (users, invoices, purchase orders, etc.) from your Coupa account.

  • Select the type of Coupa API object you wish to fetch from the Object Type dropdown menu. Available options are:

    • Addresses: For fetching addresses
    • Approvals: For fetching approvals
    • Charges: For fetching charges
    • Contracts: For fetching contracts
    • Expense Reports: For fetching expense reports
    • Invoices: For fetching invoices
    • Items: For fetching items
    • Payments: For fetching payments (coupa_pay/payments)
    • Purchase Orders: For fetching purchase orders
    • Purchase Order Changes: For fetching purchase order changes
    • Requisitions: For fetching requisitions
    • Suppliers: For fetching suppliers
    • Supplier Items: For fetching supplier items
    • Users: For fetching users (default)

    The default value is users if not specified.

  • The endpoint uses GET requests to {api_url}/api/{object_name}?offset={offset} where {object_name} is the object type you select and {offset} is the pagination offset. The endpoint URL is automatically constructed based on the Coupa API base URL, the object type, and the pagination offset.
  • The endpoint uses offset-based pagination, automatically fetching additional pages as needed. Pagination starts from offset 0 and increments by the page size for each subsequent page. Nexla will continue fetching pages until all records are retrieved.
  • The endpoint will return all records of the specified type. The response data is extracted from the root-level array in the API response ($[*]), with each record processed individually.

Object types should match the Coupa API specification. The endpoint uses offset-based pagination (iteration.type: paging.incrementing.offset) starting from offset 0. The response data path is $[*], which extracts all items from the root-level array in the API response. For detailed information about listing records, see the Coupa API documentation.

Fetch One Record

This endpoint fetches a specific record of the selected type. Use this endpoint when you need to access a specific record (user, invoice, purchase order, etc.) from your Coupa account using its unique identifier.

  • Select the type of Coupa API object you wish to fetch from the Object Type dropdown menu. Available options are:

    • Addresses: For fetching addresses
    • Approvals: For fetching approvals
    • Charges: For fetching charges
    • Contracts: For fetching contracts
    • Expense Reports: For fetching expense reports
    • Invoices: For fetching invoices
    • Items: For fetching items
    • Payments: For fetching payments (coupa_pay/payments)
    • Purchase Orders: For fetching purchase orders
    • Purchase Order Changes: For fetching purchase order changes
    • Requisitions: For fetching requisitions
    • Suppliers: For fetching suppliers
    • Supplier Items: For fetching supplier items
    • Users: For fetching users (default)

    The default value is users if not specified.

  • Enter the ID of the object you wish to fetch in the Record ID field. This is the unique identifier of the specific record you want to retrieve.

  • The endpoint uses GET requests to {api_url}/api/{object_name}/{record_id} where {object_name} is the object type you select and {record_id} is the record ID you provide. The endpoint URL is automatically constructed based on the Coupa API base URL, the object type, and the record ID.
  • The endpoint does not use pagination and returns the complete record in a single request.
  • The endpoint will return the specific record matching the provided ID. The response data is extracted from the root-level object in the API response ($), and Nexla will process the entire response structure.

Record IDs can be obtained from other Coupa API endpoints, such as the "Fetch all Records" endpoint, which returns all records with their corresponding IDs. The endpoint uses a static URL (iteration.type: static.url) and does not require pagination. The response data path is $, which extracts the entire root-level object from the API response. For detailed information about fetching a record by ID, see the Coupa API documentation.

Once the selected endpoint template has been configured, click the Test button to the right of the endpoint selection menu to retrieve a sample of the data that will be fetched. Sample data will be displayed in the Endpoint Test Result panel on the right, allowing you to verify that the source is configured correctly before saving.

Manual configuration

Coupa data sources can also be manually configured to ingest data from any valid Coupa API endpoint, including endpoints not covered by the pre-built templates, chained API calls, or custom request parameters. Select the Advanced tab at the top of the configuration screen, and follow the instructions in Connect to Any API to configure the API method, endpoint URL, date/time and lookup macros, path to data, metadata, and request headers.

Coupa API endpoints typically follow the pattern {api_url}/api/{endpoint_path}, and require API key authentication via the X-COUPA-API-KEY header, which is handled automatically by your credential configuration. For the Path to Data field, use $[*] to extract all items from a root-level array (e.g., a list endpoint), or $ to extract the entire root-level object (e.g., a single-record endpoint). For detailed information about available Coupa API endpoints, see the Coupa API documentation.

Once all of the relevant settings have been configured, click the Create button in the upper right corner of the screen to save and create the new Coupa data source. Nexla will now begin ingesting data from the configured endpoint and will organize any data that it finds into one or more Nexsets.

Use as a destination

Click the + icon on the Nexset that will be sent to the Coupa destination, and select the Send to Destination option from the menu. Select the Coupa connector from the list of available destination connectors, then select the credential that will be used to connect to the Coupa organization, and click Next; or, create a new Coupa credential for use in this flow.

Endpoint templates

Nexla provides pre-built templates that can be used to rapidly configure destinations to send data to common Coupa endpoints. Select the endpoint to which data will be sent from the Endpoint pulldown menu. Then, click on the template in the list below to expand it, and follow the instructions to configure additional endpoint settings.

Create Records

This endpoint creates records of the selected type. Use this endpoint when you need to create new records (users, invoices, purchase orders, etc.) in your Coupa account from your data sources.

  • Select the type of Coupa API object you wish to add entries for from the Object Type dropdown menu. Available options are:

    • Addresses: For creating addresses
    • Approvals: For creating approvals
    • Charges: For creating charges
    • Contracts: For creating contracts
    • Expense Reports: For creating expense reports
    • Invoices: For creating invoices
    • Items: For creating items
    • Purchase Orders: For creating purchase orders
    • Purchase Order Changes: For creating purchase order changes
    • Requisitions: For creating requisitions
    • Suppliers: For creating suppliers
    • Supplier Items: For creating supplier items
    • Users: For creating users (default)

    The default value is users if not specified.

  • The endpoint uses POST requests to {api_url}/api/{object_name} where {object_name} is the object type you select. The endpoint URL is automatically constructed based on the Coupa API base URL and the object type.
  • The endpoint sends data from your Nexset as the request body in JSON format. Each record in your Nexset will be sent as a JSON object containing the record data to create. The request body should follow the Coupa API specification for creating records, including required fields and field names.
  • Batch mode is disabled by default for this endpoint. Each record in your Nexset will be sent as a separate API request to create a record. If you need to create multiple records, you can send multiple records, but each will be processed as a separate request.

Object types should match the Coupa API specification. The request body must be properly formatted JSON that matches the Coupa API specification for creating records. Check the documentation URL for more details on the record schema, including required fields, field names, and request formats. The endpoint requires API key authentication via the X-COUPA-API-KEY header, which is handled automatically by your credential configuration. The Content-Type: application/json header is automatically included in requests. Batch mode is disabled by default (batch.mode: false), so each record will be sent as a separate request. For detailed information about creating records, see the Coupa API documentation.

Manual configuration

Coupa destinations can also be manually configured to send data to any valid Coupa API endpoint. Select the Advanced tab at the top of the configuration screen, and follow the instructions in Connect to Any API to configure the API method, data format, endpoint URL, request headers, attribute exclusions, record batching, and response webhooks.

Coupa API endpoints typically follow the pattern {api_url}/api/{endpoint_path} and expect JSON format for request bodies. The API requires API key authentication via the X-COUPA-API-KEY header, which is handled automatically by your credential configuration.

Save & activate

Once all endpoint settings have been configured, click the Done button in the upper right corner of the screen to save and create the destination. To send the data to the configured Coupa endpoint, open the destination resource menu, and select Activate.

The Nexset data will not be sent to the Coupa endpoint until the destination is activated. Destinations can be activated immediately or at a later time, providing full control over data movement.