Turning a spreadsheet into finished PDF invoices comes down to three steps: structure the data with one row per line item grouped by invoice number, map your columns to invoice fields once, then generate. This is the general workflow — the tool you use to do it matters less than getting the structure right first.
Why start from a spreadsheet at all
If your billing data already exists — a shop's order export, a membership list, a roster you maintain by hand — a spreadsheet is usually already the most complete, most structured copy of it you have. The workflow below treats that spreadsheet as the source of truth, instead of retyping from it into a separate invoicing form.
Step 1: Structure the data
The layout that works across most bulk invoicing tools, including BulkyGen: one row per line item, with rows for the same invoice sharing the same invoice number. Client name, dates, email, and address only need to be filled in on the first row of each group — they carry forward from there. A three-line-item invoice is three rows; a one-line invoice is one row.
Step 2: Map columns to fields
Your spreadsheet's column headers rarely match an invoicing tool's field names exactly — "Client" instead of "Client Name," "Qty" instead of "Quantity." A column-mapping step (ideally one that suggests a mapping automatically and lets you correct it) means you don't have to rename your own columns to match someone else's naming convention. Do this once per header layout — most tools that support it will remember the mapping for the next file with the same headers.
Step 3: Validate before generating
Before any PDF gets written, check for the things that break invoices silently: a missing rate, a date in a format that doesn't parse, a discount larger than the line it applies to, two rows with the same invoice number by accident. Catching these before generation means fixing a spreadsheet cell, not regenerating and resending a wrong PDF after a client's already seen it.
Step 4: Generate and check the output
One pass through validated data should produce one PDF per invoice number, named predictably enough that you can find "the March invoice for this client" without opening files one by one. Spot-check a couple before sending the whole batch — a batch process only ever generates what the input asked for, correct or not.
Common friction points
- Date formats. Spreadsheet dates are a frequent source of "invoice didn't generate" — confirm which formats your tool accepts before you build a whole month's sheet around the wrong one.
- Currency symbols in number cells. A good parser strips "$1,234.50" down to a usable number automatically; a strict one won't, and will error on every row.
- Mixed currencies within one invoice. Usually a data-entry slip rather than intentional — worth a warning, not a silent average.
Doing this with BulkyGen
BulkyGen implements exactly this workflow: reads .xlsx or .csv, fuzzy-matches your headers to invoice fields and remembers the mapping, validates every row with a clear message per problem, then generates the whole batch as branded PDFs in one run — offline, on your own machine. See preparing a spreadsheet for bulk invoicing to set up the file, or your first bulk run to go end to end.