The shortest version I could come up with. A more "formal" calculator in Ruby takes ~350 SLOCs

1 INTRO 2 3 The salary calculation in Belgium has 5 steps that I will call by their 4 respective french/dutch names: 5 6 'brut ONSS/RZW brutto' 7 8 The calculation of the brutto salary that will be submitted to 'ONSS/RZW'. 9 This is not the same as the brutto salary, as some payments, e.g. the 8th and 10 the following days of sickness leave are excluded from this sum, as well as 11 the money paid for the period of annual vacations, whatever that means. 'brut 12 ONSS/RZW brutto' is equal to 108% of brutto for blue collars and to 100% for 13 white collars. 14 15 'cotisation ONSS/RZW bijdrage' 16 17 The sum due to ONSS/RZW. It is generally 13.07% of the 'brut ONSS/RZW 18 brutto'. As usual, there are many exceptions, e.g. pensions have the 19 ONSS/RZW tax to 7.50%, unemployment money has the ONSS/RZW tax at 0.87%. 20 21 'imposable/belastbaar' 22 23 The brutto salary as submitted to the Ministry of Finance. This is what is 24 left from 'brut ONSS/ONSS brutto' once 'cotisation ONSS/RZW bijdrage' has been 25 extracted. This is the only amount that will be taken into account by the 26 Ministry of Finance while calculating the income tax aka 'IPP/PB' aka 'impot 27 des personnes physiques/personenbelasting'. 28 29 'précompte/bedrijfsvoorheffing' 30 31 The monthly amount due to the Ministry of Finance directly. It is actually an 32 advance that is calculated to match as close as possible the future 'IPP/PB' 33 tax by the end of the year. Naturally, the 'précompte/bedrijfsvoorheffing' 34 calculation uses the 'imposable/belastbaar' as the starting point. The exact 35 calculation of 'precompte/bedrijfsvoorheffing' is impossible. The employer 36 has no means to know whether you will die or marry during the current year or 37 that you pay your mortgage. These factors, as well as a few dozens of others 38 heavily impact your 'IPP/PB'. This is why, after one year and half, you get 39 your cashback or a heavy bill from the Ministry of Finance. 40 41 'net/netto' 42 43 This is what is left after 'précompte/bedrijfsvoorheffing' has been withdrawn 44 from the 'imposable/belastbaar'. It is also the amount you see flowing into 45 your bank account. 46 47 Let us start by introducing shorter names for the terms explained before. We'll 48 gain in clarity once the actual formulas will become more and more complex. 49 50 * 'brut/brutto' => brutto 51 * 'brut ONSS/RZW brutto' => ss_brutto 52 * 'cotisation ONSS/RZW bijdrage' => ss_contribution 53 * 'imposable/belastbaar' => taxable 54 * 'précompte/bedrijfsvoorheffing' => withholding_tax 55 * 'net/netto' => netto 56 57 Following the previous explanation, here are the simplest possible formulas for 58 the brutto-to-netto calculation: 59 60 1. brutto = ss_brutto 61 2. ss_brutto * 0.1307 = ss_contribution 62 3. brutto - ss_contribution = taxable 63 4. tax(taxable) = withholding_tax 64 5. taxable - withholding_tax = netto 65 66 By now, we know almost everything to do the brutto-to-netto calculation for the 67 simplest case, the only information missing is the meaning of tax(), which is 68 the formula to calculate the 'withholding_tax' so that it matches the yearly 69 income tax as closely as possible. 70 71 WITHHOLDING TAX 72 73 The calculation of the 'withholding_tax' is done in 4 steps: 74 75 * calculation of the yearly taxable income => 'yearly_taxable_income' 76 * calculation of the netto yearly taxable income => 'netto_yearly_taxable_income 77 * calculation of the base tax => 'base_tax' 78 * application of the tax reductions => 'tax_recutions' 79 * calculation of the 'withholding_tax' itse;f 80 81 calculation of the yearly taxable income 82 83 For emoployees and workers, this is generally done by multiplying the 'taxable' 84 by 12 and rounding it down to the nearest multiple of 15. 85 86 calculation of the netto yearly taxable income 87 88 This is basically about deducing the so called fixed professional expenses 89 that are arbitrarily set to the following: 90 91 0...4.880,00 25% 92 4.880.01...9.700,00 10% 93 9.700.01...16.140,00 5% 94 16.140,01...57.006,67 3% 95 57.006,57...∞ 0% 96 97 That is, for the yearly taxable income of 20.000, we substract 1.220 EUR for 98 the first 4.880,00 EUR, then -- 482 EUR for the second range, 322 EUR for the 99 3rd range and 115,80 for the 4th range. 100 101 calculation of the base tax 102 103 The base tax is then calculated using the table below. 104 105 0...7.430,00 26,75% 106 7.430,01...10.090,00 32,10% 107 10.090,01...14.620,00 42,80% 108 14.620,01...32.280,00 48,15% 109 32.280,00...∞ 53.50% 110 111 Since the first 5140.00 are not taxed, the result is reduced by 1374.95, which 112 is 5140*0.2675. It is important to remember that 1374.95 should be deduced after 113 the tax is calculated upon the table above and before the reductions are applied. 114 115 There is a special case. If the partner of the person has no income or her 116 income is less that 110 EUR per month, it is possible to transfer 30% if the 117 income of the person to the partner. The maximum transferable amount is 118 8720.00. 119 120 In this case, we calculate two yearly taxes, one for the taxpayer and the 121 other for his partmner and sum them up before applying the reductions. 122 123 124 application of the tax reductions 125 126 The reductions on the yearly tax are quite complex. We'll try to cover the 127 basics here. 128 129 Here is a list of reductions the children that the person is in charge of: 130 131 0 => 0 132 1 => 348.00 133 2 => 948.00 134 3 => 2520.00 135 4 => 4620.00 136 5 => 6828.00 137 6 => 9036.00 138 7 => 11232.00 139 8 => 13608.00 140 141 In case there are more than 8 children, each child adds 2460.00 to the total 142 of the reduction. Each impared children counts as two. 143 144 Alongside the children's reduction, there are 7 other types of reductions. 145 146 1 252.00 for people living alone or with an unemployed partner 147 2 348.00 for widows and single parents 148 3 348.00 for handicapped 149 4 708.00 for people having dependant persons > 65 y.o. 150 5 348.00 for people having dependants 151 6 1098.00 for people whose partner earns less thatn 183 EUR per month 152 7 2196.00 for people whose partner has less than 366 EUR in pensions 153 154 In case someone participates in a group insurance plan or has a death 155 insurance, they can reduce the 'withholding_tax' by 30% of their group 156 insurance bill. 157 158 calculation of the 'withholding_tax' itself. 159 160 This is done by the division of the yearly tax by 12. No magic here. 161 162 Let us give formal names to the abovementioned four concepts as well: 163 164 * yearly taxable income => 'yearly_taxable_income' 165 * netto yearly taxable income => 'netto_yearly_taxable_income 166 * base tax => 'base_tax' 167 * tax reductions => 'tax_recutions' 168 169 EMPLOYMENT BONUS 170 171 We will now have to take a step back and look closer at the calculation of 172 'ss_contribution'. Private sector workers do effectively pay 13.07% of their 173 'ss_brutto' to the Social Security. However, there is a number of reductions. 174 Most are industry-specific. There is only one that applies salaries under 175 2076,63 and that is called 'bonus à l'emploi/werkbonus'. 176 177 This reduction is calculcated in 3 steps: 178 179 * calculation of 'salaire mensuel de référence/montly reference salary' 180 * calculation of 'montant de base de la réduction/base reduction amount' 181 * calculation of the actual amount of the reduction 182 183 'salaire mensuel de référence/monthly reference salary' 184 185 This value can be calculated exactly only and the end of the pay period. For 186 the sake of simplicity, we can assume that it is equal to 'ss_brutto'. 187 Subsequently, we will abbreviate the 'monthly reference salary' to S. 188 189 'base reduction amount' 190 191 This is calculated with the data from the table below: 192 193 monthly salary worker employee 194 195 0 .. 1283.91 154.44 143.00 196 1283.91 .. 2076.63 154.44-(0.1948*(S-1283.91)) 143.00-(0.1804*(S-1283.91)) 197 2076.63 .. ∞ 0 0 198 199 For full-time employees and workers, the 'base reduction amount' is equal to 200 the 'employment bonus'. Part-time workers should be reviewed on a case-by-case 201 basis. 202 203 ADDITIONAL SOCIAL SECURITY CONTRIBUTION 204 205 This is a supplementary contribution that is supposed to be paid by high 206 salaries. Practically, the majority of the salaries is entitled to this payment. 207 208 The rates exist in two flavours: for a single-revenue family and for a 209 double-revenu family. There can be a minumum and a maximum amount imposed. The 210 percentage is calculated on the salary minus the lower boudary of the 211 applicable salary range. For a monthly salary of 3000, a single-revenue 212 contribution would be 213 214 18.60+(3000-2190.19)*0.011, that is, 27.507 or 27.51, if rounded. 215 216 montyly salary double rev. single rev. min. max. 217 218 0 .. 1095.09 0 0 - - 219 1095.10 .. 1945.38 9.30 0 - - 220 1945.39 .. 2190.18 9.30 + 7.6% 18.60 + 7.6% 9.30 - 221 2190.19 .. 6038.82 18.60 + 1.1% 18.60 + 1.1% 51.64 60.94 222 6038.83 .. ∞ 51.64 60.94 - -

Tags: