Sheet to PDF
Help · Use cases · Invoices

Generate invoices in bulk

If you bill multiple clients each month, generating invoices manually is a chore. Here's how to ship 100 invoices in 5 minutes.

The setup (one-time, 10 minutes)

1. Build your invoice template

Use the built-in Invoice (EU) template (free) or Smart invoice (Starter+, auto-hides VAT when 0).

Customize it with your company info, logo, bank details, footer text.

2. Create your billing sheet

One row per invoice. Suggested columns:

Client | ClientAddress | Email | InvoiceNumber | Date | DueDate | Description | Amount | VAT | Total

3. Test with one row

Open the sidebar, pick the template, generate just one PDF. Verify the layout, VAT calc, dates. Adjust the template if anything's off.

The monthly workflow (5 minutes)

  1. Update the sheet — add this month's rows (or duplicate last month's and modify amounts)
  2. Open the sidebar — Sheet to PDF detects the new rows automatically
  3. Click Generate — wait ~10 seconds per invoice
  4. (Pro) Email automatically — enable "Email each PDF" with the Email column. Subject: Invoice {{InvoiceNumber}}. Body: a short note. Each client gets their invoice delivered, no manual sending.

Common variations

Multi-line invoices (different items per client)

Use the Multi-item quote template style (Pro+) with a JSON column for line items. One row can contain multiple items.

Invoice numbering

Use a formula in your sheet to auto-increment: =COUNTA(A$2:A2) + 1000 in the InvoiceNumber column gives you sequential 1001, 1002, 1003…

VAT for some clients, not others

Use the Smart invoice template. Put VAT=0 for clients in non-VAT regions — the line auto-hides.

Multi-currency

Add a Currency column to your sheet (EUR, USD, GBP). Use the currency filter in your template: {{ Amount | currency:Currency }}.

Integrations

Accounting software (Xero, QuickBooks, etc.)

After generation, the sheet has a "PDF link" column with each invoice's Drive URL. You can import these into your accounting software via their CSV import, or use a tool like Zapier to push the URLs.

Auto-reminders for unpaid invoices

Add a PaidDate column. When you run the next batch, use a smart template's {% if PaidDate == "" %} block to add a "URGENT - PAY NOW" badge on unpaid ones.