Billing and receivables / A4
Overdue payment reminder letter template
A letter chasing an overdue invoice, stating how overdue it is, where the account sits in an escalation ladder, and what happens next.
When this document is the right one
An invoice passes its due date. This is a letter rather than a statement because the audience is a person who has to act, and the tone at day seven and at day sixty are different documents even though the amount is the same.
Why each part is there
The fields are visible in the markup. What is not visible is why they are present, which is the part that gets removed first when someone adapts a template for their own use.
- The stage, said plainly. A reader who cannot tell a first reminder from a final notice cannot prioritise it correctly.
- A single table with the invoice, the dates and the days overdue, so the fact is not buried in a paragraph.
- An explicit escape hatch for a payment already in flight, because sending a chaser to someone who paid yesterday damages a relationship for nothing.
- An invitation to dispute one line rather than hold the whole invoice, which is the single most effective sentence in a collections letter.
- What happens at the next stage, stated as a fact rather than as a threat.
The template
A complete file. Doctype, stylesheet, body: paste it into a renderer unchanged and it produces a finished A4 page. Replace the sample data and the styling holds.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Payment reminder, INV-2026-0092</title>
<style>
@page { size: A4; margin: 25mm 22mm 22mm; }
* { box-sizing: border-box; }
body { margin: 0; font: 10.5pt/1.6 Georgia, "Times New Roman", serif; color: #14110d; }
.letterhead { display: flex; justify-content: space-between; align-items: flex-start;
border-bottom: 1px solid #14110d; padding-bottom: 5mm; }
.brand { font: 700 14pt/1 Arial, sans-serif; letter-spacing: -0.01em; }
.contact { text-align: right; font: 8.5pt/1.5 Arial, sans-serif; color: #5a5348; }
/* The recipient address sits where a DL window shows it after a three fold:
20mm from the left edge, 45mm from the top of the unfolded sheet. */
.recipient { position: absolute; left: 20mm; top: 45mm; width: 85mm; }
address { font-style: normal; }
.body { margin-top: 42mm; }
.date { text-align: right; margin-bottom: 8mm; font: 9.5pt Arial, sans-serif; }
h1 { font: 700 11.5pt/1.4 Arial, sans-serif; margin: 0 0 5mm; }
.overdue-box { border: 1.5px solid #14110d; padding: 4mm 5mm; margin: 6mm 0;
break-inside: avoid; }
.overdue-box table { width: 100%; border-collapse: collapse;
font: 9.5pt Arial, sans-serif; }
.overdue-box th { text-align: left; font-size: 8pt; text-transform: uppercase;
letter-spacing: 0.06em; color: #5a5348; padding-bottom: 1.5mm; }
.overdue-box td { padding: 1.5mm 0; border-top: 1px solid #ddd8cc; }
.num { text-align: right; font-variant-numeric: tabular-nums; }
.due { font-size: 13pt; font-weight: 700; }
/* Escalation ladder. The tone of a first reminder and a final notice differ,
and the difference belongs in the template rather than in an ad-hoc email. */
.stage { font: 8.5pt/1.4 Arial, sans-serif; color: #5a5348; margin-top: 2mm; }
.sign { margin-top: 12mm; }
.sign .name { margin-top: 16mm; font-weight: 700; }
footer { position: running(pagefoot); }
</style>
</head>
<body>
<div class="letterhead">
<div class="brand">Northgate Supply Co.</div>
<div class="contact">
18 Wharf Road, Bristol BS1 4RN<br>
ar@northgate.example · 0117 440 2288
</div>
</div>
<div class="recipient">
<address>
Accounts Payable<br>
Calder Interiors Ltd<br>
7 Meridian Court<br>
Leeds<br>
LS11 5AL
</address>
</div>
<div class="body">
<div class="date">14 May 2026</div>
<h1>Second reminder: invoice INV-2026-0092 is 31 days overdue</h1>
<p>
Our records show that the invoice below has not been paid and is now past its
due date by more than thirty days. If payment has been sent in the last few
days, please treat this letter as closed and let us know the payment reference
so we can allocate it.
</p>
<div class="overdue-box">
<table>
<tr>
<th>Invoice</th><th>Issued</th><th>Due</th>
<th class="num">Days overdue</th><th class="num">Amount</th>
</tr>
<tr>
<td>INV-2026-0092</td><td>13 Mar 2026</td><td>12 Apr 2026</td>
<td class="num">31</td><td class="num due">GBP 1,744.80</td>
</tr>
</table>
<div class="stage">
Stage 2 of 3. A final notice is issued at 60 days, after which the account is
placed on hold and the balance passed for recovery.
</div>
</div>
<p>
Payment by bank transfer to sort code 20-14-88, account 41338207, quoting
INV-2026-0092. If there is a query on this invoice, please tell us what it is
rather than holding the whole amount: a disputed line can be credited within a
day and the rest settled meanwhile.
</p>
<p>
Statutory interest and a fixed recovery charge become payable on commercial
debts under the Late Payment of Commercial Debts (Interest) Act 1998. We have
not applied either to this account.
</p>
<div class="sign">
Yours faithfully,
<div class="name">Marion Ellery</div>
Credit Control, Northgate Supply Co.
</div>
</div>
</body>
</html>The layout decision worth understanding
The recipient address is absolutely positioned at 20mm from the left and 45mm from the top of the sheet, which is where it appears in a standard DL window envelope after two folds. A chaser is one of the few documents still posted, and getting that position wrong means printing envelopes separately.
The mistake people make adapting it
Applying statutory interest in the letter without having decided to actually pursue it. Stating it and then not charging it teaches the customer that the ladder has no rungs, which makes the next reminder weaker than this one.
Rendering it
The page box is declared in the template's own CSS as A4, so the size travels with the markup rather than living in the code that calls the renderer. A4 is also one of the six named formats the API accepts, so it can be passed in the request options instead if that suits your setup better.
curl -X POST https://api.pdfpipe.xyz/v1/pdf \
-H "Authorization: Bearer $PDFPIPE_KEY" \
-H "Content-Type: application/json" \
-d '{
"html": "<!doctype html>...",
"options": { "format": "A4" }
}' \
--output payment-reminder.pdfFrequently asked
Can I use this template commercially?
Yes. Copy it, change it, ship it. It is sample markup written to be taken, and the sample data in it is invented, so replace the names and the numbers before anyone sees it.
Why is the page size in the CSS rather than in the API call?
Because a payment reminder is a A4 document, and that is a property of the document rather than of the code that renders it. Declaring it in the page box means the size cannot be lost between the template and the call, which is the usual way a document ends up on the wrong paper.
Will it look the same in every renderer?
The layout will, because it uses ordinary CSS. The page break behaviour will not: break-inside and break-after are implemented differently by browser engines and by dedicated print engines, and some of the paged media specification is not implemented in browser renders at all. That difference is documented per property in the paged CSS reference.
Other templates
Documents from the same part of a business, and one from each of the other groups.
HTML invoice template with CSS
The standard commercial invoice: a demand for payment with line items, a tax figure, and terms that say when the money is due.
EU VAT invoice HTML template
A cross-border invoice inside the EU, with both parties' VAT identification numbers, tax broken out per rate, and a reverse charge statement.
GST tax invoice HTML template for India
An Indian tax invoice with GSTIN for both parties, HSN codes per line, and tax split into CGST and SGST or charged as IGST depending on the place of supply.
Commercial invoice template for customs
The customs document that travels with an international shipment: what the goods are, what they are worth, where they were made, and under what terms they move.
Payment receipt HTML template
Proof that a payment was made: the amount, the payment reference, the method, and what it was for.
Quotation HTML template with CSS
A priced proposal with a validity date, a scope, optional items kept out of the headline total, and somewhere to sign.
Packing slip HTML template
The document that goes in the box: what was ordered, what was actually shipped, and no prices at all.
Every template
The full set, grouped by what part of a business produces the document.
A4 page size for PDF generation
A4 is the default page for business documents everywhere except North America, and the default this API uses when no format is given.
Paste the template into the playground and get the PDF back. No signup, no key.