List invoices
Returns issued subscription invoices, newest first, cursor-paginated (default 25, max 100).
Optional filters: status (e.g. paid, open, credit_note), from / to (issued_at range).
Each invoice carries a pdf_url - a signed short-TTL URL (1 hour). Download promptly; the url itself expires per S3’s own presigned-URL rules - an expired link returns S3’s own 403 Forbidden (an XML body, not the VEXiON JSON error envelope, since the request goes straight to S3 and never reaches this API). There is no dedicated VEXiON error code for this; re-fetch the invoice via this endpoint (or GET /v1/organization/invoices/{id}) for a fresh pdf_url. Amounts are in MAJOR units (mirroring the human invoice document).
Scope: organization:read. Added 2026-07-27 (owner-approved versioned API change). This endpoint used to require no scope at all: any valid key for the organization, whatever scopes it carried, could read this organization’s invoice history, including amounts, VAT, payment method and refunds - a key minted only for, say, notifications:send could still read it. That gap is now closed. Existing keys minted before 2026-07-27 were backfilled with organization:read so no working integration broke when enforcement landed.
Authorizations
Your secret API key as a Bearer token: Authorization: Bearer vxn_sk_.... Keys are created and scoped in the dashboard - see Authentication.
Query Parameters
Cursor pagination page size. Default 25, max 100. Values outside 1-100 are rejected with 400 invalid_limit, not clamped.
1 <= x <= 100Cursor for forward pagination; the id of the last item from the previous page. Mutually exclusive with ending_before. Numeric offset or page parameters are not supported; cursors are the only supported paging mechanism.
Cursor for reverse pagination; the id of the first item from the previous page. Mutually exclusive with starting_after.
Filter by invoice status (paid, open, pending, requires_billing_details, failed, refunded, credit_note).
paid, open, pending, requires_billing_details, failed, refunded, credit_note Lower bound on issued_at - unix seconds or ISO-8601 (inclusive).
Upper bound on issued_at - unix seconds or ISO-8601 (inclusive).
Response
Paged invoices.
Standard cursor-pagination envelope for list endpoints. See the Pagination guide.
Always "list".
"list"Array of the requested resource type.
True when more pages exist - pass the last item id as starting_after.
Cursor for the next page in the direction you are already paging, or null when this page ends the collection. has_more: true always comes with a non-null next_cursor.
Feed it back to the SAME parameter you used: starting_after when paging forward (the default), or ending_before when paging backward. Treat it as opaque and do not parse it.
You no longer need to take the last object's id yourself. That still works and is unchanged, but deriving the cursor from the page put the burden of knowing the sort direction on you, and it broke silently on any endpoint whose cursor is not the object id.
"cus_iofv5j4hn6bphinmmyat27tc5y"
Stable collection URL.