A tax reporting setup
Tax prep is done in a subdirectory of the year.:
finance/
2023/
taxes/
Health_Insurance_Form1095a_2023.pdf
(1099s, etc..)
next.journal -> ../../2024/2024.journal
prev.journal -> ../../2022/2022.journal
tax-reports.org.gpg
tax-reports.org
(optionally encrypted with gpg) is the main thing;
it is an emacs org outline shaped like the tax forms or tax
preparation software (freetaxusa.com in my case).
For each form item/field, there's an outline heading, and under it one or more hledger reports designed to show (and explain) the required information. Here's an excerpt:
* tax preparation for 2023 -*- org-confirm-babel-evaluate:nil; -*-
...
** Income
*** overview
#+begin_src hledger :cmdline -f ../2???.journal -p 2023 bal -Y type:r cur:. -4 --invert
#+end_src
#+RESULTS:
#+begin_example
Balance changes in 2023:
...
#+end_example
*** Common Income
**** Interest Income
#+begin_src hledger :cmdline -f ../2???.journal -p 2023 bal -Y type:r interest --invert
#+end_src
#+RESULTS:
: Balance changes in 2023:
...
The reports are embedded as org source blocks. With cursor on the
command line, C-c C-c
runs the command and updates the RESULTS.
(The two RESULTS above have different markup, because of output size -
(setq org-babel-min-lines-for-block-output ...)
to control this.)
The commands reference ../2???.journal
(2023.journal in this case),
and some of them use prev.journal
or next.journal
as well.
I used to define tax-specific account aliases renaming my usual account names to match the names used in tax forms/tax software, but that's work and another layer of confusion, so currently I don't bother with that.
I have used this setup for a number of years now and for me it gives a good combination of manageability, tweakability, repeatability, and persistence/memory across years.
For example, when starting tax prep for a year, I start with a copy of
the previous year's outline, which includes all of last year's reports.
As I press C-c C-c
in each report, it updates to this year. This is
useful for comparison and sanity checking. Each year, the process
becomes easier.