Scheduling Agreement Collaboration API
Integrate your external systems to collaborate on scheduling agreements.
The Scheduling Agreement Collaboration API integrates your external ERP's scheduling agreements directly into Coupa.
Create, retrieve, update, and cancel scheduling agreements.
Issue scheduling agreements to suppliers.
Get and manage attachments for a scheduling agreement.
Confirm and mark delivery schedules as exported to synchronize their status with your external system.
The scheduling agreement process uses APIs for both inbound and outbound data flow:
Send a
POSTrequest to create a new, open Scheduling Agreement in Coupa, originating from your external ERP system.Buyers and suppliers collaborate on the delivery schedules using the Coupa UI and the Coupa Supplier Portal (CSP), exchanging confirmations, proposed changes, and comments.
Once the collaboration is complete and the buyer makes a final decision (for example, confirming a change or cancelling a line), use a
GETrequest to retrieve the final status and details of the scheduling agreement to synchronize the data back to your ERP.
This API is available only for customers that participate in the Early Access Program (EAP). If you want to be an EAP customer, contact your Coupa representative.
Actions
| Verb | Path | Description |
|---|---|---|
|
GET |
| Get all scheduling agreements |
|
POST |
|
Create a new scheduling agreement |
|
GET |
|
Get the details of a specific scheduling agreement by its ID |
|
PUT |
|
Update a scheduling agreement |
|
POST |
|
Issue a scheduling agreement |
|
POST |
|
Cancel a scheduling agreement. |
|
GET |
|
Get all delivery schedules. |
POST |
/api/delivery_schedules/set_confirmed
| Confirm the delivery schedules |
POST |
/api/delivery_schedules/set_exported
| Mark the delivery schedules as exported |
|
POST |
|
Reset the exported flag of the delivery schedules |
|
GET |
|
Get the list of attachments for a scheduling agreement |
|
POST |
|
Upload an attachment for a scheduling agreement. |
GET |
| Get a specific attachment of a scheduling agreement |
|
DELETE |
|
Delete an attachment from a scheduling agreement |
Scopes
This API requires the following scopes:
core.scheduling_agreement.readcore.scheduling_agreement.write
Elements
Scheduling Agreement elements
| Element | Description | Req'd | Unique | Allowable Value | In | Out | Data Type |
|---|---|---|---|---|---|---|---|
| id | Coupa's unique ID for the scheduling agreement. | No | Yes | No | Yes | Integer | |
| external-scheduling-agreement-number | The unique identifier for the agreement from the external system. | Yes | Yes | Yes | Yes | String | |
| type | The type of scheduling agreement. | Yes | WITHOUT_RELEASE | Yes | Yes | String | |
| status | The current status of the agreement. | No | Draft, Issued, Cancelled | No | Yes | String | |
| is-issued | Controls the initial status of the agreement. If true, the agreement is created in "Issued" state; otherwise, it is created as "Draft". | No | true, false | Yes | No | Boolean | |
| validity-start-date | The date when the agreement becomes valid. | Yes | Yes | Yes | Datetime | ||
| validity-end-date | The date when the agreement expires. | Yes | Yes | Yes | Datetime | ||
| supplier | The supplier associated with the agreement. | Yes | Yes | Yes | Object | ||
| shipping_address | The shipping address for the agreement. | No | Yes | Yes | Object | ||
| payment_term | The payment term for the agreement. | No | Yes | Yes | Object | ||
| incoterms | The Incoterms for the agreement. | No | Yes | Yes | String | ||
| incoterms-location | The Incoterms location for the agreement. | No | Yes | Yes | String | ||
| items | An array of line items included in the scheduling agreement. | Yes | Yes | Yes | Array | ||
| created-at | The timestamp when the agreement was created in Coupa. | No | No | Yes | Datetime | ||
| updated-at | The timestamp when the agreement was last updated in Coupa. | No | No | Yes | Datetime | ||
| created-by | The user who created the agreement in Coupa. | No | No | Yes | Object |
Create a Scheduling Agreement
- Method
POST
/api/scheduling_agreements- Example cURL request
curl --location 'https://<your-instance>.com/api/scheduling_agreements' \ --header 'Accept: application/json' \ --header 'Accept: application/xml' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer <your-api-key>' \ --data '{ "external-scheduling-agreement-number": "SA-SAMPLE-0010", "type": "WITHOUT_RELEASE", "is-issued": true, "validity-start-date": "2026-01-01T00:00:00Z", "validity-end-date": "2026-12-31T23:59:59Z", "supplier": { "id": 1 }, "shipping_address": { "id": 3 }, "payment_term": { "id": 1 }, "items": [ { "external-reference-id": "ITEM-EXT-001", "item": { "id": 1 }, "item-description": "Item A", "price": 25.50, "currency": { "id": 1 }, "quantity": 10, "uom": { "id": 1 }, "warehouse": { "id": 1 }, "firm-zone": 2, "trade-off-zone": 4, "need-by": "2026-06-15T00:00:00Z", "is-confirmation-required": true, "schedule_lines": [ { "external-reference-id": "SL-EXT-001-1", "delivery-date": "2026-02-01T00:00:00Z", "quantity": 10, "uom": { "id": 1 } } ] }, { "external-reference-id": "ITEM-EXT-002", "item": { "id": 2 }, "item-description": "Item B", "price": 15.00, "currency": { "id": 1 }, "quantity": 5, "uom": { "id": 1 }, "firm-zone": 1, "trade-off-zone": 2, "need-by": "2026-07-01T00:00:00Z", "is-confirmation-required": false, "schedule_lines": [ { "external-reference-id": "SL-EXT-002-1", "delivery-date": "2026-03-01T00:00:00Z", "quantity": 5, "uom": { "id": 1 } } ] }, { "external-reference-id": "ITEM-EXT-003", "item": { "id": 3 }, "item-description": "Item C", "price": 100.00, "currency": { "id": 1, "code": "USD" }, "quantity": 20, "uom": { "id": 1 }, "firm-zone": 3, "trade-off-zone": 6, "need-by": "2026-08-01T00:00:00Z", "is-confirmation-required": true, "schedule_lines": [ { "external-reference-id": "SL-EXT-003-1", "delivery-date": "2026-04-01T00:00:00Z", "quantity": 5, "uom": { "id": 1 } }, { "external-reference-id": "SL-EXT-003-2", "delivery-date": "2026-05-01T00:00:00Z", "quantity": 8, "uom": { "id": 1 } }, { "external-reference-id": "SL-EXT-003-3", "delivery-date": "2026-06-01T00:00:00Z", "quantity": 7, "uom": { "id": 1 } } ] } ] }'- Example response
{ "id": 502, "external-scheduling-agreement-number": "SA-SAMPLE-0010", "status": "Issued", "validity-start-date": "2026-01-01T00:00:00Z", "validity-end-date": "2026-12-31T23:59:59Z", "supplier": { "id": 1, "name": "Global Tech Supplies" }, "items": [ { "id": 702, "external-reference-id": "ITEM-EXT-001", "item-description": "Item A", "quantity": "10.0", "schedule_lines": [ { "id": 903, "external-reference-id": "SL-EXT-001-1", "status": "Pending Confirmation", "delivery-date": "2026-02-01T00:00:00Z", "quantity": "10.0" } ] }, { "id": 703, "external-reference-id": "ITEM-EXT-002", "item-description": "Item B", "quantity": "5.0", "schedule_lines": [ { "id": 904, "external-reference-id": "SL-EXT-002-1", "status": "Issued", "delivery-date": "2026-03-01T00:00:00Z", "quantity": "5.0" } ] }, { "id": 704, "external-reference-id": "ITEM-EXT-003", "item-description": "Item C", "quantity": "20.0", "schedule_lines": [ { "id": 905, "external-reference-id": "SL-EXT-003-1", "status": "Pending Confirmation", "delivery-date": "2026-04-01T00:00:00Z", "quantity": "5.0" }, { "id": 906, "external-reference-id": "SL-EXT-003-2", "status": "Pending Confirmation", "delivery-date": "2026-05-01T00:00:00Z", "quantity": "8.0" }, { "id": 907, "external-reference-id": "SL-EXT-003-3", "status": "Pending Confirmation", "delivery-date": "2026-06-01T00:00:00Z", "quantity": "7.0" } ] } ] }
Get a scheduling agreement
- Method
-
GET
/api/scheduling_agreements/{agreementId} - Example cURL request
-
curl --location 'https://<your-instance>.com/api/scheduling_agreements/{agreementId}/1234' \ --header 'Accept: application/json' \ --header 'Accept: application/xml' \ --header 'Authorization: ••••••' - Example response
-
{ "id": 1234, "external-scheduling-agreement-number": "SA-SAMPLE-0010", "type": "WITHOUT_RELEASE", "status": "Issued", "validity-start-date": "2026-08-16T00:00:00Z", "validity-end-date": "2027-09-15T23:59:59Z", "supplier": { "id": 5, "name": "Global Tech Supplies" }, "shipping_address": { "id": 2, "name": "Dhoom Industries - Jaipur" }, "payment-term": { "id": 1, "code": "Net 30" }, "items": [ { "id": 1432, "external-reference-id": "ITEM-A", "item-description": "A grade Leather", "quantity": 100.00, "is-confirmation-required": true, "delivery-schedules": [ { "id": 8539, "external-reference-id": "DS-A1", "delivery-date": "2026-09-16T00:00:00Z", "commitment-level": "Firm", "quantity": 10.00, "status": "Pending Confirmation" }, { "id": 8541, "external-reference-id": "DS-A3", "delivery-date": "2026-11-16T00:00:00Z", "commitment-level": "Trade Off", "quantity": 10.00, "status": "Pending Confirmation" } ] }, { "id": 1433, "external-reference-id": "ITEM-B", "item-description": "Rubber", "quantity": 200.00, "is-confirmation-required": false, "delivery-schedules": [ { "id": 8549, "external-reference-id": "DS-B1", "delivery-date": "2026-09-16T00:00:00Z", "commitment-level": "Firm", "quantity": 20.00, "status": "Issued" } ] } ] }