Credit note
Credit note against an earlier invoice: credit-amount panel with issued/applied/refunded status, original invoice reference and reason, credited line items, tax and how the credit will be applied.
credit-note.pdf1 page

Rendered by the engine from the sample data below.
Render it
curl "https://api.quirepdf.dev/v1/render?template=credit-note" \
-H "Authorization: Bearer $QUIRE_API_KEY" \
-H "Content-Type: application/json" \
-d @credit-note.json -o credit-note.pdfimport { Quire, type CreditNoteData } from "quirepdf";
const data: CreditNoteData = { /* … */ };
const pdf = await new Quire().render(data, { template: "credit-note" });from quirepdf import Quire
Quire().render(data, template="credit-note").save("credit-note.pdf")npx quirepdf-cli templates credit-note --sample > credit-note.json
npx quirepdf-cli render credit-note.json -t credit-noteEdit the sample in the playground
Fields
Required at the top level: number, issued, original_invoice, seller, customer, items. Everything else is optional.
| Field | Type | Notes |
|---|---|---|
numberRequired | string | Credit note number, e.g. CN-2026-0019 |
status | "issued" | "applied" | "refunded" | |
issuedRequired | string | Issue date, pre-formatted for display |
currency | string | Currency symbol prefix |
accent | string | Brand colour, e.g. #7048e8 |
original_invoiceRequired | object | The invoice this credit is issued against |
original_invoice.numberRequired | string | |
original_invoice.date | string | Original invoice date, pre-formatted for display |
original_invoice.amount | number | Original invoice total |
reason | string | Why the credit was issued |
sellerRequired | object | The business issuing the credit (shown as 'From') |
seller.nameRequired | string | |
seller.email | string | Shown under the brand name |
seller.address | string[] | |
seller.tax_id | string | |
customerRequired | object | The customer receiving the credit (shown as 'Billed to') |
customer.nameRequired | string | |
customer.company | string | |
customer.address | string[] | |
customer.email | string | |
itemsRequired | object[] | Credited lines. Use positive quantities and prices; they are shown as credit. |
items[].descriptionRequired | string | |
items[].detail | string | |
items[].qtyRequired | number | |
items[].unit_priceRequired | number | |
tax | object | Tax credited back, applied to the subtotal |
tax.labelRequired | string | |
tax.rateRequired | number | |
application | string | How this credit will be applied, e.g. refunded to the original card |
notes | string |
credit-note.jsonShow sample data
{
"number": "CN-2026-0019",
"status": "issued",
"issued": "3 Oct 2026",
"currency": "€",
"accent": "#7048e8",
"original_invoice": {
"number": "INV-2026-0311",
"date": "1 Sep 2026",
"amount": 2856
},
"reason": "Two of the five workshop seats were cancelled before the start date, and the September hosting overage was billed in error after the plan upgrade.",
"seller": {
"name": "Atelier Lumière",
"email": "factures@atelier-lumiere.fr",
"address": [
"18 Rue des Martyrs",
"75009 Paris",
"France"
],
"tax_id": "TVA FR 40 812 345 678"
},
"customer": {
"name": "Sofia Lindqvist",
"company": "Nordljus Interiör AB",
"address": [
"Götgatan 42",
"116 21 Stockholm",
"Sweden"
],
"email": "ekonomi@nordljus.se"
},
"items": [
{
"description": "Colour & light workshop — seat",
"detail": "Cancelled seats, 14–15 Sep 2026",
"qty": 2,
"unit_price": 380
},
{
"description": "Hosting overage",
"detail": "Billed in error, September 2026",
"qty": 1,
"unit_price": 145.5
},
{
"description": "Printed course materials",
"detail": "Not dispatched",
"qty": 2,
"unit_price": 42
}
],
"tax": {
"label": "VAT (20%)",
"rate": 0.2
},
"application": "This credit will be applied automatically to your next invoice. If you would prefer a refund to the original payment method, reply to this email within 30 days.",
"notes": "We are sorry for the inconvenience. Questions? Write to factures@atelier-lumiere.fr."
}