Repository navigation
fix(tax): compute the CSSS base on total net income per art. 107, 2° - #386
Merged
Merged
Conversation
The special social security contribution (law of 30 March 1994) was evaluated on the net professional income without pensions. Art. 107, 2° defines the household income as each member's total net income of WIB 92 arts 7-116 (every income category, after the arts 104-116 deductions), without the art. 171 separately taxed income, less the art. 34 pensions. Other taxable income (rental, ...) therefore enters the base and the alimony deduction lowers it; under a joint assessment the alimony balance charged on the other spouse (art. 105, 3°) follows the same allocation as the taxable income. - household.ts: base per partner = pre-quotient taxable income less pensions, clamped at 0; joint base = household total less pensions, attributed pro rata. - pit.ts (legacy v1): base = taxableIncome, plus the spouse's income under married_joint. - pit.test.ts: the two tests that pinned the old base now assert the statutory one; household.test.ts gains three cases (other income, alimony overflow, pensioner paying alimony). - Rule matrix and feature doc rows corrected. Found by the 2026-10-29 source audit (vision notes, queries/2026-10-29-belgian-tax-source-audit.md). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018QJtaMLEgjALKcoDNnbHdx
Coverage Report for backend
File CoverageNo changed files found. |
…7 notices The FPS indexation notices N25 and N27 are also published in the Belgisch Staatsblad (23-02-2024 numac 2024001745; 12-08-2026 numac 2026006085), which stays reachable when Fisconetplus does not answer. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018QJtaMLEgjALKcoDNnbHdx
EraPartner
marked this pull request as ready for review
October 29, 2026 08:19
EraPartner
enabled auto-merge (squash)
October 29, 2026 08:20
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Requested by EraPartner · project thread
Summary
The special social security contribution (law of 30 March 1994, "bijzondere bijdrage voor de sociale zekerheid") was evaluated on the net professional income without pensions. Art. 107, 2° of that law defines the household income as each member's total net income of WIB 92 arts 7-116 (every income category, after the arts 104-116 deductions such as alimony), without the art. 171 separately taxed income, less the art. 34 pensions. Source read on Justel: https://www.ejustice.just.fgov.be/eli/wet/1994/03/30/1994021117/justel
Consequences fixed:
Only households with an employee or civil servant and either other taxable income or alimony paid are affected; everything else is unchanged (all existing scenario-matrix expectations pass without edits). Found by the 2026-10-29 source audit (vision notes,
queries/2026-10-29-belgian-tax-source-audit.md).Type of change
fix— bug fixfeat— new featurerefactor— no behavior changeperf— performancedocs— documentation onlychore/ci/test— tooling, build, or testsChecklist
bun vitest runin packages/shared-utils: 418 pass) and lint is clean (bun run lint:projects,bun run lint:dead)tsc --noEmitin packages/shared-utils)type(scope): subject)console.log/ debug codedocs/pages updated (docs/features/belgian-tax.md,docs/reference/belgian-tax-rule-matrix.md)Architecture & data
csss.basefigure changes meaning per the law; the shape is unchanged)Verification
packages/shared-utils:bun vitest run→ 23 files, 418 tests pass, including the parity property test between the legacycomputeBelgianPITandcomputeHouseholdTax.pit.test.ts: the two tests that pinned the old base ("uses professional income only …") now assert the statutory base;household.test.tsgains three cases (other income, alimony overflow under a joint assessment, pensioner paying alimony).tsc --noEmit,bun run lint:projects,bun run lint:dead: clean.Residual risk & follow-ups
csss_mixed_activity_base_unverifiedissue is left as is; art. 107, 2° suggests the whole net income enters the base regardless of activity kind, which could close matrix open item 10 in a follow-up.Generated by Claude Code