Examples
Worked invoices.
The rendered invoice on this site is built by the format as the site is published. This page is the front matter behind it, and two variations.
The invoice on this site
title: "Consultancy, May 2026"
description: "Strategy workshop and follow-up report."
format:
invoice-typst:
lang: en
region: GB
papersize: a4
sender:
name: "Example Consulting Ltd"
email: "accounts@example.com"
registration: "12345678"
vat: "GB123456789"
address:
street: "35 Anthony Road"
zip: "IP3 5RT"
city: "Ipswich"
country: "United Kingdom"
recipient:
name: "Director Doe & Co"
address:
street: "1 Example Street"
zip: "EC1A 1BB"
city: "London"
country: "United Kingdom"
invoice:
number: "INV-2026-001"
issued: 2026-05-01
due: 2026-05-31
reference: "ACME-2026-001"
currency: GBP
items:
- description: "Strategy workshop"
details: "Two-day on-site facilitation."
quantity: 2
unit-price: 1500
vat: 20
- description: "Follow-up report"
quantity: 1
unit-price: 850
vat: 20
bank:
bic: "EXAMPGB2L"
iban: "GB00 EXAM 0000 0000 0000 00"The document body is empty: with invoice.items set, the totals table takes its place.
A branded invoice
brand:
typography:
fonts:
- family: Alegreya Sans
source: google
weight: [400, 700]
style: [normal, italic]
base:
family: "Alegreya Sans"
size: 12pt
headings:
family: "Alegreya Sans"
color: dodgerblue
format:
invoice-typst:
logo: logo.pngThe format reads _brand.yml for typography and heading colour, so an invoice matches the rest of a practice’s documents without a separate theme.
A hand-written table
Leave invoice.items out and the body is rendered in its place:
---
format:
invoice-typst:
sender:
name: "Example Consulting Ltd"
recipient:
name: "Director Doe & Co"
invoice:
number: "INV-2026-002"
issued: 2026-05-01
due: 2026-05-31
reference: "ACME-2026-002"
currency: GBP
bank:
bic: "EXAMPGB2L"
iban: "GB00 EXAM 0000 0000 0000 00"
---
```{=typst}
#table(
columns: 3,
[*Item*], [*Quantity*], [*Amount*],
[Consultancy], [1], [£1,200.00],
)
```Nothing is computed in that case; the table is yours.
Late payment terms
invoice:
fee: 5
penalty: "£40"fee is a percentage. penalty is set as written, so give it with its currency symbol, or with a statutory wording in place of an amount. Leaving it out gives the literal €40, whatever the invoice currency.
A title above the totals
title: "Consultancy, May 2026"
description: "Strategy workshop and follow-up report."The title is set as a heading above the totals table, and the description in italics under it. The description is read only when there is a title.
Source
The repository ships a complete starting point you can copy: template.qmd, and a branded example under examples/.