Statement of account — every document, and what is still owed
Build a printable statement that lists every invoice, credit note and payment for one customer, with a running balance and an ageing breakdown that adds up to it exactly. The closing balance is calculated from the rows, never typed. It all runs in your browser.
- Customer ledgers stay on your device
- Works offline
Closing balance
RM 0.00
RM 0.00 charged − RM 0.00 credited, across 0 documents.
Lists only what is still unpaid. The balance is the sum of the rows, and every row can be aged, so the ageing table is exact. This is what you send when you are chasing.
Save profile keeps your own details, currency, payment terms, bank details and ageing settings in this browser, so the next customer’s statement starts filled in. The customer and the ledger are never saved — that is their financial history, and statements get run twenty at a time on an office machine.
Increases what the customer owes.
Increases what the customer owes.
Increases what the customer owes.
Bands are 30 days wide. Which basis is “right” varies by company — ageing from the due date tells you what is actually late, ageing from the document date tells you how long you have been carrying it. Whichever you pick is printed on the statement, so the person reading it knows which one they are looking at. Rows with no usable date get their own column rather than being quietly dropped into “current”.
No ageing is printed until the statement date is set — there is no “as at” day to count from, and a table nobody can check is worse than no table.
There is nothing to fill in for “Amount enclosed / transferred” or “Payment reference and date” — those two lines print blank on purpose, for your customer to write on and send back with the payment. The slip repeats the account name, the account code and the balance, then leaves those ruled lines. It repeats those details because the returned half arrives on its own, and a slip that only says “RM 4,200” tells the person opening the envelope nothing.
This produces a statement document. It is not a demand under any debt-recovery procedure, and nothing here is legal or credit-control advice — what you may do about an unpaid balance depends on your contract and on where you are.
Your company name
Statement of Account
Outstanding items
Statement no.
—
Statement date
—
Period
—
Account
—
Statement for
—
Balance outstanding
RM 0.00
Terms: 30 days from invoice date
Payment terms: 30 days from invoice date
Remittance advice — please return this part with your payment
Account: —
Account code: —
Statement: —
Statement date: —
Balance on this statement: RM 0.00
Amount enclosed / transferred
Payment reference and date
For you to complete when you pay — these two lines are left blank on purpose.
How it works
- 1
Pick which kind of statement you are sending
Outstanding items lists only what is unpaid, and every row on it can be aged, so the ageing table is exact — this is the one you send when you are chasing. Account activity opens with a brought-forward balance and lists every movement in the period, which is what a customer reconciles against their own ledger.
- 2
Save your own details once
Your company block, currency, payment terms, bank details and ageing settings are kept in this browser when you press Save profile, because month-end means running twenty of these in a row. The customer and their ledger are never saved.
- 3
Add one row per document
Date, type, reference, due date and amount — one row for each invoice, credit note, debit note or payment, not one row per product. Amounts are entered as positive figures and the type decides which way the balance moves, so a payment can never accidentally increase the debt. Press Sort by date once the rows are in.
- 4
Check the ageing adds up
Choose whether to age from the due date or the document date; the choice is printed on the statement so the reader knows which they are looking at. Bands are 30 days wide. The panel beside the form shows the band total next to the closing balance — they are always the same number, and if they were not, the statement would be wrong.
- 5
Print it, with a remittance slip
The document paginates itself onto A4 and repeats the column headings on every sheet, so page four is still readable. A tear-off remittance advice at the bottom repeats the account name, the code and the balance, and leaves lines for the amount paid. Press Print and choose “Save as PDF”.
Frequently asked questions
What is a statement of account, and how is it different from an invoice?
An invoice charges for one job or one delivery, and it is the document that creates the debt. A statement charges for nothing: it summarises a period, listing every invoice, credit note and payment on the account and ending with the balance still outstanding. A customer who has lost an invoice can be sent a copy; a customer who has paid two of your five invoices and cannot say which needs a statement. That is why a statement has many rows and no line items — one row per document, never one per product.
What does “60 days” actually mean on an ageing column?
It means the amount has been outstanding for between 31 and 60 days counted from a chosen starting date — and which starting date is the part that varies. Ageing from the due date tells you what is genuinely late under the terms you gave. Ageing from the invoice date tells you how long you have been carrying the money, regardless of the terms. Neither is a rule, and different companies inside the same industry do it differently, so this tool prints the basis it used on the statement itself rather than leaving the reader to guess.
Why does the ageing table have a “brought forward” column?
Because an opening balance cannot honestly be aged. In an activity statement, the opening figure is the sum of documents from before the period, and those documents are not on this page — nothing here knows how old they are. Sweeping them into “current” would make the whole table a guess, and sweeping them into “over 90” would be a different guess. So they stand in a column of their own, and the columns still add up to the closing balance exactly. An outstanding-items statement has no opening balance at all, so the column does not appear.
A customer paid an old invoice last week. Why does the ageing look wrong?
Because this tool does not allocate payments against particular invoices — nothing on the form tells it which payment cleared which document, so a payment sits in the band of its own date. A recent payment against a very old invoice therefore shows as a credit in the current band while the old invoice keeps ageing. The columns still total the balance correctly; it is the split that is misleading. The fix on a statement like this is either to send an outstanding-items statement listing only what is genuinely still unpaid, or to enter the settled invoice and its payment with matching dates so they cancel inside the same band.
Can I type the closing balance myself?
No, and there is deliberately no field for it. The closing balance is the opening balance plus charges less payments and credits, all of it derived from the rows you entered. A field that lets someone type a third number only creates a way for the document to disagree with itself, and a statement whose total does not match its own rows is worse than no statement at all — the customer stops trusting every figure on it, including the correct ones.
Are the figures reliable on a long statement?
Yes, and specifically: every amount is held and added as a whole number of cents rather than as a decimal. A forty-row statement pushes the running balance through forty consecutive additions, and floating-point decimals drift over a chain like that — the sort of drift that leaves a final balance of 4,199.999999 where the rows clearly total 4,200. Decimals exist only in what you type and in what is printed.
What does a figure in brackets mean?
It is negative — the ledger convention. A balance of (120.00) means the account is in credit by 120.00, meaning you owe the customer rather than the other way round. Brackets are used instead of a minus sign because a minus at the head of a column is easy to lose on a photocopy or a scan, and a credit balance mistaken for a debt is the one error that will definitely get a phone call.
What is the remittance advice at the bottom for?
It is the part the customer tears off and returns with the payment, so that whoever opens the envelope knows which account the money belongs to. It repeats the account name, the account code, the statement number and the balance, then leaves ruled lines for the amount actually paid and the transfer reference. If your customers pay by transfer and email you the slip, that reference line is what lets you match the money to this statement without phoning anyone.
How often should statements go out?
Monthly is the common rhythm, usually within the first few working days after month end, because that is when most accounts departments run their payment batch — a statement that arrives after their run waits a full cycle. Beyond that, frequency is a commercial decision rather than a rule: some suppliers send statements only to accounts that are overdue, others to everyone every month as a reconciliation courtesy.
Does sending a statement do anything legally?
This tool produces a document; it does not start any procedure. A statement is a summary and a reminder, and what you can do about an unpaid balance comes from your contract and from the law where you and your customer are, not from the format of the paper. What a statement is genuinely good for is removing excuses: once a customer has a dated list of every document and has not disputed it, “we never received the invoice” stops being available.
Is the customer ledger uploaded or kept anywhere?
No. The statement is assembled by your own browser and nothing is sent over the network — the site is static files with no server behind it. One thing is kept, and only when you ask for it: pressing Save profile stores your own company details, currency, payment terms, bank details and ageing settings, so it stays in your browser and goes when you clear your browser data. The customer and every row of their ledger are never written to storage — that is somebody else’s financial history, and month-end statements get run on shared office machines.
Why do the column headings repeat on every page?
Because a statement runs long, and a column of numbers with no heading above it cannot be read — on page three, which figure is the debit and which is the running balance? The document measures its own content, packs it into A4 sheets, and re-inserts the heading row whenever a page starts mid-table. The page break is decided before printing, so the preview shows exactly where the paper will split.