Appearance
Get an invoice
GET /api/v2/external/invoices/{invoiceId}Authentication: x-api-key header, with the invoices:read scope. See Authentication and limits.
Returns a single patent invoice owned by the authenticated client, identified by its opaque Renewr UUID.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
invoiceId | string | Yes | The opaque, stable Renewr UUID of the invoice. |
Response
200 The invoice matching the provided UUID.
json
{
"object": "invoice",
"id": "c4a1b2d3-e4f5-4a6b-8c7d-9e0f1a2b3c4d",
"reference": "INV-2026-0087",
"number": 87,
"issueDate": "2026-07-22",
"origin": "GENERATED",
"ipRightType": "PATENT",
"currency": "EUR",
"vatRate": 20,
"vatNumber": "FR12345678901",
"subtotalExcludingTax": "1041.67",
"totalIncludingTax": "1250.00",
"hasPdfDocument": true,
"hasXlsxDocument": false,
"fees": [
{
"object": "fees",
"invoiceId": "c4a1b2d3-e4f5-4a6b-8c7d-9e0f1a2b3c4d",
"eventId": "9f0d1e7a-3b2c-4d5e-8f6a-7b8c9d0e1f2a",
"patent": {
"id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"providerId": "ACME-2021-0042"
},
"currency": "EUR",
"total": "1250.00",
"components": [
{
"type": "OFFICE",
"amount": "800.00"
}
],
"feesStatus": "INVOICED",
"isFxRateFrozen": false
}
],
"createdAt": "2026-01-10T08:30:00.000Z",
"updatedAt": "2026-07-15T14:00:00.000Z"
}Response fields
| Field | Type | Description |
|---|---|---|
object | string | String describing the object type (auto-description). One of: invoice. |
id | string | Opaque, stable Renewr UUID of the invoice. Format: uuid. |
reference | string | Stable, unique display reference (the only field guaranteed across all 3 origins). |
number | string or null | Sequential invoice number; absent (null) for IMPORTED invoices. |
issueDate | string or null | ISO date string. |
origin | string | One of: GENERATED, IMPORTED, REGULARIZATION. |
ipRightType | string | PATENT | TRADEMARK: asset family discriminant. One of: PATENT, TRADEMARK. |
currency | string | ISO 4217 currency code the client is invoiced in. |
vatRate | number or null | VAT rate applied (non-monetary number, e.g. 0.2 for 20%). |
vatNumber | string or null | VAT number on the invoice. |
subtotalExcludingTax | string or null | Subtotal before tax, in invoice currency (decimal string). |
totalIncludingTax | string or null | Total including tax, in invoice currency (decimal string). |
hasPdfDocument | boolean | True when a PDF document is available for this invoice. |
hasXlsxDocument | boolean | True when an XLSX document is available for this invoice. |
fees | array of objects | Full per-component fee breakdown of the invoice. |
fees[].object | string | String describing the object type (auto-description). One of: fees. |
fees[].invoiceId | string or null | Back-reference to the invoice these fees belong to. Format: uuid. |
fees[].eventId | string or null | Public UUID of the patent event these fees belong to (trace each fee line back to its event). Format: uuid. |
fees[].patent | object | The patent this fee line belongs to: identified both ways (Renewr id + your own reference). |
fees[].patent.id | string or null | Renewr UUID of the patent. Format: uuid. |
fees[].patent.providerId | string or null | The client's own matching reference for that patent. |
fees[].currency | string | ISO 4217 currency code the client is invoiced in. |
fees[].total | string or null | Total of all components, in invoice currency (decimal string). |
fees[].components | array of objects | Per-type fee breakdown (Stripe fee_details style); a component that does not apply is absent (never null). Sums to total. |
fees[].components[].type | string | OFFICE (national office) | AGENT (external agent) | RENEWR (service fee) | GRACE_PERIOD (late surcharge). One of: OFFICE, AGENT, RENEWR, GRACE_PERIOD. |
fees[].components[].amount | string | Amount of this component, in invoice currency (decimal string). |
fees[].feesStatus | string | Whether these amounts are ESTIMATED (projected) or INVOICED (final: an invoice exists). One of: ESTIMATED, INVOICED. |
fees[].isFxRateFrozen | boolean | True when the FX rate used to compute these fees is frozen. |
createdAt | string or null | ISO 8601 timestamp (UTC). Format: date-time. |
updatedAt | string or null | ISO 8601 timestamp (UTC). Format: date-time. |
Errors
Errors use the application/problem+json envelope with stable machine-readable codes. See the Errors guide.
| Status | Description |
|---|---|
| 400 | Validation failed (validation_failed): carries per-field errors[] with RFC 6901 JSON Pointers. |
| 401 | Missing or invalid API key (invalid_api_key), or expired key (api_key_expired). |
| 403 | API key lacks the required scope (insufficient_scope, with requiredScope extension) or the operation is not enabled for this client (forbidden). |
| 404 | The resource does not exist in your portfolio (not_found). |
| 429 | Daily API call limit exceeded (rate_limit_exceeded): the Retry-After header gives the seconds until reset. |
Example request
bash
curl "https://api.renewr.example/api/v2/external/invoices/$INVOICE_ID" \
-H "x-api-key: $RENEWR_API_KEY"