Coupa website screenshot

Coupa

Coupa is a leading Business Spend Management (BSM) platform that provides cloud-based solutions for procurement, invoicing, expenses, payments, sourcing, contracts, and supply chain design & planning.

13 APIs 0 Features
BSMBusiness Spend ManagementCloud PlatformEnterpriseFinancial ManagementInvoicingProcurementSupply Chain

APIs

Coupa Core API

The primary RESTful API for accessing and managing core Coupa resources including suppliers, purchase orders, invoices, and requisitions.

Coupa Integration API

API designed for enterprise integrations with ERP systems and other third-party applications.

Coupa Supplier API

API for supplier-specific operations including supplier information management, catalogs, and supplier collaboration.

Coupa Analytics API

API for accessing Coupa's analytics and reporting data for business intelligence and custom reporting needs.

Coupa CCW API

The Coupa Contingent Workforce (CCW) REST API enables customers and partners to build applications and integrate with CCW for managing contingent workforce operations including ...

Coupa CSO API

The Coupa Sourcing Optimization (CSO) API is a RESTful web service for importing and exporting fact sheet data, enabling integration between CSO and third-party systems for sour...

Coupa Treasury API

REST API for retrieving and updating Coupa Treasury Management data such as cash flows and account balances. Treasury APIs follow the Coupa Core API structure but support JSON o...

Coupa Open Buy API

The Open Buy API provides a faster, standard, and secure interface for searching and purchasing items in real-time. It follows common eCommerce API patterns and supports authent...

Coupa Payments API

API for managing Coupa Pay invoice payments and expense payments, including retrieval, export tracking, and payment status management. Accessed through the Coupa Pay payments en...

Coupa Procurement API

The Coupa Procurement API provides RESTful endpoints for managing the full procure-to-order lifecycle including requisitions, purchase orders, contracts, and sourcing (quote req...

Coupa Invoicing API

The Coupa Invoicing API provides RESTful endpoints for creating, updating, and querying invoices associated with purchase orders. It supports the full invoice lifecycle includin...

Coupa Expenses API

The Coupa Expenses API provides RESTful endpoints for managing expense reports, expense lines, expense categories, and related data. It supports creation, querying, and updating...

Coupa Inventory and Receipts API

The Coupa Inventory and Receipts API provides RESTful endpoints for managing receiving transactions, inventory adjustments, inventory consumptions, pick lists, fulfillment reser...

Collections

GraphQL

Coupa GraphQL API

Coupa is a business spend management platform covering procurement, invoicing, expense management, pay, and supply chain design. The API covers purchase orders, invoices, suppli...

GRAPHQL

Pricing Plans

Coupa Plans Pricing

1 plans

PLANS

Rate Limits

Coupa Rate Limits

1 limits

RATE LIMITS

FinOps

Coupa Finops

FINOPS

Semantic Vocabularies

Coupa Context

0 classes · 13 properties

JSON-LD

API Governance Rules

Coupa API Rules

13 rules · 6 errors 6 warnings 1 info

SPECTRAL

JSON Structure

Coupa Structure

0 properties

JSON STRUCTURE

Resources

👥
GitHubOrganization
GitHubOrganization
🌐
DeveloperPortal
DeveloperPortal
🔑
Authentication
Authentication
🔑
OAuth2TransitionGuide
OAuth2TransitionGuide
🔗
OpenIDConnect
OpenIDConnect
🚀
GettingStarted
GettingStarted
🔗
RateLimits
RateLimits
💻
ErrorCodes
ErrorCodes
🔗
APIResources
APIResources
🔗
TransactionalResources
TransactionalResources
🔗
ReferenceDataResources
ReferenceDataResources
🔗
IPAddresses
IPAddresses
📄
ReleaseNotes
ReleaseNotes
🔗
IntegrationKnowledgeBase
IntegrationKnowledgeBase
🟢
StatusPage
StatusPage
🔗
Trust
Trust
📜
TermsOfService
TermsOfService
📜
PrivacyPolicy
PrivacyPolicy
💬
Support
Support
🔗
Community
Community
📰
Blog
Blog
🔗
LinkedIn
LinkedIn
🔗
Twitter
Twitter
🔑
OAuth2AndOIDC
OAuth2AndOIDC
🚀
OAuth2GettingStarted
OAuth2GettingStarted
🔗
SharedResources
SharedResources
🔗
APIReturnFormats
APIReturnFormats
🔗
XMLvsJSON
XMLvsJSON
🔗
SampleRequestsResponses
SampleRequestsResponses
🔗
SpecialActions
SpecialActions
🔗
FlatFileCSV
FlatFileCSV
🔗
FlatFileImport
FlatFileImport
🔗
FlatFileExport
FlatFileExport
🔗
IntegrationPlaybooks
IntegrationPlaybooks
🔗
RESTAPIIntegration
RESTAPIIntegration

Sources

Raw ↑
opencollection: 1.0.0
info:
  name: Coupa Core API
  version: 1.0.0
request:
  auth:
    type: oauth2
    flow: client_credentials
    accessTokenUrl: https://{instance}.coupahost.com/oauth2/token
    credentials:
      clientId: '{{clientId}}'
      clientSecret: '{{clientSecret}}'
items:
- info:
    name: Purchase Orders
    type: folder
  items:
  - info:
      name: Coupa List purchase orders
      type: http
    http:
      method: GET
      url: https://{instance}.coupahost.com/api/purchase_orders
      params:
      - name: offset
        value: ''
        type: query
        description: Number of records to skip for pagination
      - name: limit
        value: ''
        type: query
        description: Maximum number of records to return (max 50)
      - name: return_object
        value: ''
        type: query
        description: Set to limited to return only key fields, or shallow to exclude nested objects
      - name: dir
        value: ''
        type: query
        description: Sort direction (asc or desc)
      - name: status
        value: ''
        type: query
        description: Filter by order status. Includes buyer_hold, cancelled, closed, currency_hold, draft, error, expensed,
          issued, supplier_hold, supplier_window_hold, and exported.
      - name: po-number
        value: ''
        type: query
        description: Filter by purchase order number
      - name: supplier[name]
        value: ''
        type: query
        description: Filter by supplier name
      - name: updated-at[gt]
        value: ''
        type: query
        description: Filter for records updated after this datetime
      - name: created-at[gt]
        value: ''
        type: query
        description: Filter for records created after this datetime
      - name: exported
        value: ''
        type: query
        description: Filter by export status
    docs: Retrieve a list of purchase orders. Use query parameters to filter results. Coupa recommends always limiting result
      sets with GET criteria for optimal performance.
  - info:
      name: Coupa Create a purchase order
      type: http
    http:
      method: POST
      url: https://{instance}.coupahost.com/api/purchase_orders
      body:
        type: json
        data: '{}'
    docs: Create a new external purchase order. The type must be set to ExternalOrderHeader. A supplier and at least one order
      line are required.
  - info:
      name: Coupa Get a purchase order
      type: http
    http:
      method: GET
      url: https://{instance}.coupahost.com/api/purchase_orders/:id
      params:
      - name: id
        value: ''
        type: path
        description: Coupa internal unique identifier
      - name: return_object
        value: ''
        type: query
        description: Set to limited to return only key fields, or shallow to exclude nested objects
    docs: Retrieve a single purchase order by its Coupa internal ID.
  - info:
      name: Coupa Update a purchase order
      type: http
    http:
      method: PUT
      url: https://{instance}.coupahost.com/api/purchase_orders/:id
      params:
      - name: id
        value: ''
        type: path
        description: Coupa internal unique identifier
      body:
        type: json
        data: '{}'
    docs: Update an existing purchase order by its Coupa internal ID.
  - info:
      name: Coupa Cancel a purchase order
      type: http
    http:
      method: PUT
      url: https://{instance}.coupahost.com/api/purchase_orders/:id/cancel
      params:
      - name: id
        value: ''
        type: path
        description: Coupa internal unique identifier
    docs: Cancel an existing purchase order.
  - info:
      name: Coupa Close a purchase order
      type: http
    http:
      method: PUT
      url: https://{instance}.coupahost.com/api/purchase_orders/:id/close
      params:
      - name: id
        value: ''
        type: path
        description: Coupa internal unique identifier
    docs: Close an existing purchase order.
  - info:
      name: Coupa Issue a purchase order
      type: http
    http:
      method: PUT
      url: https://{instance}.coupahost.com/api/purchase_orders/:id/issue
      params:
      - name: id
        value: ''
        type: path
        description: Coupa internal unique identifier
    docs: Issue and send the purchase order to the supplier.
  - info:
      name: Coupa Reopen a purchase order
      type: http
    http:
      method: PUT
      url: https://{instance}.coupahost.com/api/purchase_orders/:id/reopen
      params:
      - name: id
        value: ''
        type: path
        description: Coupa internal unique identifier
    docs: Reopen a soft-closed purchase order.
- info:
    name: Invoices
    type: folder
  items:
  - info:
      name: Coupa List invoices
      type: http
    http:
      method: GET
      url: https://{instance}.coupahost.com/api/invoices
      params:
      - name: offset
        value: ''
        type: query
        description: Number of records to skip for pagination
      - name: limit
        value: ''
        type: query
        description: Maximum number of records to return (max 50)
      - name: return_object
        value: ''
        type: query
        description: Set to limited to return only key fields, or shallow to exclude nested objects
      - name: dir
        value: ''
        type: query
        description: Sort direction (asc or desc)
      - name: status
        value: ''
        type: query
        description: Filter by invoice status. Full list includes new, draft, pending_approval, approved, pending_receipt,
          processing, payable_adjustment, on_hold, ap_hold, booking_hold, pending_action, rejected, disputed, abandoned, voided,
          invalid.
      - name: invoice-number
        value: ''
        type: query
        description: Filter by invoice number
      - name: supplier[name]
        value: ''
        type: query
        description: Filter by supplier name
      - name: updated-at[gt]
        value: ''
        type: query
        description: Filter for records updated after this datetime
      - name: exported
        value: ''
        type: query
        description: Filter by export status
    docs: Retrieve a list of invoices. Use query parameters to filter results. Supports filtering by status, supplier, date
      ranges, and export status.
  - info:
      name: Coupa Create an invoice
      type: http
    http:
      method: POST
      url: https://{instance}.coupahost.com/api/invoices
      body:
        type: json
        data: '{}'
    docs: Create a new invoice. Requires an invoice number, invoice date, supplier, currency, and at least one invoice line.
  - info:
      name: Coupa Get an invoice
      type: http
    http:
      method: GET
      url: https://{instance}.coupahost.com/api/invoices/:id
      params:
      - name: id
        value: ''
        type: path
        description: Coupa internal unique identifier
      - name: return_object
        value: ''
        type: query
        description: Set to limited to return only key fields, or shallow to exclude nested objects
    docs: Retrieve a single invoice by its Coupa internal ID.
  - info:
      name: Coupa Update an invoice
      type: http
    http:
      method: PUT
      url: https://{instance}.coupahost.com/api/invoices/:id
      params:
      - name: id
        value: ''
        type: path
        description: Coupa internal unique identifier
      body:
        type: json
        data: '{}'
    docs: Update an existing invoice by its Coupa internal ID.
  - info:
      name: Coupa Submit a draft invoice for approval
      type: http
    http:
      method: PUT
      url: https://{instance}.coupahost.com/api/invoices/:id/submit
      params:
      - name: id
        value: ''
        type: path
        description: Coupa internal unique identifier
    docs: Submit a draft invoice for approval. The invoice must be in draft status. Once submitted, the invoice enters the
      approval workflow.
  - info:
      name: Coupa Abandon an invoice
      type: http
    http:
      method: PUT
      url: https://{instance}.coupahost.com/api/invoices/:id/abandon
      params:
      - name: id
        value: ''
        type: path
        description: Coupa internal unique identifier
    docs: Abandon an invoice, removing it from active processing.
  - info:
      name: Coupa Void an approved or pending invoice
      type: http
    http:
      method: PUT
      url: https://{instance}.coupahost.com/api/invoices/:id/void
      params:
      - name: id
        value: ''
        type: path
        description: Coupa internal unique identifier
    docs: Void an invoice that is in approved or pending status. Voided invoices cannot be reactivated.
  - info:
      name: Coupa Dispute an invoice
      type: http
    http:
      method: PUT
      url: https://{instance}.coupahost.com/api/invoices/:id/dispute
      params:
      - name: id
        value: ''
        type: path
        description: Coupa internal unique identifier
      body:
        type: json
        data: '{}'
    docs: Dispute an invoice. The supplier will be notified and the invoice status changes to disputed.
- info:
    name: Requisitions
    type: folder
  items:
  - info:
      name: Coupa List requisitions
      type: http
    http:
      method: GET
      url: https://{instance}.coupahost.com/api/requisitions
      params:
      - name: offset
        value: ''
        type: query
        description: Number of records to skip for pagination
      - name: limit
        value: ''
        type: query
        description: Maximum number of records to return (max 50)
      - name: return_object
        value: ''
        type: query
        description: Set to limited to return only key fields, or shallow to exclude nested objects
      - name: dir
        value: ''
        type: query
        description: Sort direction (asc or desc)
      - name: status
        value: ''
        type: query
        description: Filter by requisition status (draft, cart, pending_buyer_action, pending_approval, approved, ordered,
          partially_received, received, abandoned, withdrawn)
      - name: requester[login]
        value: ''
        type: query
        description: Filter by requester login
      - name: updated-at[gt]
        value: ''
        type: query
        description: Filter for records updated after this datetime
      - name: exported
        value: ''
        type: query
        description: Filter by export status
    docs: Retrieve a list of requisitions. Use query parameters to filter results. Supports filtering by status, requester,
      date ranges, and export status.
  - info:
      name: Coupa Create a requisition
      type: http
    http:
      method: POST
      url: https://{instance}.coupahost.com/api/requisitions
      body:
        type: json
        data: '{}'
    docs: Create a new requisition. Requires at least one requisition line. Line numbers must increment by one; duplicate
      line numbers are ignored. Currencies and users must have active status.
  - info:
      name: Coupa Get a requisition
      type: http
    http:
      method: GET
      url: https://{instance}.coupahost.com/api/requisitions/:id
      params:
      - name: id
        value: ''
        type: path
        description: Coupa internal unique identifier
      - name: return_object
        value: ''
        type: query
        description: Set to limited to return only key fields, or shallow to exclude nested objects
    docs: Retrieve a single requisition by its Coupa internal ID.
  - info:
      name: Coupa Update a requisition
      type: http
    http:
      method: PUT
      url: https://{instance}.coupahost.com/api/requisitions/:id
      params:
      - name: id
        value: ''
        type: path
        description: Coupa internal unique identifier
      body:
        type: json
        data: '{}'
    docs: Update an existing requisition by its Coupa internal ID.
  - info:
      name: Coupa Delete a requisition
      type: http
    http:
      method: DELETE
      url: https://{instance}.coupahost.com/api/requisitions/:id
      params:
      - name: id
        value: ''
        type: path
        description: Coupa internal unique identifier
    docs: Delete an existing requisition by its Coupa internal ID. Only requisitions in draft status can be deleted.
  - info:
      name: Coupa Submit a requisition for approval
      type: http
    http:
      method: POST
      url: https://{instance}.coupahost.com/api/requisitions/submit_for_approval
      body:
        type: json
        data: '{}'
    docs: Submit a requisition for approval. The requisition must have at least one line item and valid accounting allocations.
  - info:
      name: Coupa Update and submit a requisition for approval
      type: http
    http:
      method: PUT
      url: https://{instance}.coupahost.com/api/requisitions/:id/update_and_submit_for_approval
      params:
      - name: id
        value: ''
        type: path
        description: Coupa internal unique identifier
      body:
        type: json
        data: '{}'
    docs: Update a requisition and submit it for approval in a single operation.
- info:
    name: Suppliers
    type: folder
  items:
  - info:
      name: Coupa List suppliers
      type: http
    http:
      method: GET
      url: https://{instance}.coupahost.com/api/suppliers
      params:
      - name: offset
        value: ''
        type: query
        description: Number of records to skip for pagination
      - name: limit
        value: ''
        type: query
        description: Maximum number of records to return (max 50)
      - name: return_object
        value: ''
        type: query
        description: Set to limited to return only key fields, or shallow to exclude nested objects
      - name: dir
        value: ''
        type: query
        description: Sort direction (asc or desc)
      - name: name
        value: ''
        type: query
        description: Filter by supplier name
      - name: number
        value: ''
        type: query
        description: Filter by supplier number
      - name: status
        value: ''
        type: query
        description: Filter by supplier status (active, inactive, draft)
      - name: updated-at[gt]
        value: ''
        type: query
        description: Filter for records updated after this datetime
    docs: Retrieve a list of suppliers. Use query parameters to filter results. Supports filtering by name, number, status,
      and date ranges.
  - info:
      name: Coupa Create a supplier
      type: http
    http:
      method: POST
      url: https://{instance}.coupahost.com/api/suppliers
      body:
        type: json
        data: '{}'
    docs: Create a new supplier record. The supplier name is required. Default status is draft if not specified. Default payment
      method is invoice.
  - info:
      name: Coupa Get a supplier
      type: http
    http:
      method: GET
      url: https://{instance}.coupahost.com/api/suppliers/:id
      params:
      - name: id
        value: ''
        type: path
        description: Coupa internal unique identifier
      - name: return_object
        value: ''
        type: query
        description: Set to limited to return only key fields, or shallow to exclude nested objects
    docs: Retrieve a single supplier by its Coupa internal ID.
  - info:
      name: Coupa Update a supplier
      type: http
    http:
      method: PUT
      url: https://{instance}.coupahost.com/api/suppliers/:id
      params:
      - name: id
        value: ''
        type: path
        description: Coupa internal unique identifier
      body:
        type: json
        data: '{}'
    docs: Update an existing supplier by its Coupa internal ID. Cannot reassign address or contact IDs when updating primary
      address or contact.
bundled: true