Skip to main content

 

 

Coupa Success Portal

Sourcing API

Overview

Use the sourcing API to:

  1. Create RFP, RFI, or RFQ type events.
  2. Extract supplier responses to the event.
  3. Award events to suppliers at the line level.

For the Coupa back end, a sourcing event is known as a quote request.

Endpoints

The following endpoints are available for sourcing API.

Resource Path Description
Sourcing events

/api/quote_requests

Endpoint for creating new sourcing events and managing existing events
Supplier responses

/api/quote_responses

Endpoint for working with supplier responses
Sourcing suppliers

/api/quote_suppliers

Endpoint for getting info about suppliers on a sourcing event

Expense API objects 

This is the full list of sourcing objects available via the API. However, not all objects listed here have endpoints–some are only referenced by objects, and can't be updated directly. 

Example calls

Create a new sourcing event

POST /api/quote_requests/

To create a new event, you can send a basic POST. Include the <event-type> element or else Coupa will default to an RFI.

Payload

<?xml version="1.0" encoding="UTF-8" ?>
<quote-request>
  <event-type type="symbol">RFQ</event-type>
</quote-request>

201 Success response

Coupa returns the newly-created sourcing event, with a unique <id>

<?xml version="1.0" encoding="UTF-8"?>
<quote-request>
  <id type="integer">1434</id>
  <created-at type="dateTime">2018-04-11T10:37:25-07:00</created-at>
  <updated-at type="dateTime">2018-04-11T10:46:58-07:00</updated-at>
  <description nil="true" />
  <start-time type="dateTime">2018-04-11T17:00:00-07:00</start-time>
  <start-on-submit type="boolean">true</start-on-submit>
  <event-type type="symbol">rfi</event-type>
  <end-time type="dateTime">2018-04-25T17:00:00-07:00</end-time>
  <state>draft</state>
  <comments nil="true" />
  <allow-multiple-response type="boolean">true</allow-multiple-response>
  <sealed-bids type="boolean">true</sealed-bids>
  <allow-award-individual-line-items type="boolean">false</allow-award-individual-line-items>
  <automatic-bid-unsealing type="boolean">true</automatic-bid-unsealing>
  <timezone>US/Pacific</timezone>
  <currency>...</currency>
  <lots type="array" />
  <lines type="array" />
  <quote-suppliers type="array" />
  <attachments type="array" />
  <forms type="array" />
  <quote-request-attachments type="array" />
  <tags type="array" />
  <business-partners type="array" />
  </business-partners>
  <created-by>...</created-by>
  <updated-by>...</updated-by>
  <custom-fields />
</quote-request>

See all the supplier responses for a specific event

GET /api/quote_requests/{event_id}/quote_responses

200 OK response

<?xml version="1.0" encoding="UTF-8"?>
<quote-responses type="array">
  <quote-response>
    <id type="integer">1080</id>
    <created-at type="dateTime">2018-04-10T05:51:28-07:00</created-at>
    <updated-at type="dateTime">2018-04-10T05:51:34-07:00</updated-at>
    <quote-request-id type="integer">1429</quote-request-id>
    <submitted-at type="dateTime">2018-04-10T05:51:34-07:00</submitted-at>
    <state>submitted</state>
    <position type="integer">2</position>
    <comments nil="true" />
    <lines type="array">
      <line>
        <id type="integer">7447</id>
        <created-at type="dateTime">2018-04-10T05:51:28-07:00</created-at>
        <updated-at type="dateTime">2018-04-10T05:51:33-07:00</updated-at>
        <price-amount type="decimal">200.0</price-amount>
        <quantity type="decimal">1.0</quantity>
        <reporting-price-amount type="decimal">200.0</reporting-price-amount>
        <price-currency>...</price-currency>
        <quote-request-line-id type="integer">5834</quote-request-line-id>
        <lot-id type="integer">0</lot-id>
      </line>
    </lines>
    <quote-supplier>
      <id type="integer">1714</id>
      <created-at type="dateTime">2018-04-10T05:50:21-07:00</created-at>
      <updated-at type="dateTime">2018-04-10T05:51:34-07:00</updated-at>
      <name>bnew</name>
      <display-name>bnew</display-name>
      <email>irairaira666555@gmail.com</email>
      <contact-name />
      <supplier nil="true" />
      <created-by>...</created-by>
      <updated-by>...</updated-by>
    </quote-supplier>
  </quote-response>
</quote-responses>

Award an event to a supplier

POST /api/quote_responses/{response_id}/award

Once you've got the response <id>, you can use it to award the response.

Payload

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <quote_response_line_ids>
    <element>1</element>
    <element>2</element>
    <element>33</element>
  </quote_response_line_ids>
</root>

200 OK Response

Coupa returns a 200 OK with no body.

 

  • Was this article helpful?