← Back to Blog
· 4 min read

How to Bulk Generate PDFs from CSV Data

Some forms aren’t filled once — they’re filled once per row of a spreadsheet. One 2316 per employee. One 2307 per supplier. One certificate per member, per payee, per whatever your client has hundreds of. The data already exists in payroll or books; the only “work” is transferring it into a PDF, row by row, by hand.

That transfer is exactly what bulk generation deletes. Here’s the full workflow.

The concept in one sentence

One template + one CSV = one filled PDF per row. The template defines where each field sits on the form; each CSV row supplies one form’s worth of values; the generator merges them.

One CSV row → one filled PDF
The template supplies the layout; each row supplies one form's values.
payroll_export.csv
name employee-tin
Dela Cruz, Juan 123-456-789
Santos, Maria 234-567-891
Reyes, Jose 345-678-912
+ 197 more rows
BIR 2316
2316_dela-cruz-juan.pdf
200 rows → 200 PDFs, zipped

Step 1 — Build the form template (once)

Upload the blank PDF form to BoltPDF. AI field detection finds every fillable field automatically and names it. Spend a few minutes reviewing:

  • Rename fields to match how you think (“Employee TIN”, “Gross Compensation”)
  • Set defaults for fields identical on every copy — employer name, employer TIN, RDO code, year. Defaults don’t need CSV columns at all.
  • Confirm field types (date, currency, number) so values format correctly.

This template is permanent. Next January, it’s already there.

Step 2 — Export clean data from the source

From payroll, books, or Excel: one row per output PDF, one column per field that varies. The discipline that pays off:

  • Start from the sample CSV. Download the template’s sample CSV from BoltPDF — it has the exact column headers the template expects, plus a name column that labels each row (use the employee or payee name). Columns whose headers match map automatically; anything else is ignored with a warning.
  • One value per column. Don’t pack “Dela Cruz, Juan, 123-456-789” into one cell; split name and TIN.
  • Text format for identifiers. Excel loves eating leading zeros in TINs and ZIP codes — format those columns as text before saving as CSV.
  • Consistent dates (pick one format and keep it).

If your payroll system can’t export this directly, build the sheet once and keep the formulas; quarterly re-exports become trivial.

Step 3 — Upload and check the import

Upload the CSV to the template. BoltPDF matches columns to fields by header and flags any unrecognized columns before importing. This is the moment to catch the classic mistakes: a column off by one, a stale header from last year’s file. Check a couple of imported rows — first and last — before generating.

Step 4 — Generate and review

Click generate. One filled PDF per row — 200 rows, 200 PDFs — named consistently and downloadable as a ZIP. Review like an accountant, not a robot: spot-check a few forms across the batch (first, middle, last), verify the fields that hurt if wrong (TINs, amounts, tax period), and reconcile the batch count against the source list.

Step 5 — Distribute and file

For 2316s: release to employees, collect signatures, submit per current BIR rules. For 2307s: send to payees. The PDFs are ordinary, print-ready files — nothing proprietary.


Where this pays off most

Use caseTypical volumeManual timeBulk time
January 2316s50–2,000/firm12 min eachminutes per batch
Quarterly 2307sdozens–hundreds5–8 min eachminutes
HR / membership certificatesvariesvariesminutes

The full time comparison breaks these down further, but the January 2316 case alone — 40+ hours manual vs an afternoon — is why most firms adopt bulk generation first and discover prefill for the monthly forms second.


BoltPDF turns any PDF form into a bulk-generation template. Try it free — your first batch will pay for the month.