How to generate bulk invoices from a spreadsheet
Generating hundreds of invoices one by one is a miserable way to spend a morning. If you bill a stable list of clients for similar services every month, you can automate the entire process using a spreadsheet and a document template.
Before you begin, you must understand exactly what a bulk document generator like ManyDocs does. It takes values from your spreadsheet and drops them into a template. It does not calculate totals. It does not apply tax rates, track unpaid balances, or recalculate formulas. Every piece of arithmetic—net amounts, tax calculations, and final totals—must happen in your spreadsheet before you generate the documents.
This approach is highly effective for repeating monthly batches. If you manage retainer invoices, club memberships, tuition fees, commercial rent, or software subscriptions, bulk generation saves hours.
It is the wrong tool for complex, variable invoices. If every client buys a different, unpredictable combination of ten separate line items, a one-row-to-one-document merge will struggle to format that cleanly.
Doing the arithmetic in your spreadsheet
Your spreadsheet is the brain of the operation. Because the document generator will not do any math, every number you want printed on the final invoice must exist in its own column.
Set up your spreadsheet with columns for the base price, the tax rate, the calculated tax amount, and the final gross total. If your local regulations require the total amount to be written out in words (such as "Four thousand dollars"), you need a column for that as well.
Here is an example of how your spreadsheet should look before generation:
| InvoiceNumber | ClientName | Description | NetAmount | TaxAmount | GrossTotal | DueDate |
|---|---|---|---|---|---|---|
| INV-2026-101 | Apex Corp | Monthly Retainer | $4,000.00 | $800.00 | $4,800.00 | 14 Oct 2026 |
| INV-2026-102 | Beta Ltd | Monthly Retainer | $2,500.00 | $500.00 | $3,000.00 | 14 Oct 2026 |
| INV-2026-103 | Gamma Inc | Server Hosting | $850.00 | $170.00 | $1,020.00 | 14 Oct 2026 |
| INV-2026-104 | Delta LLC | Monthly Retainer | $4,000.00 | $800.00 | $4,800.00 | 14 Oct 2026 |
The column headers in the first row are critical. They must exactly match the placeholder names you will type into your Word template. Do not leave empty rows at the top, and do not use merged cells for your headers.
Locking in your numbers
ManyDocs reads the raw values stored in your spreadsheet cells. It does not recalculate Excel formulas. If you leave a formula like =D2*0.2 in the TaxAmount column, you risk the generator pulling an unexpected internal value or a blank.
You must convert all formula results to static text values before you generate your invoices.
- Highlight all the cells containing formulas.
- Copy them (Ctrl+C or Cmd+C).
- Right-click the same selection and choose Paste Special.
- Select Values and click OK.
Your cells now contain hardcoded numbers instead of equations. The document generator will read these values exactly as they are.
Formatting currency and decimals
Spreadsheet software often tricks you visually. You might type 4000 into a cell, and Excel displays it as $4,000.00 because you applied a currency format. When ManyDocs reads that cell, it sees the raw 4000.
If you map that raw number to your invoice, it prints as 4000, lacking the currency symbol, the thousands separator, and the decimal places.
To fix this, write the formatting directly into the text of the cell. The most reliable way to do this for a large batch is to use Excel's TEXT function in a new column.
If column D holds your raw net amount, create a new column called FinalNetAmount and use this formula: =TEXT(D2, "$#,##0.00"). This forces the spreadsheet to output a text string that includes the dollar sign and the commas. Once you have done this for all your rows, copy that new column and Paste Special as Values.
Invoice numbering and file names
Every invoice needs a unique sequential number. Building this in your spreadsheet guarantees you never accidentally issue the same invoice number twice.
Use a simple concatenation formula to build professional invoice numbers. For example, ="INV-2026-" & A2 (where A2 holds a sequential number like 101) produces INV-2026-101. Paste this as values when you are done.
This invoice number column serves a second, equally important purpose: naming your output files.
When you load your template and spreadsheet into ManyDocs, it asks how you want to name the generated files. If you leave it on the default setting, you get a ZIP file containing document-1.docx, document-2.docx, and so on. This is useless for an accounting run.
Instead, tell the generator to use your InvoiceNumber column for the file names. The resulting ZIP file will extract into a folder of beautifully organised files: INV-2026-101.docx, INV-2026-102.docx, ready to be filed or sent.
The single-line invoice template
With your spreadsheet prepared, build your Word document template. You only need to design this once. Type your standard invoice layout, and wherever a piece of data changes per client, insert a placeholder that matches your spreadsheet headers.
ManyDocs supports three placeholder styles: ((field)), {{field}}, or [[field]]. Pick one style and stick with it.
Here is what the core of a single-line-item invoice template looks like:
INVOICE Invoice Number: ((InvoiceNumber)) Date of Issue: ((IssueDate)) Payment Due: ((DueDate))
Bill To: ((ClientName)) ((ClientAddress))
Description of Services: ((Description))
Net Amount: ((NetAmount)) Tax (20%): ((TaxAmount)) Total Amount Due: ((GrossTotal))
Please remit payment to account number 12345678, sort code 12-34-56.
Handling multiple line items
The one-row-equals-one-document rule works perfectly when every client gets billed for a single consolidated service, like a monthly retainer.
If you occasionally need to bill a client for two things—say, a retainer and a separate consulting project—you have a choice to make.
The simplest approach is to combine the descriptions in your spreadsheet cell. Type "Monthly Retainer + Ad-hoc Consulting" into the Description column, and sum the amounts into the NetAmount column. This keeps you in the single-line-item workflow.
If you absolutely must show distinct rows on the printed invoice, this bulk generation method hits its limit. A traditional mail merge expects a fixed number of fields. If client A has one line item and client B has six, you cannot easily build a single template that accommodates both without leaving ugly blank gaps. In those cases, you are better off using dedicated accounting software to build those specific invoices.
Converting the batch to PDF
ManyDocs outputs standard DOCX or ODT files. It does not export PDF files directly, and it does not email them to your clients.
Most businesses send invoices as PDFs so the recipient cannot easily alter the numbers. Once you download and extract your ZIP file of generated Word documents, you need to convert them.
If you are dealing with a small batch, you can open each generated DOCX file in Microsoft Word, review it, and choose "Save as PDF".
For larger batches, you can use Word's built-in macro functionality or a desktop utility to batch-convert an entire folder of DOCX files into PDFs in one go. LibreOffice Writer also includes a command-line tool that can bulk-convert hundreds of ODT or DOCX files to PDF in seconds.
Take the time to spot-check your documents before sending them out. Open the first invoice, the last invoice, and the one with the longest client name to ensure the layout held together perfectly.
Note: This article explains the mechanics of bulk document generation. It does not constitute tax, legal, or accounting advice. Always ensure your generated invoices meet your local regulatory requirements.
Frequently asked questions
Does the generator calculate the invoice totals for me?
No. ManyDocs reads the values stored in your spreadsheet and places them into your document. It does not recalculate formulas, sum columns, or apply tax percentages. You must complete all arithmetic in your spreadsheet before generation.
Why do my invoice numbers lack currency symbols in the final document?
The generator reads the raw value from the spreadsheet cell, not the visual formatting applied by Excel. If you want a dollar sign or a comma separator to appear, you must format the number as text within the spreadsheet cell itself before generating.
Can I generate an invoice with a variable number of line items?
Not easily. Bulk document generation relies on a one-row-to-one-document structure. If one invoice has a single line item and another has five, a fixed template cannot dynamically add or remove table rows. You must combine the items into a single description field.
Does ManyDocs email the invoices to my clients?
No. ManyDocs runs entirely in your browser and outputs a ZIP file containing your generated DOCX or ODT files. You are responsible for reviewing, converting them to PDF if required, and emailing them to your clients.
Are my financial figures uploaded to a server?
No. Everything happens locally on your own device. The spreadsheet parsing, placeholder replacement, and ZIP file creation are executed by your browser. Your client names and financial data are never uploaded to any external server.