Credit invoice
/v1/invoices/{id}/credit-notesCreates and books a credit note for a booked invoice, by default for all that is outstanding, and lowers the invoice's outstanding balance. Each call is your own approval of the invoice: Numina does not review it, so make sure a person at your company has checked it or has approved the rules your system books by. Booking is final and cannot be undone through this API. It does not send the credit note; use POST /v1/invoices/{id}/send with the credit note's ID.
Not available to Fuld Service customers (403 booking_not_available).
Every successful call books a credit note, so send an Idempotency-Key header to retry safely. Two credit notes for the same invoice at once: one gets 409 and nothing is booked for it.
Returns 409 for a draft, an offer or a credit note, and when nothing is outstanding. Returns 400 validation_error for an amount above what is outstanding or a date in a closed accounting year.
Requires one ofinvoices:bookwrite:ledger
Path parameters
- Invoice ID
Headers
- Unique key for this request (max 255 characters). Retrying with the same key and body returns the original response instead of doing the work again.
Body
application/json
- Credit note date in YYYY-MM-DD format (default: today). It must be in an open accounting year.
- Amount to credit incl. VAT, in the invoice's currency (default: all that is outstanding). It cannot exceed what is outstanding. Lines are credited in proportion.
- Note on the credit note (default: the invoice's note)
Errors
400Invalid input or validation failed401Invalid or missing authentication403Missing scope, the company is archived, or the company is on Fuld Service404The resource does not exist in this company409The invoice cannot be credited, has nothing outstanding, or is being updated422The Idempotency-Key was already used with a different request429Rate limit exceeded500Internal Server Error
Every error has the same shape. See Errors.
curl -X POST https://api.numina.app/v1/invoices/550e8400-e29b-41d4-a716-446655440000/credit-notes \
-H "Authorization: Bearer numi_YOUR_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"date": "2026-11-10",
"amount": 1250,
"memo": "string"
}'const response = await fetch("https://api.numina.app/v1/invoices/550e8400-e29b-41d4-a716-446655440000/credit-notes", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.NUMINA_API_KEY}`,
"Idempotency-Key": crypto.randomUUID(),
"Content-Type": "application/json",
},
body: JSON.stringify({
"date": "2026-11-10",
"amount": 1250,
"memo": "string"
}),
});
const data = await response.json();import uuid
import os
import requests
response = requests.post(
"https://api.numina.app/v1/invoices/550e8400-e29b-41d4-a716-446655440000/credit-notes",
headers={
"Authorization": f"Bearer {os.environ['NUMINA_API_KEY']}",
"Idempotency-Key": str(uuid.uuid4()),
},
json={
"date": "2026-11-10",
"amount": 1250,
"memo": "string"
},
)
data = response.json(){
"id": "550e8400-e29b-41d4-a716-446655440000",
"invoice_number": 1001,
"type": "invoice",
"credited_invoice_id": "550e8400-e29b-41d4-a716-446655440000",
"status": "sent",
"issue_date": "2026-01-15",
"due_date": "2026-02-15",
"contact_id": "550e8400-e29b-41d4-a716-446655440001",
"contact_name": "Acme ApS",
"currency": "DKK",
"subtotal": 10000,
"vat": 2500,
"vat_rate": 25,
"total": 12500,
"has_mixed_vat": false,
"outstanding_balance": 12500,
"outstanding_balance_currency": "DKK",
"currency_rate": 0,
"delivery_status": "sent",
"email_delivery_status": "string",
"email_sent_at": "string",
"e_invoice_sent_at": "string",
"is_overdue": false,
"payment_state": "open",
"unmatched_payments_note": "string",
"items": [
{
"unit": "string",
"vat_account_id": "string",
"vat_code": "string",
"sales_account_number": 0,
"vat_rate": 0,
"id": "550e8400-e29b-41d4-a716-446655440002",
"description": "Consulting services",
"quantity": 10,
"unit_price": 1000
}
],
"memo": "Project Q1 delivery",
"payment_details": {
"bank_name": "Danske Bank",
"scheme": "dk-registration-number",
"clearing_code": "3409",
"account_number": "0012345678",
"iban": "DK5030000012345678",
"swift_bic": "DABADKKK"
},
"created_at": "2026-01-15T10:30:00Z"
}