Skip to content

List invoices

GET /api/v2/external/invoices

Authentication: x-api-key header, with the invoices:read scope. See Authentication and limits.

Paginated, unified list of the invoices owned by the authenticated client. Each invoice carries an origin (GENERATED | IMPORTED | REGULARIZATION). This endpoint returns patent invoices (ipRightType=PATENT). Use itemsPerPage and currentPage for pagination (server cap: 100 / page).

Query parameters

NameTypeRequiredDescription
itemsPerPagenumberNoNumber of items per page.
currentPagenumberNoCurrent page.

Response

200 A page of invoices with the standard v2 list envelope { pagination, data }.

json
{
  "pagination": {
    "totalItems": 128,
    "currentPage": 1,
    "itemsPerPage": 10,
    "totalPages": 13,
    "hasMore": true
  },
  "data": [
    {
      "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": null,
              "amount": null
            }
          ],
          "feesStatus": "INVOICED",
          "isFxRateFrozen": false
        }
      ],
      "createdAt": "2026-01-10T08:30:00.000Z",
      "updatedAt": "2026-07-15T14:00:00.000Z"
    }
  ]
}
Response fields
FieldTypeDescription
paginationobjectPagination metadata.
pagination.totalItemsintegerTotal number of items across all pages.
pagination.currentPageinteger1-based index of the current page.
pagination.itemsPerPageintegerNumber of items per page (server cap: 100).
pagination.totalPagesintegerTotal number of pages.
pagination.hasMorebooleanTrue when another page exists after the current one.
dataarray of objectsPage of results.
data[].objectstringString describing the object type (auto-description). One of: invoice.
data[].idstringOpaque, stable Renewr UUID of the invoice. Format: uuid.
data[].referencestringStable, unique display reference (the only field guaranteed across all 3 origins).
data[].numberstring or nullSequential invoice number; absent (null) for IMPORTED invoices.
data[].issueDatestring or nullISO date string.
data[].originstringOne of: GENERATED, IMPORTED, REGULARIZATION.
data[].ipRightTypestringPATENT | TRADEMARK: asset family discriminant. One of: PATENT, TRADEMARK.
data[].currencystringISO 4217 currency code the client is invoiced in.
data[].vatRatenumber or nullVAT rate applied (non-monetary number, e.g. 0.2 for 20%).
data[].vatNumberstring or nullVAT number on the invoice.
data[].subtotalExcludingTaxstring or nullSubtotal before tax, in invoice currency (decimal string).
data[].totalIncludingTaxstring or nullTotal including tax, in invoice currency (decimal string).
data[].hasPdfDocumentbooleanTrue when a PDF document is available for this invoice.
data[].hasXlsxDocumentbooleanTrue when an XLSX document is available for this invoice.
data[].feesarray of objectsFull per-component fee breakdown of the invoice.
data[].fees[].objectstringString describing the object type (auto-description). One of: fees.
data[].fees[].invoiceIdstring or nullBack-reference to the invoice these fees belong to. Format: uuid.
data[].fees[].eventIdstring or nullPublic UUID of the patent event these fees belong to (trace each fee line back to its event). Format: uuid.
data[].fees[].patentobjectThe patent this fee line belongs to: identified both ways (Renewr id + your own reference).
data[].fees[].patent.idstring or nullRenewr UUID of the patent. Format: uuid.
data[].fees[].patent.providerIdstring or nullThe client's own matching reference for that patent.
data[].fees[].currencystringISO 4217 currency code the client is invoiced in.
data[].fees[].totalstring or nullTotal of all components, in invoice currency (decimal string).
data[].fees[].componentsarray of objectsPer-type fee breakdown (Stripe fee_details style); a component that does not apply is absent (never null). Sums to total.
data[].fees[].components[].typestringOFFICE (national office) | AGENT (external agent) | RENEWR (service fee) | GRACE_PERIOD (late surcharge). One of: OFFICE, AGENT, RENEWR, GRACE_PERIOD.
data[].fees[].components[].amountstringAmount of this component, in invoice currency (decimal string).
data[].fees[].feesStatusstringWhether these amounts are ESTIMATED (projected) or INVOICED (final: an invoice exists). One of: ESTIMATED, INVOICED.
data[].fees[].isFxRateFrozenbooleanTrue when the FX rate used to compute these fees is frozen.
data[].createdAtstring or nullISO 8601 timestamp (UTC). Format: date-time.
data[].updatedAtstring or nullISO 8601 timestamp (UTC). Format: date-time.

Errors

Errors use the application/problem+json envelope with stable machine-readable codes. See the Errors guide.

StatusDescription
401Missing or invalid API key (invalid_api_key), or expired key (api_key_expired).
403API key lacks the required scope (insufficient_scope, with requiredScope extension) or the operation is not enabled for this client (forbidden).
429Daily 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" \
  -H "x-api-key: $RENEWR_API_KEY"

Renewr External API v2. Access on invitation.