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.

Diagram: a loose scattered heap of blank ruled sheets labelled THE SHOEBOX, a plain arrow, and one sealed envelope with a flat amber circle on the flap, labelled ONE HANDOVER.
A HEAP BECOMES ONE HANDOVER — THE FACTS OF THIS PLATE ARE IN THE TEXT

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

DocumentWhat it answersWhy they want it
Trial balanceEvery account and its closing figure, summing to zeroTheir starting point. Everything else is derived from it
Income statementWhat you earned and spent over the yearBecomes the profit figure on the return
Balance sheetWhat you hold and owe on the last dayTies the year to the next one
Transaction detailEvery entry behind those totalsWhere 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_report produces 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_report gives 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.