Invoice Design
How to design invoices that customers can pay without questions and finance can reconcile without effort.
Why
An invoice is the most operational document in your business: the customer needs it to pay, their finance team needs it to reconcile, and your finance team needs it to recognize revenue. A bad invoice — missing the PO number, unclear line items, no tax breakdown — creates support tickets, delayed payments, and revenue recognition errors. A good invoice answers every question the customer's finance team might have before they ask: who is billing (your legal entity and address), what is being billed (clear line items with the plan and period), how much is the total (with tax broken out), when is it due, and how do they pay (a pay button or remit-to instructions). The most common mistake is using Stripe's default invoice template, which has generic line items like 'Pro plan — $29' without the billing period or the PO number. Customizing the template to include the period, PO number, and a clear tax breakdown reduces 'invoice question' support tickets by 80%.
When
At launch. Customize the Stripe invoice template before the first customer pays — retrofitting it later means re-issuing invoices to existing customers.
How
1. Customize the Stripe invoice template: add your legal entity name and address, a remit-to section, and a 'Questions? email [email protected]' line 2. Add custom fields: PO number (customer enters at checkout or in their billing settings), cost center, and any field their finance needs for reconciliation 3. Make line items clear: 'Pro plan — 25 projects, AI coding — Oct 1 to Nov 1' not 'Pro plan — $29' — the period and features must be visible 4. Break out tax by jurisdiction: 'Subtotal $29.00, VAT (Germany, 19%) $5.51, Total $34.51' — do not bundle tax into the price; finance needs the breakdown 5. Add a pay button on the invoice (Stripe Payment Links) for card payment, and include remit-to instructions (bank wire, ACH) for customers who pay by invoice 6. Set invoice numbering to be sequential and gapless (Stripe does this by default) — gaps in numbering make finance teams suspect missing invoices 7. Send invoices as PDF attachments (not just a link) — finance teams file PDFs in their system; a link-only invoice gets lost 8. For enterprise customers on net-30 terms, send the invoice 30 days before the renewal date, not on the renewal date — this gives them time to process and pay on time
Example
# Stripe invoice customization
const invoice = await stripe.invoices.create({
customer: customerId,
custom_fields: [
{ name: "PO Number", value: customer.poNumber },
{ name: "Cost Center", value: customer.costCenter },
],
description: "EZ4Code Pro — 25 projects, AI coding, priority support",
footer: "EZ4Code Inc. — 123 Main St, San Francisco, CA 94105 — Questions? [email protected]",
});
# Invoice layout (what the customer sees)
# EZ4Code Inc.
# 123 Main St, San Francisco, CA 94105
#
# Invoice #INV-2025-0042 Date: Oct 1, 2025 Due: Oct 31, 2025
# PO Number: ACME-2025-PO-123
#
# Description Period Amount
# Pro plan — 25 projects, AI coding Oct 1 - Nov 1 $29.00
# Subtotal $29.00
# VAT (19%) $5.51
# Total $34.51
#
# [Pay now with card] Remit to: ACH 123456789 / Bank EZ4CodeCommon Problems
- ⚠Using Stripe's default invoice with generic line items — 'Pro plan — $29' does not show the billing period or features, so the customer's finance team asks 'what is this for'. Customize the line item description.
- ⚠Bundling tax into the price — 'Pro plan — $34.51 (tax included)' makes the customer's finance team unable to reclaim VAT, and they ask for a corrected invoice. Break out tax by jurisdiction.
- ⚠Sending invoice links instead of PDFs — finance teams file PDFs in their AP system; a link-only invoice gets lost in email and the payment is late. Always attach the PDF.
Best Practices
- ✓Customize the Stripe invoice template with legal entity, PO number field, clear line items (plan + period + features), and tax breakdown — this answers finance's questions before they ask.
- ✓Send invoices as PDF attachments, not just links — finance teams file PDFs in their AP system, and a link-only invoice gets lost and paid late.
- ✓For net-30 enterprise customers, send the invoice 30 days before renewal — this gives their AP team time to process and pay on time, reducing your days-sales-outstanding.