API v3

GET /invoices/{id}

One invoice with its lines.

Addresshttps://api.voicepro.plus/v3/invoices/{id}
Key permissionbilling:read

Fields

NameInType
id *pathstring

* required

Example

curl -X GET "https://api.voicepro.plus/v3/invoices/inv_2610AB12" \
  -H "Authorization: Bearer vpkey_YOUR_KEY"
Response
{
  "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,
  "lines": [
    {
      "description": "Business+ Essentials, 12 SIMs",
      "quantity": 12,
      "unit_price": {
        "amount": 3000,
        "currency": "GBP"
      },
      "total": {
        "amount": 36000,
        "currency": "GBP"
      },
      "kind": "plan"
    },
    {
      "description": "EU Roaming add-on",
      "quantity": 12,
      "unit_price": {
        "amount": 500,
        "currency": "GBP"
      },
      "total": {
        "amount": 6000,
        "currency": "GBP"
      },
      "kind": "add_on"
    }
  ],
  "notes": 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.
route_not_found404: No such path in v3.
resource_not_found404: No object with that id on this account.
service_not_enabled404: The account does not have this service (voice trunk, IoT, numbers); param names it.
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.

More in Billing