What to hand your accountant at year end
What an accountant needs at year end is four documents and one list — trial balance, income statement, balance sheet, transaction detail, and the entries you flagged as unresolved — in a format they can open without learning your tool.
The worst version of this exchange is a folder of PDFs and an email saying “let me know if you need anything else”. The accountant then spends three billable hours rebuilding your year, and asks you in March about a payment you made fourteen months ago.
The good version is boring, which is the point.
The four documents
| Document | What it answers | Why they want it |
|---|---|---|
| Trial balance | Every account and its closing figure, summing to zero | Their starting point. Everything else is derived from it |
| Income statement | What you earned and spent over the year | Becomes the profit figure on the return |
| Balance sheet | What you hold and owe on the last day | Ties the year to the next one |
| Transaction detail | Every entry behind those totals | Where they check anything that looks odd |
That is not a preference, it is the shape of the job. An accountant works from the trial balance inward, and every question they have is “what is inside this number”, which is the fourth document.
The fifth thing, which matters more than the four
A list of everything you were not sure about.
Most people suppress this out of embarrassment — they guess at the ambiguous items so the books look finished. It is exactly backwards. An accountant would rather receive twelve flagged questions than twelve confident wrong entries, because the flagged ones cost ten minutes and the confident ones cost a restatement.
In a plain-text ledger the unresolved items are already marked. An entry
carrying ! is recorded and pending:
2026-11-02 ! "SQ *UNKNOWN"
Expenses:Unknown 218.60 USD
Assets:Bank:Checking -218.60 USD
And the list of them is a query, not an act of memory:
SELECT date, narration, account, position
WHERE flag = '!'
ORDER BY date
Send that as its own tab. It is the single highest-value page in the handover.
The format argument
Your accountant does not want to learn Beancount, install anything, or be given a login to a tool they have never heard of. This is not stubbornness; they open forty sets of books a year and every one that needs a new skill is a cost they pass to you.
So the handover goes out as a spreadsheet.
generate_reportproduces a styled HTML page or an Excel workbook — balance sheet, income statement, transactions. Shipped The workbook is the one to send someone who has never heard of plain-text accounting.- Anything the standard reports do not cover comes out of BQL, which means an unusual request is a query rather than a project. Shipped
- If they do want to look properly, the full ledger UI runs in the browser behind your login, read-only. Shipped
Before you send it, do three things
Assert every bank and card balance at year end. One line per account. If they pass, the accountant is not going to find a difference you have not already found:
2027-01-01 balance Assets:Bank:Checking 4506.12 USD
2027-01-01 balance Liabilities:CreditCard -1288.40 USD
Note the sign on the card. A credit card you owe money on is a negative asset — a liability — and the statement’s “balance $1,288.40” is a debt, not a holding.
Empty Expenses:Unknown as far as you honestly can, and leave the rest
flagged rather than filed somewhere plausible.
Do not go back and edit last year. If something is wrong in a prior period, correct it forward with a dated adjusting entry, so the change is visible as a change:
2026-12-31 * "Adjustment" "Reclassify hosting booked to Unknown in Q3"
Expenses:Unknown -218.60 USD
Expenses:Hosting 218.60 USD
That is what an accountant expects, and it is also the only thing that works here: revert is reliable on the most recent commit, and a mistake buried in history has to be fixed forward.
What they will ask for that is not in the ledger
Have these ready, because they are the usual second email:
- The bank and card statements themselves, as PDFs. The ledger is your record; the statement is the third party’s.
- Loan and lease agreements, if any exist.
- Payroll filings, if you have employees.
- Anything with a tax authority’s name on it from during the year.
- Receipts for the large or unusual items — not all of them, the ones a reviewer would stop on.
The honest edge
- There is no one-click export. Not built You
can clone the repository and
generate_reportgives you the workbook, but the button that packages a year and hands it over does not exist yet. Tracked as #48. - There is no receipt archive. Not built The transaction extracted from a photograph is stored; the image is not kept somewhere you can go back to. If your accountant wants to see the receipt behind an entry, you are finding it in your email. The receipt tool itself is still being built. Building
- No scheduled or emailed reports. Not built You ask for the workbook, or you open the browser.
- No payroll, no tax filing, no VAT submission. Not built This hands your accountant clean data. It does not replace them, and a year-end post that implied otherwise would be the wrong kind of confident.