List invoices
Authorization
BearerAuth Personal Access Token. Mint at Settings → API. Token shape: hsk_<env>_<prefix12>_<secret32>.
In: header
Query Parameters
Opaque pagination cursor — nextCursor from a previous response.
Page size (1–200, default 50).
Sort field, optionally prefixed with - for descending (Stripe-style). Defaults to -createdAt (newest first). The allowed fields differ per resource — see each list* operation. Common examples: ?sort=-paidAt (latest paid invoice), ?sort=dueDate (earliest due first), ?sort=name (alphabetical). Cursors are sort-aware: keep the same sort= when paginating. Allowed sort fields for invoices: amountPaid, createdAt, dueDate, id, issueDate, number, paidAt, paymentStatus, sentAt, status, total, updatedAt.
Case-insensitive partial match across: number. Max 200 chars.
Case-insensitive partial match on the related client's name. Joins through the relation — pair with other filters as needed.
Filter by client UUID.
One of: DRAFT, SENT, PAID, CANCELLED.
One of: unpaid, partially_paid, paid, refunded.
Inclusive lower bound on issueDate. Accepts YYYY-MM-DD (treated as UTC midnight) or full ISO timestamp.
Inclusive upper bound on issueDate. YYYY-MM-DD is treated as end-of-day so the date is fully included.
Inclusive lower bound on dueDate. Accepts YYYY-MM-DD (treated as UTC midnight) or full ISO timestamp.
Inclusive upper bound on dueDate. YYYY-MM-DD is treated as end-of-day so the date is fully included.
Inclusive lower bound on sentAt. Accepts YYYY-MM-DD (treated as UTC midnight) or full ISO timestamp.
Inclusive upper bound on sentAt. YYYY-MM-DD is treated as end-of-day so the date is fully included.
Inclusive lower bound on paidAt. Accepts YYYY-MM-DD (treated as UTC midnight) or full ISO timestamp.
Inclusive upper bound on paidAt. YYYY-MM-DD is treated as end-of-day so the date is fully included.
Inclusive lower bound on createdAt. Accepts YYYY-MM-DD (treated as UTC midnight) or full ISO timestamp.
Inclusive upper bound on createdAt. YYYY-MM-DD is treated as end-of-day so the date is fully included.
Inclusive lower bound on total. Accepts decimal-string values like "150.00" to preserve precision.
Inclusive upper bound on total.
Inclusive lower bound on amountPaid. Accepts decimal-string values like "150.00" to preserve precision.
Inclusive upper bound on amountPaid.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/invoices"{ "data": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "orgId": "25b2c2d5-a7fc-47d0-89e4-8709a1560bfa", "clientId": "5e505642-9024-474d-9434-e5a44f505cc5", "number": "string", "status": "DRAFT", "paymentStatus": "unpaid", "subtotal": "string", "discountAmount": "string", "taxRate": "string", "total": "string", "amountPaid": "string", "currency": "string", "notes": "string", "billToName": "string", "issueDate": "2019-08-24", "dueDate": "2019-08-24", "sentAt": "2019-08-24T14:15:22Z", "paidAt": "2019-08-24T14:15:22Z", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "deletedAt": "2019-08-24T14:15:22Z" } ], "pagination": { "limit": 1, "nextCursor": "string" }}{ "error": { "code": "unauthenticated", "message": "string", "fields": { "property1": "string", "property2": "string" }, "requiredPlan": "studio", "feature": "string" }}{ "error": { "code": "unauthenticated", "message": "string", "fields": { "property1": "string", "property2": "string" }, "requiredPlan": "studio", "feature": "string" }}{ "error": { "code": "unauthenticated", "message": "string", "fields": { "property1": "string", "property2": "string" }, "requiredPlan": "studio", "feature": "string" }}{ "error": { "code": "unauthenticated", "message": "string", "fields": { "property1": "string", "property2": "string" }, "requiredPlan": "studio", "feature": "string" }}{ "error": { "code": "unauthenticated", "message": "string", "fields": { "property1": "string", "property2": "string" }, "requiredPlan": "studio", "feature": "string" }}{ "error": { "code": "unauthenticated", "message": "string", "fields": { "property1": "string", "property2": "string" }, "requiredPlan": "studio", "feature": "string" }}