nenoDevelopers
⌘K
v1

Invoices

Create a full credit note

POST/credit-notes

Creates a full credit note for a sent or paid Neno invoice. Partial credits and multiple credit notes for one invoice are not supported. A sent original becomes cancelled. A paid original remains paid. Set send: true to email it.

Headers

Idempotency-Keystring · max 255required

Client-generated key that identifies one write for 24 hours. Reuse it only when retrying the same method, path, query, and body.

Body

creditedInvoiceIdstring · uuidrequired
reasonKeystringrequired
incorrect_amountduplicate_invoiceorder_cancelledgoods_returnedother
customReasonstring · max 1000

Required when reasonKey is other.

sendbooleandefault false
recipientEmailstring · email
ccarray of strings
emailSubjectstring · max 200
emailBodystring · max 5000

Responses

201
Created. Created.
400
Bad request. Malformed request.
401
Unauthorized. Missing, invalid, revoked, or expired API key.
403
Forbidden. The API key lacks a required scope or the creator lacks a required permission.
404
Not found. Resource not found (or not in this workspace).
409
Conflict. State conflict.
422
Unprocessable content. The idempotency key, request, recipient, or payable account is invalid.
503
Response. The ECB EUR VAT rate is unavailable. Retry after the stated delay.

201 Response fields

idstring · uuidrequired

Invoice UUID, distinct from the customer share token.

typestringrequired
invoicecredit_note
creditedInvoiceIdstring · uuid · nullablerequired
createdAtstring · date-timerequired
sentAtstring · date-time · nullablerequired
statusstringrequired

Invoice status values. Non-exhaustive. paid means Neno matched the full payment through bank reconciliation or Mollie. A partial payment remains sent or past_due; no partial-payment status exists. A removed match returns a paid invoice to its unpaid state. scheduled appears for invoices scheduled in the Neno app. Scheduling is not available through this API. Credit notes are issued once finalized and numbered, before they are sent.

draftissuedscheduledsentpast_duepaidcancelled
invoiceNumberstring · nullable

Assigned when the document is finalized.

customerIdstring · uuid · nullable
languagestring · nullable
templateStylestring · nullable
customerNamestringrequired
customerContactPersonstring · nullable
customerAddressLine1string · nullable
customerAddressLine2string · nullable
customerCitystring · nullable
customerPostalCodestring · nullable
customerCountryCodestring · nullable
customerVatNumberstring · nullable
customerEmailstring · nullable
currencyCodestringrequired
netAmountMinorstringrequired
taxTotalMinorstringrequired
totalMinorstringrequired
discountPercentstring · nullable
discountMinorstring
reverseChargeboolean

Reverse charge (BTW verlegd): the customer accounts for the VAT, and the document charges none.

issueDatestring · daterequired
dueDatestring · date · nullable
billingPeriodobject · nullable
payableAccountIdstring · nullable
paidAtstring · date-time · nullable

When Neno recorded a full payment match. It is null while unpaid and can become null if the match is removed.

poNumberstring · nullable
notesstring · nullable
termsstring · nullable
logoUrlstring · nullable
lineItemsarray of objectsrequired
Each item
lineNointegerrequired
namestringrequired
descriptionstring · nullable
unitstring · nullable
quantitystringrequired
unitPricestringrequired
vatRatePercentstring · nullable

Null on a reverse-charge document, whose lines carry no VAT rate.

discountPercentstring · nullable
lineDiscountMinorstring
lineGrossMinorstring
lineSubtotalMinorstring
lineTaxMinorstring
lineTotalMinorstringrequired
taxesarray of objectsrequired
Each item
namestringrequired
ratePercentstringrequired
amountMinorstringrequired
discountMinorstringrequired

400 Response fields

errorobjectrequired

401 Response fields

errorobjectrequired

403 Response fields

errorobjectrequired

404 Response fields

errorobjectrequired

409 Response fields

errorobjectrequired

503 Response fields

errorobjectrequired
Request
curl -X POST https://api.neno.build/public/v1/credit-notes \
-H "Authorization: Bearer $NENO_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"creditedInvoiceId": "9b2f6c1e-4a7d-4f0e-8c3b-2d51e7a0f4c9",
"reasonKey": "incorrect_amount"
}'
201 Created · application/json
{
"id": "9b2f6c1e-4a7d-4f0e-8c3b-2d51e7a0f4c9",
"type": "invoice",
"creditedInvoiceId": "9b2f6c1e-4a7d-4f0e-8c3b-2d51e7a0f4c9",
"createdAt": "2026-09-24T09:30:00Z",
"sentAt": "2026-09-24T09:30:00Z",
"status": "draft",
"invoiceNumber": "2026-0142",
"customerId": "9b2f6c1e-4a7d-4f0e-8c3b-2d51e7a0f4c9",
"language": "en",
"templateStyle": null,
"customerName": "Aalto Studio BV",
"customerContactPerson": "Mira Aalto",
"customerAddressLine1": "Prinsengracht 263",
"customerAddressLine2": null,
"customerCity": "Amsterdam",
"customerPostalCode": "1016 GV",
"customerCountryCode": "NL",
"customerVatNumber": "NL859412763B01",
"customerEmail": null,
"currencyCode": "EUR",
"netAmountMinor": "125000",
"taxTotalMinor": "26250",
"totalMinor": "151250",
"discountPercent": null,
"discountMinor": "string",
"reverseCharge": false,
"issueDate": "2026-09-24",
"dueDate": "2026-10-24",
"billingPeriod": {
"from": "2026-09-24",
"to": "2026-09-24"
},
"payableAccountId": null,
"paidAt": "2026-09-24T09:30:00Z",
"poNumber": "PO-88213",
"notes": null,
"terms": null,
"logoUrl": null,
"lineItems": [
{
"lineNo": 1,
"name": "string",
"description": "Brand identity, phase 2",
"unit": "project",
"quantity": "1",
"unitPrice": "string",
"vatRatePercent": null,
"discountPercent": null,
"lineDiscountMinor": "string",
"lineGrossMinor": "string",
"lineSubtotalMinor": "string",
"lineTaxMinor": "string",
"lineTotalMinor": "string"
}
],
"taxes": [
{
"name": "string",
"ratePercent": "string",
"amountMinor": "string",
"discountMinor": "string"
}
]
}