📋 Billing & SubscriptionsInvoices

Update invoice

Update an existing invoice.

PATCH/invoices/{id}

Update an existing invoice.


Related endpoints

  • GET /invoices/{id}/usage-explain — Explain invoice usage charges
  • GET /invoices — List invoices
  • POST /invoices — Create invoice
  • GET /invoices/{id} — Get invoice
  • GET /invoices/{id}/pdf — Get invoice PDF link
  • POST /invoices/{id}/finalize — Finalize an invoice
  • POST /invoices/{id}/void — Void an invoice
  • POST /invoices/{id}/send — Send an invoice

Common errors

  • 400 invalid_request — malformed payload or failed validation.

Idempotency

Pass an Idempotency-Key header (UUID v4 recommended) to make retries safe. Keys are valid for 24 hours; see the idempotency guide.

Authorization

x-api-key<token>

Your RevKeen merchant API key. Create and manage keys in Dashboard → Settings → Developer. Use rk_sandbox_* for staging/test and rk_live_* for production. The same key may be sent as Authorization: Bearer <key> if that suits your HTTP client better. A missing, invalid, expired, or revoked key returns 401 with a WWW-Authenticate: Bearer challenge; a valid key without the required scope returns 403.

In: header

Scope: invoices:write

Path Parameters

id*string
Formatuuid

Request Body

application/json

Invoice update details

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

Stuck on an error response? Ask the RevKeen assistant to explain it.
curl -X PATCH "https://api.revkeen.com/v2/invoices/11111111-1111-4111-8111-111111111111" \
  -H "x-api-key: $REVKEEN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "total_minor": 1,
    "due_date": "example",
    "allowed_methods": [
      "card",
      "direct_debit"
    ],
    "subscription_terms": {
      "collection_method": "charge_automatically",
      "start_mode": "when_paid",
      "duration_type": "until_cancelled",
      "first_payment_behavior": "charge_first_cycle_now"
    }
  }'

Synthetic documentation data, validated against the response schema; not a live API result.

{  "data": {    "id": "f1a2b3c4-d5e6-4270-8a9b-0c1d2e3f4a21",    "customer_uuid": "c2a1e7d4-5b3f-4a8e-9d21-6f0b3e4c7a11",    "invoice_number": "INV-0042",    "total_minor": 5880,    "currency": "GBP",    "allowed_methods": [      "card"    ],    "status": "paid",    "due_date": "2026-04-16T10:00:00.000Z",    "external_source": null,    "external_type": null,    "external_id": null,    "hosted_invoice_url": "https://pay.revkeen.com/inv_example_0042",    "created_at": "2026-04-16T10:00:00.000Z",    "updated_at": "2026-04-16T10:02:00.000Z"  },  "requestId": "req_7f3a9c2e5b1d"}

Put this endpoint to work