Endpoint
GET /api/v1/invoices
Returns a paginated list of invoices for the authenticated client. Includes invoices in all statuses unless filtered.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
status |
string | Filter by status: unpaid, paid, overdue, cancelled |
page |
integer | Page number (default: 1) |
per_page |
integer | Results per page (default: 15, max: 100) |
Request Examples
List all invoices:
curl "https://billing.example.com/api/v1/invoices" \
-H "Authorization: Bearer {your-token}"
List unpaid and overdue invoices:
curl "https://billing.example.com/api/v1/invoices?status=unpaid" \
-H "Authorization: Bearer {your-token}"
curl "https://billing.example.com/api/v1/invoices?status=overdue" \
-H "Authorization: Bearer {your-token}"
Response
{
"data": [
{
"id": 305,
"invoice_number": "INV-0305",
"status": "paid",
"subtotal": 2000,
"tax_amount": 200,
"total": 2200,
"amount_due": 0,
"currency_code": "USD",
"due_date": "2026-04-10",
"paid_at": "2026-04-08T14:33:10Z",
"created_at": "2026-04-01T00:00:00Z"
},
{
"id": 306,
"invoice_number": "INV-0306",
"status": "unpaid",
"subtotal": 500,
"tax_amount": 0,
"total": 500,
"amount_due": 500,
"currency_code": "USD",
"due_date": "2026-05-01",
"paid_at": null,
"created_at": "2026-04-01T00:00:00Z"
}
],
"meta": {
"current_page": 1,
"last_page": 3,
"per_page": 15,
"total": 38
}
}
Response Fields
| Field | Type | Description |
|---|---|---|
id |
integer | Unique invoice ID |
invoice_number |
string | Human-readable invoice reference |
status |
string | unpaid, paid, overdue, or cancelled |
subtotal |
integer | Pre-tax total in the smallest currency unit |
tax_amount |
integer | Tax amount in the smallest currency unit |
total |
integer | Full invoice total including tax (smallest currency unit) |
amount_due |
integer | Remaining balance (0 if paid, smallest currency unit) |
currency_code |
string | Three-letter ISO currency code |
due_date |
string | ISO 8601 date the payment is due |
paid_at |
string | ISO 8601 timestamp of full payment, or null if unpaid |
created_at |
string | ISO 8601 timestamp when the invoice was created |
[!IMPORTANT] All monetary amounts (
subtotal,tax_amount,total,amount_due) are in the smallest currency unit. For USD,2200means $22.00. Always divide by 100 when displaying two-decimal currencies.
Status Values
| Status | Meaning |
|---|---|
unpaid |
Invoice has been issued and payment has not been received |
paid |
Invoice has been paid in full |
overdue |
Payment was due in the past and has not been received |
cancelled |
Invoice was voided and will not be collected |
[!TIP] To build a "balance due" widget, filter by
status=unpaidandstatus=overdue, then sum theamount_duefields across all results (paginating through all pages if necessary).