GET Invoice

Retrieve a single invoice by its Coupa global unique identifier (UUID).

Endpoint

Endpoint

/api/v1/invoices/:id

Method

GET

Scope

csp.invoices.read

Headers

Header Argument

Authorization

Bearer token

Content-Type

application/json

Parameters

Table 1. Path parameters
Parameter Description

id

Coupa global unique identifier (UUID).

Elements

The following elements are available in the response:

Element Data Type Available Options Description

id

string (GUID)

Coupa global unique identifier UUID.

invoice_number

string

Invoice number.

original_invoice_number

string

Original invoice number used in case of a Credit Note.

total_with_taxes

decimal

Total with taxes.

status

string

approved, pending_approval

Invoice status.

invoice_date

datetime

Date of invoice. Format: YYYY-MM-DD HH:MM:SS in UTC.

original_invoice_date

datetime

Original invoice date required when is-credit-note=true. Format: YYYY-MM-DD HH:MM:SS in UTC.

line_level_taxation

boolean

true, false

Flag indicating whether taxes are provided at line level in this invoice.

paid

boolean

true, false

Paid status.

document_type

string

Invoice, Credit Note

Invoice or Credit Note.

enterprise_instance_url

string

Customer instance URL.

created_at

datetime

Automatically created by Coupa in the format YYYY-MM-DD HH:MM:SS in UTC.

updated_at

datetime

Automatically created by Coupa in the format YYYY-MM-DD HH:MM:SS in UTC.

invoice_lines

array

Array of invoice line items. Each line item contains: id (GUID), description (string), line_num (integer), price (decimal), total (decimal), uom (string), status (string), quantity (decimal), tax_amount (decimal).

tax_amount

decimal

Tax amount (not used if tax is provided at line level).

currency

string

USD, EUR, INR

Currency code.

discount_due_date

datetime

Discount due date calculated based on the discount payment terms. Format: YYYY-MM-DD HH:MM:SS in UTC.

net_due_date

datetime

Net due date calculated based on the net payment terms. Format: YYYY-MM-DD HH:MM:SS in UTC.

dispute_reason

string

Dispute reason.

Note: All datetime values are in UTC time zone.

Get invoice

Endpoint

GET /api/v1/invoices/:id

Example cURL request
curl --location 'https://supplier.coupahost.com/api/v1/invoices/680fa552-3ef1-576c-b531-b743ca208134' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer ••••••'
Example response
{
    "id": "680fa552-3ef1-576c-b531-b743ca208134",
    "invoice_number": "feb27_e2e_1_update2",
    "original_invoice_number": "fdelc-dchrl-qisty-xeskl",
    "total_with_taxes": 100,
    "status": "approved",
    "invoice_date": "2024-02-27T00:00:00Z",
    "original_invoice_date": "2024-02-27T11:42:15Z",
    "line_level_taxation": true,
    "paid": false,
    "document_type": "Invoice",
    "enterprise_instance_url": "https://www.amazon.com",
    "created_at": "2024-02-28T05:46:29Z",
    "updated_at": "2025-08-14T12:30:55Z",
    "invoice_lines": [
        {
            "id": "684dd604-77e1-55c1-939e-4aebd152fd0a",
            "description": "Impressivo 1000 motherboard",
            "line_num": 1,
            "price": 10,
            "total": 100,
            "uom": "EA",
            "status": "missing_po",
            "quantity": 10,
            "tax_amount": 0
        }
    ],
    "tax_amount": 0,
    "currency": "USD",
    "discount_due_date": "2024-03-18T23:59:59Z",
    "net_due_date": null,
    "dispute_reason": ""
}
Example error response (401 Unauthorized)
{
    "status": 401,
    "error": "Unauthorized",
    "message": "Invalid or expired access token."
}
Example error response (403 Forbidden)
{
    "status": 403,
    "error": "Forbidden",
    "message": "Not enough Credits available."
}
Example error response (404 Not Found)
{
    "status": 404,
    "error": "Not Found",
    "message": "Invoice not found"
}
Example error response (429 Too Many Requests)
{
    "status": 429,
    "error": "Too Many Requests",
    "message": "The API call for this client has exceeded the maximum call rate limit of 100 per minute."
}
Example error response (500 Internal Server Error)
{
    "status": 500,
    "error": "Internal Server Error",
    "message": "An unexpected error occurred. Please try again later."
}
Example error response (503 Service Unavailable)
{
    "status": 503,
    "error": "Service Unavailable",
    "message": "Service Unavailable. Please try again later."
}