Statement of Account Generator

A statement of account lists every invoice a client still owes, what has been paid, and the balance due as of one date. Upload your invoice spreadsheet — the same file the Bulk Invoice Generator reads, plus an Amount Paid column — and this tool builds an accounts receivable aging report, splitting each client's unpaid balance into Current, 1–30, 31–60, 61–90 and 90+ days overdue. Download one PDF statement per client, a ZIP of all of them, or the aging report as a CSV. Free, and nothing is uploaded: it all runs in your browser.

  1. Get your invoice list

    Already using the Bulk Invoice Generator? Use the same spreadsheet and add an Amount Paid column. Starting fresh? Download the template: one row per line item, the same Invoice # on each row of one invoice, and the amount paid on the invoice's first row.

  2. Upload your file

    No file chosen

    Accepts .xlsx, .xls or .csv — read in your browser, never uploaded.

  3. Statement date & message

  4. Review the aging & download

    Upload a file or load the sample data to see who owes what, and for how long.

How to make a statement of account

Start from your invoice spreadsheet. If you already use the Bulk Invoice Generator, it is the same file: one row per line item, with the invoice number, client, dates, quantity, unit price, discount and tax. Add one column, Amount Paid, and fill it in on the first row of each invoice. Upload the file, pick the statement date, and the tool works out every invoice's total exactly as the invoice PDF does, subtracts what has been paid, and ages what is left. Review the aging table, then download a statement for one client with its PDF button, all statements as a ZIP, or the whole report as a CSV for your spreadsheet or bookkeeping software.

How the aging buckets work

Each unpaid balance is placed in a bucket by how many days past its due date it is on the statement date. Current means not yet due, or due that day. After that come 1–30, 31–60, 61–90 and 90+ days overdue — the standard accounts receivable aging buckets. For example, with a statement date of 25 September, an invoice due on 1 September is 24 days overdue and sits in 1–30, and one due on 1 June is 116 days overdue and sits in 90+. An invoice without a due date is aged from its issue date, and one with no date at all is shown as current. Balances in the 90+ column are the ones most at risk of never being paid, so they are highlighted in the table.

Statement of account or invoice?

An invoice asks for payment for one piece of work. A statement of account summarises the whole relationship: every invoice still open, what has been paid against each, and the total owed on one date. Businesses send statements monthly, or whenever several invoices have gone overdue, because one document with the full balance is easier to act on than a stack of reminders. Invoices paid in full are left off, so the statement shows only what is still due. A client billed in two currencies gets one statement per currency, because amounts in different currencies cannot be added together.

Statement of account generator: the specifics

FeatureLK Forge Statement of Account Generator
InputAn .xlsx, .xls or .csv file: the Bulk Invoice Generator template plus an optional Amount Paid column.
Aging bucketsCurrent, 1–30, 31–60, 61–90 and 90+ days past the due date, as of any statement date you choose.
TotalsWorked out exactly as on the invoice: line items, then discount, then tax, rounded to cents.
OutputOne A4 PDF statement per client and currency, a ZIP of every statement, and a CSV aging report.
Where processing happensEntirely in your browser. The spreadsheet is never uploaded and nothing is kept after you close the page.
Sign-up, watermark, limitsNone. No account, no branding of ours on the PDFs, and no cap on invoices or clients.

Frequently asked questions

What is a statement of account?

A statement of account is a summary you send a client listing every invoice they still owe you, how much of each has been paid, and the total balance due as of a given date. Unlike an invoice, which bills for one piece of work, a statement covers the whole account, so it is the usual way to chase several overdue invoices at once. This generator builds one from your invoice spreadsheet, grouping the unpaid balances by client and currency and aging each by how far past due it is.

How is the aging worked out?

Each unpaid balance is aged by the number of days between its due date and the statement date. Not yet due (or due on the statement date) counts as Current; 1 to 30 days late goes in the 1–30 bucket, then 31–60, 61–90 and over 90 days. If an invoice has no due date its issue date is used instead, and an invoice with neither date counts as current.

How do I record payments?

Add an Amount Paid column to your invoice spreadsheet and enter how much of each invoice has been paid, on the invoice's first row. The balance is the invoice total, with its discount and tax, minus the amount paid. Leave it blank if nothing has been paid; an invoice paid in full is left off the statement and counted in the summary.

Is my invoice data uploaded?

No — the spreadsheet is read, aged and turned into PDFs entirely in your browser by self-hosted libraries. No invoice, client name or amount is sent to a server. Nothing is stored after you close the page.