When to use this
Monthly subscription billing, usage invoices, one-off B2B charges. The reader is often not the person who bought your product: it's an accounts-payable inbox, a finance team, sometimes an automated AP system that files by invoice number. Write for that reader. Amount, due date, and invoice number should be visible without clicking anything, because "open the portal to find out what you owe" is how invoices get parked for weeks.
The attachment question
The instinct is to attach a PDF. I'd push back on defaulting to that. Fake-invoice attachments are one of the oldest fraud vectors in email, and corporate gateways treat unexpected billing attachments with suspicion your legitimate PDF inherits. A hosted invoice behind a button, with the key numbers in the email body, delivers more reliably, stays updateable if you fix a line item, and gives finance a stable URL to file. If your customers' AP process genuinely requires attached PDFs, attach them, but that should be a per-customer decision, not the default.
The template
Copy-ready, table-based so it renders everywhere, inline styles only. Swap the {{placeholders}} for your values or your template engine's variables.
<!DOCTYPE html>
<html lang="en">
<body style="margin:0;padding:0;background:#f4f5f7;font-family:Arial,Helvetica,sans-serif;">
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" style="background:#f4f5f7;padding:24px 0;">
<tr><td align="center">
<table role="presentation" width="480" cellpadding="0" cellspacing="0"
style="background:#ffffff;border-radius:8px;padding:32px;">
<tr><td style="font-size:18px;font-weight:bold;color:#111;padding-bottom:14px;">
{{company_name}}
</td></tr>
<tr><td style="font-size:15px;color:#444;line-height:1.6;padding-bottom:16px;">
Invoice {{invoice_number}} for {{billing_period}} is ready.
</td></tr>
<tr><td style="padding-bottom:16px;">
<table role="presentation" width="100%" cellpadding="0" cellspacing="0"
style="background:#f8f9fa;border-radius:6px;padding:14px 16px;">
<tr>
<td style="font-size:13px;color:#666;">Amount due</td>
<td align="right" style="font-size:16px;font-weight:bold;color:#111;">{{amount_due}}</td>
</tr>
<tr>
<td style="font-size:13px;color:#666;padding-top:6px;">Due date</td>
<td align="right" style="font-size:13px;color:#111;padding-top:6px;">{{due_date}}</td>
</tr>
</table>
</td></tr>
<tr><td align="center" style="padding-bottom:20px;">
<a href="{{invoice_url}}"
style="display:inline-block;background:#111;color:#ffffff;text-decoration:none;
font-size:15px;font-weight:bold;border-radius:6px;padding:13px 28px;">
View and download invoice
</a>
</td></tr>
<tr><td style="font-size:12px;color:#888;line-height:1.6;">
Questions about this invoice? Reply to this email or contact
{{billing_contact_email}}. Please reference {{invoice_number}}.
</td></tr>
</table>
<table role="presentation" width="480" cellpadding="0" cellspacing="0">
<tr><td style="font-size:11px;color:#999;padding:16px 8px;text-align:center;">
Sent by {{company_name}} · {{company_address}}
</td></tr>
</table>
</td></tr>
</table>
</body>
</html>Deliverability: the half that actually fails
An invoice that lands in spam becomes a late payment, then a dunning sequence, then an awkward "we never received it" call. And billing mail is judged harshly precisely because criminals imitate it constantly. Authentication is not optional here: an invoice email whose SPF, DKIM, and DMARC don't align looks exactly like the fraud the filters were built to catch. Send from a consistent, authenticated address that finance teams can safelist once and trust forever, and never rotate billing from-addresses for cosmetic reasons.
Billing mail belongs on your transactional stream, isolated from marketing, with its reputation watched continuously. If invoices are already going missing, don't start with the design. Run the free deliverability check; billing failures are nearly always authentication or reputation, not layout.
Related
- Payment receipt template: the email after this one gets paid
- Order confirmation template: the consumer cousin of the invoice
- SPF, DKIM & DMARC setup: the authentication invoices live or die by
- Transactional Email Service: the sending layer for billing mail