Skip to content

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.