Work2026
Boekhouding for a Dutch sole proprietorship
An append-only ledger where corrections are booked as reversing entries rather than updates, Dutch tax rules written as pure functions of a tax year with every rate carrying its source, and gapless invoice numbering enforced in Postgres instead of application code.
- Stack
- TypeScriptNext.jsSupabaseTurborepo
Bookkeeping, tax calculation and a CRM for a Dutch eenmanszaak, built to the standard an accountant and the Belastingdienst would apply rather than the standard a demo would.
The ledger is append-only
A booked journaalpost is immutable. Corrections are made by booking a reversing entry, never by updating or deleting the original, and closed periods are locked. That is a legal requirement, not a design preference.
Money is integers
Every amount is an integer number of eurocents, bigint in Postgres. Floating point is banned anywhere near money or tax: a rounding error that is invisible in a demo is a wrong BTW-aangifte in production.
Tax rules are pure functions of a year
Rates and thresholds live in per-year data files, each constant carrying the belastingdienst.nl URL it came from. Nothing reads the clock. The tax year is always an explicit argument.
Invoice numbering
Sequential and gapless, enforced by the database rather than application code, and drawn at finalisation so an abandoned draft never consumes a number.