Statement of account
Customer statement for a period: balance-due panel with opening, invoiced, paid and closing balances, an activity table with a running balance, an optional aging summary and payment instructions. Multi-page with a repeating table header.
statement.pdf1 page

Rendered by the engine from the sample data below.
Render it
curl "https://api.quirepdf.dev/v1/render?template=statement" \
-H "Authorization: Bearer $QUIRE_API_KEY" \
-H "Content-Type: application/json" \
-d @statement.json -o statement.pdfimport { Quire, type StatementData } from "quirepdf";
const data: StatementData = { /* … */ };
const pdf = await new Quire().render(data, { template: "statement" });from quirepdf import Quire
Quire().render(data, template="statement").save("statement.pdf")npx quirepdf-cli templates statement --sample > statement.json
npx quirepdf-cli render statement.json -t statementEdit the sample in the playground
Fields
Required at the top level: date, period, opening_balance, seller, customer, entries. Everything else is optional.
| Field | Type | Notes |
|---|---|---|
dateRequired | string | Statement date, pre-formatted for display, e.g. 30 Sep 2026 |
periodRequired | string | Statement period, pre-formatted, e.g. 1 Sep – 30 Sep 2026 |
due_date | string | When the balance is due, pre-formatted for display |
status | "due" | "overdue" | "paid" | "credit" | Badge next to the balance. Defaults to 'due' when the closing balance is positive, 'paid' when it is zero and 'credit' when it is negative. |
currency | string | Currency symbol prefix |
accent | string | Brand colour, e.g. #b45309 |
opening_balanceRequired | number | Balance at the start of the period. Negative means the customer is in credit. |
sellerRequired | object | The business issuing the statement. The address is shown under 'Remit to'. |
seller.nameRequired | string | |
seller.email | string | Shown under the brand name |
seller.address | string[] | |
customerRequired | object | The account holder (shown as 'Statement for') |
customer.nameRequired | string | |
customer.company | string | |
customer.account | string | Customer account number |
customer.address | string[] | |
customer.email | string | |
entriesRequired | object[] | Activity in the period, oldest first. The running balance is computed from opening_balance. Put invoices and debits in 'charge', payments and credits in 'payment'. |
entries[].dateRequired | string | Pre-formatted, e.g. 4 Sep |
entries[].reference | string | e.g. INV-2026-0431 |
entries[].descriptionRequired | string | |
entries[].charge | number | |
entries[].payment | number | |
aging | object | Outstanding balance by age |
aging.currentRequired | number | |
aging.days_1_30Required | number | |
aging.days_31_60Required | number | |
aging.days_61_90Required | number | |
aging.days_90_plusRequired | number | |
payment | object | Payment instructions |
payment.method | string | |
payment.link | string | |
payment.bank | string | |
payment.reference | string | Reference the customer should quote when paying |
notes | string |
statement.jsonShow sample data
{
"date": "30 Sep 2026",
"period": "1 Sep – 30 Sep 2026",
"due_date": "15 Oct 2026",
"currency": "$",
"accent": "#b45309",
"opening_balance": 1840.5,
"seller": {
"name": "Fernwood Coffee Roasters",
"email": "accounts@fernwood.coffee",
"address": [
"1180 Industrial Way, Unit 6",
"Portland, OR 97210",
"United States"
]
},
"customer": {
"name": "Daniel Okafor",
"company": "Little Owl Café",
"account": "WS-00418",
"address": [
"402 Hawthorne Boulevard",
"Portland, OR 97214"
],
"email": "daniel@littleowl.cafe"
},
"entries": [
{
"date": "2 Sep",
"reference": "PAY-8812",
"description": "Payment received — thank you",
"payment": 1840.5
},
{
"date": "4 Sep",
"reference": "INV-0431",
"description": "Wholesale order — House espresso blend, 24 kg",
"charge": 528
},
{
"date": "8 Sep",
"reference": "INV-0437",
"description": "Wholesale order — Ethiopia Guji single origin, 10 kg",
"charge": 312.5
},
{
"date": "11 Sep",
"reference": "INV-0440",
"description": "Grinder service visit",
"charge": 145
},
{
"date": "15 Sep",
"reference": "PAY-8907",
"description": "Payment received — thank you",
"payment": 528
},
{
"date": "18 Sep",
"reference": "INV-0446",
"description": "Wholesale order — House espresso blend, 24 kg",
"charge": 528
},
{
"date": "19 Sep",
"reference": "CN-0019",
"description": "Credit — two bags damaged in transit",
"payment": 44
},
{
"date": "22 Sep",
"reference": "INV-0452",
"description": "Barista training, half day (3 staff)",
"charge": 260
},
{
"date": "25 Sep",
"reference": "INV-0455",
"description": "Wholesale order — Swiss water decaf, 6 kg",
"charge": 151.2
},
{
"date": "29 Sep",
"reference": "PAY-8990",
"description": "Payment received — thank you",
"payment": 457.5
},
{
"date": "30 Sep",
"reference": "INV-0461",
"description": "Wholesale order — House espresso blend, 24 kg",
"charge": 528
}
],
"aging": {
"current": 1207.2,
"days_1_30": 216,
"days_31_60": 0,
"days_61_90": 0,
"days_90_plus": 0
},
"payment": {
"method": "ACH transfer or card",
"link": "pay.fernwood.coffee/WS-00418",
"bank": "Fernwood Coffee LLC · Acct 7710 2245 · Routing 123006800",
"reference": "WS-00418"
},
"notes": "Thanks for another great month, Daniel. Orders placed before 2 pm ship the same day."
}