API v3
GET /invoices
VoicePro invoices, newest first.
Addresshttps://api.voicepro.plus/v3/invoices
Key permissionbilling:read
Fields
| Name | In | Type | |
|---|---|---|---|
| limit | query | integer | |
| cursor | query | string | next_cursor from the previous page. |
| status | query | open | paid | overdue | void |
* required
Example
curl -X GET "https://api.voicepro.plus/v3/invoices?status=paid" \ -H "Authorization: Bearer vpkey_YOUR_KEY"
Response
{
"object": "list",
"data": [
{
"object": "invoice",
"id": "inv_2610AB12",
"period": "2026-09",
"status": "paid",
"subtotal": {
"amount": 42000,
"currency": "GBP"
},
"vat": {
"amount": 8400,
"currency": "GBP"
},
"total": {
"amount": 50400,
"currency": "GBP"
},
"issued_at": "2026-10-01T06:00:00Z",
"due_at": "2026-10-15T23:59:59Z",
"paid_at": "2026-10-08T10:21:00Z",
"line_count": 2
}
],
"has_more": false,
"next_cursor": null
}Errors
Every error has the same shape: { "error": { "type", "code", "message", "param", "request_id" } }.
missing_api_key401: No Authorization header, or not a Bearer key.
invalid_api_key401: The key is not recognised.
api_key_revoked401: The key was revoked in the portal.
api_key_expired401: The key passed the expiry date set on it.
missing_scope403: The key lacks the scope this endpoint needs; param names the scope.
ip_not_allowed403: The key has an IP allowlist and this request came from elsewhere.
account_not_active403: The workspace is suspended or closed.
rate_limited429: Too many requests for this key or for the whole account (the message says which); wait Retry-After seconds.
internal_error500: Our fault. Quote the request_id to support.