InvoicesCredit notes

Issue a credit note

POST
/v1/invoices/{id}/credit-notes

Corrects an invoice already issued, by named lines or by a flat amount, instead of editing it: an invoice is never rewritten once sent. A fully credited open invoice moves to credited; a paid invoice stays paid. Send an Idempotency-Key header so a retry can never credit twice.

Authorization

apiKey
headerAuthorizationBearer <token>

An API key from the Developers page. rhq_test_ keys reach the sandbox, rhq_live_ keys the live side.

Path Parameters

id*string

Header Parameters

Idempotency-Key?string

A value unique to this request, such as a UUID. A retry with the same key within 24 hours returns the first outcome instead of running again.

Length8 <= length <= 200

Request Body

application/json
  1. body
reason*string
Length1 <= length <= 500
lines?array<>

Credit these invoice lines, by the sale each one bills

Items1 <= items <= 500
amount?integer

A flat amount off the invoice, before tax, instead of named lines

Range0 < value

Response Body

Created

application/json
  1. response

Created

id*string
number*string

Counts up from CN-0001 across your account, with no gaps

invoiceId*string
invoiceNumber*string
customerId*string
currency*string

The currency of every amount on the credit note

Value in"USD""EUR""GBP""CAD""AUD""NZD""CHF""SEK""NOK""DKK""PLN""INR""SGD""HKD""AED""ZAR""BRL""MXN"
lines*array<>
subtotal*integer

The lines added up, before tax

Range0 <= value
taxBps*|

Copied from the invoice's rate. Null when the invoice carried no tax

tax*integer

Minor units of the invoice's currency

Range0 <= value
total*integer

What this credit note comes to: subtotal plus tax

Range0 <= value
reason*string
issuedAt*string
Formatdate-time
shared*boolean

True once POST /credit-notes/{id}/share has made a public link for this credit note, false again once revoked. The token itself is never in this response or the list

issuer*|

The account as it billed the invoice this credit note corrects

curl -X POST "https://example.com/v1/invoices/inv_01K6XJ4Q8ZT3M9R5V2B7WDHNCA/credit-notes" \  -H "Idempotency-Key: 2f1c9a52-7d0e-4a8e-9a53-0c1f6f3f2b11" \  -H "Content-Type: application/json" \  -d '{    "reason": "Customer cancelled a seat"  }'
{  "id": "crn_01K6XJ4Q8ZT3M9R5V2B7WDHNCA",  "number": "CN-0001",  "invoiceId": "inv_01K6XJ4Q8ZT3M9R5V2B7WDHNCA",  "invoiceNumber": "INV-0001",  "customerId": "cus_01K6XJ4Q8ZT3M9R5V2B7WDHNCA",  "currency": "USD",  "lines": [    {      "saleId": "sal_01K6XJ4Q8ZT3M9R5V2B7WDHNCA",      "description": "northwind-telecom.com, 2 years",      "quantity": 2,      "unitPrice": 1439,      "total": 1439    }  ],  "subtotal": 2878,  "taxBps": 2000,  "tax": 576,  "total": 3454,  "reason": "Customer cancelled a seat",  "issuedAt": "2026-10-07T11:04:31.000Z",  "shared": true,  "issuer": {    "name": "Northwind Telecom",    "legalName": null,    "addressLines": [],    "taxId": null,    "billingEmail": null  }}