Invoice PDF template for CSV billing runs
Generate polished invoice PDFs from CSV exports with customer details, billing periods, payment terms, tax rows, and totals already wired into Liquid.
Template ingredients
- CSV fields
- 10 mapped columns
- Liquid steps
- 4 setup steps
- Industries
- SaaS, B2B services, Finance operations
This invoice template turns a billing export into a clean PDF that finance teams can send without rebuilding the layout for every customer. Each CSV row represents one invoice and includes the invoice number, account name, billing contact, plan, service period, subtotal, tax, total, payment terms, and due date. The Liquid HTML keeps those fields visible in predictable places: a header for customer context, a compact summary for amounts, and a payment block that tells the recipient exactly what to do next.
Use the template when your spreadsheet or billing system already holds the truth but the final document needs to feel deliberate. Operators can export rows from Stripe, a CRM, or an internal billing sheet, then adjust the column names or Liquid variables before previewing. The structure also leaves room for purchase order fields, bank transfer instructions, local tax labels, and regional footer copy while keeping the data contract simple enough to audit before a large batch.
Sample CSV
| invoice_number | customer_name | billing_contact | plan | period | payment_terms | subtotal | tax | total | due_date |
|---|---|---|---|---|---|---|---|---|---|
| INV-2026-041 | Acme Analytics | Jordan Lee | Pro | Apr 2026 | Net 15 | 490.00 | 98.00 | 588.00 | 2026-05-15 |
| INV-2026-042 | Northstar Labs | Sam Rivera | Team | Apr 2026 | Net 15 | 1290.00 | 258.00 | 1548.00 | 2026-05-15 |
Sample Liquid
<article class="invoice">
<header>
<p class="eyebrow">Invoice {{ invoice_number }}</p>
<h1>{{ customer_name }}</h1>
<p>Billing contact: {{ billing_contact }}</p>
</header>
<table>
<thead>
<tr>
<th>Plan</th>
<th>Period</th>
<th>Total due</th>
</tr>
</thead>
<tbody>
<tr>
<td>{{ plan }}</td>
<td>{{ period }}</td>
<td>{{ total | prepend: "$" }}</td>
</tr>
</tbody>
</table>
<footer>
<p>Subtotal: {{ subtotal | prepend: "$" }}</p>
<p>Tax: {{ tax | prepend: "$" }}</p>
<p>Terms: {{ payment_terms }}</p>
<strong>Payment due {{ due_date }}</strong>
</footer>
</article>How to use this template
- 1
Match your CSV columns
Export invoice rows from your billing system and rename the columns to match the sample CSV, or update the Liquid variables to match your existing headers.
- 2
Preview a few invoices
Upload the CSV in DocForge, render two or three rows, and check customer details, totals, due dates, and tax labels before starting the full batch.
- 3
Fork the Liquid for your brand
Adjust the header, payment instructions, footer copy, and table labels so the generated PDFs match the way your finance team already communicates with customers.
- 4
Generate the batch
Run the full CSV once the preview looks right, then download the generated invoice PDFs for review, upload, or email distribution.