Skip to content

Invoice history.

GET
/billing/invoices
curl --request GET \
--url https://api.siteqwality.com/billing/invoices \
--header 'Authorization: Bearer <token>'
limit
integer | null format: int64

How many invoices to return (default 24, max 100).

Invoices, newest first

Media type application/json
object
invoices
required
Array<object>
object
id
required
string
number

Stripe’s human-facing invoice number. Absent until finalization.

string | null
created
required

Unix seconds.

integer format: int64
total_cents
required
integer format: int64
currency
required

ISO 4217, uppercase.

string
status
required
string
pdf_url

A direct files.stripe.com link, handed to the browser as-is rather than proxied. A PDF download is a file, not a management screen, so it does not break the “no screen sends the customer to Stripe” rule, and proxying it would mean streaming a document through a Lambda for no gain. The link is short-lived and scoped to the invoice by Stripe.

string | null
description
required

A readable summary of the line items. Deliberately NOT Stripe’s top-level description, which is null on every subscription invoice we generate and would leave the whole column blank.

string
payable
required

True only for an open invoice the pay endpoint will accept.

boolean
note

Why an open invoice cannot be paid here, shown in place of “Pay now”.

string | null
has_more
required

Stripe’s paging flag for the page requested. It counts invoices Stripe holds, not rows returned, so it can be true while this page dropped a draft.

boolean
Example generated
{
"invoices": [
{
"id": "example",
"number": "example",
"created": 1,
"total_cents": 1,
"currency": "example",
"status": "example",
"pdf_url": "example",
"description": "example",
"payable": true,
"note": "example"
}
],
"has_more": true
}

Missing or invalid authentication

Caller has no billing role

Account has no Stripe customer

Internal server error