Germany taxes: calculation of yearly "lump sum on unrealized capital gains" (Vorabpauschale)

79 views
Skip to first unread message

Stefano Merlo

unread,
Apr 23, 2026, 8:24:31 AMApr 23
to Beancount
Hi community,
    is there any german resident that integrated in their accounting the "Vorabpauschale[1]" calculations?

In a few words, it's a way for the German tax office to "take their cut" on unrealized gains. it was introduced in 2018, and its calculation is based on the "Basiszins", very low or negative between 2018 and 2022. In the past few years it's representing a significant amount, and when it's due for payment, the first business day of the year, you should have enough liquidity on your account to avoid unnecessary delays.

German brokers calculate it automatically and present only the final figures, but I'd like to reproduce the calculations. I am considering writing a beancount plugin + fava extension that estimates it for every holding or commodity, to compare with the financial statements from the broker, and wanted to check if anybody did something already.

Thanks
--Stefano

Chary Ev2geny

unread,
Apr 23, 2026, 8:53:47 AMApr 23
to Beancount
Hi,

I am not from Germany, but I have developed a tool to calculate unrealized gains:


Components
sing_curr_conv: Neth Worth Change explainer / Unrealized Gains analyzer

This tool makes it possible to explain changes in the Net Worth between any two dates in a situation of multi-currency / multi-commodity ledger with changing exchange rates and transfers of funds from one commodity to another (both cost and not cost-based tracked). This is achieved by creating a converted / equivalent ledger, on which further analysis can be done using beanquery.

The tool can be used

  • from a command line
  • as a function in Python code
  • as a plugin

See more information in the sing_curr_conv documentation.


Chary Ev2geny

unread,
Apr 23, 2026, 11:12:05 AMApr 23
to Beancount
to follow up on the same subject, I just recently commented on a Fava issue  on how the  sing_curr_conv   can be used with Fava to see unrealized gains

Stefano Merlo

unread,
Apr 24, 2026, 6:06:36 AMApr 24
to Beancount
Thanks Ev2geny, your tool is interesting, and I might borrow some code from it.

My need is more complex, as this tax is about unrealized capital gains, but it is not calculated on them.
- The prices used to calculate the unrealized gain are the /Rücknahmepreis/ (Net Asset Value, or NAV) published directly by the fund provider. These differ from the market price, which includes bid/ask spreads. This data is not—and has no reason to be—in my ledger.
- The dates used are the first and last business days of the year, even if you purchased shares mid-year. The amount is then discounted for the months preceding the purchase. This is also not in my ledger.
- The taxed amount is the minimum of the unrealized gain and a "base yield"—essentially what you would gain if the investment appreciated at the Basiszins (a rate published yearly by the Bundesministerium der Finanzen) multiplied by 0.7. This rate is not in my ledger either.

The above is a simplification; the German method is one of the most complex ways to mitigate tax deferrals and is largely irrelevant for non-residents. Once you understand the method, it's easy to build in a spreadhseet, but hard to scale for all positions and lots held by the typical investor with regular trades.

I will probably process the data in an org-babel notebook with ob-beanquery to get year-end inventories and holding periods, then process that with a script to consider all external inputs such as base yield. Or, I'll explore Marimo, following your good work on the beanquery documentation.

Keep up the good work.

--Stefano

Chary Ev2geny

unread,
Apr 24, 2026, 12:08:08 PMApr 24
to Beancount
Stefano,

thanks for explanation. The unrealized gain calculation, which you described is indeed quite complex, this is not what the sing_curr_conv  calculates

I though so far only Netherlands wants to tax unrealized gains
But it looks like this idea is getting more and more popular among government's
Reply all
Reply to author
Forward
0 new messages