Method: how Netpay calculates net salary from official rules
How each estimate is built, which official documents it follows, what was compared with official tables and examples, and how a country is added or updated.
Deze pagina is in het Engels geschreven.
Principles
Netpay follows four rules. Every number comes from a tax authority or from the text of the law. Every country links its sources on its own page and in its tests. A country is only included when its 2026 rules (the 2026/27 tax year in the UK) can be confirmed from those sources. Results are always presented as estimates for a standard situation.
The calculator never uses a third-party tax API and never sends your salary anywhere. All code runs in your browser.
One module per country
Each country is a small module with the same shape: the tax year, the date its sources were last checked, the currency, the options it needs (for example the Swedish tax table or the German tax class), the list of official sources and one pure function. That function takes a yearly gross salary and the chosen options and returns the breakdown lines, the total of the deductions and the net salary.
The site only knows a country through that list. Adding a country means writing a module, adding it to the registry, adding labels to the five dictionaries and writing tests with known values and their sources. The calculator, the country page, the sitemap and the checks all pick the country up from the registry.
Monthly and yearly figures
Net salary per month is one twelfth of the yearly figure. That is how most people compare offers, but not how every employer withholds tax. Norwegian employers withhold over 10.5 payslips, British employers withhold per pay period with cumulative tax codes, and Dutch salaries often include a separate holiday allowance. Where an official monthly calculation exists and is useful, as in Norway, it is shown as an extra line.
Amounts are rounded the way the authority rounds them where that is documented, and otherwise to the nearest whole currency unit in the displayed results.
How the implementations were checked
Sweden was compared with the official 2026 tables. The implementation follows the description in Skatteverket's technical specification (SKV 433) and reproduces every row of table 29, all tested rows of table 33 and the two worked examples in the specification.
Norway's yearly calculation follows the statutory rates and brackets for 2026, and the monthly withholding follows Skatteetaten's published calculation for table 8000. The port reproduces the official table rows used in the tests.
Germany follows the official Programmablaufplan (program flow plan) for payroll tax 2026 published by the Federal Ministry of Finance, applied to the yearly salary. The pension insurance, unemployment insurance, health insurance and care insurance rates and ceilings come from the 2026 social insurance values.
The Netherlands uses the 2026 box 1 rates and brackets and the formulas for the general tax credit and the labour tax credit published by the Belastingdienst.
The United Kingdom uses the GOV.UK income tax rates and bands for 2026/27, the Scottish income tax bands for the same year and the Class 1 National Insurance rates and thresholds for employees.
What the tests assert
Each country has at least five known values in an automated test suite. A known value is a salary, the options and the amounts that the official source gives for it. The suite fails if the calculator moves away from any of them. Other tests check that net pay never exceeds gross pay, that deductions do not fall when the salary rises (above the low-income range), and that every dictionary label exists in all five languages.
Known values come in three kinds. An official table row is a row copied from a table the authority publishes. An official example is a worked example in an official document. An official formula value is the result of applying the rates and formulas of the official document by hand to a chosen salary, so that a change in the code that breaks a rate shows up at once. The list below shows the kind of each value and links to its source.
What is not modelled
Netpay assumes an employee with one salary and no other income. Pension savings, benefits in kind, student loans, bonuses taxed under special rules, church or union fees beyond what a country page states, and income from abroad are not modelled. Each country page lists its limits. For an exact figure, use your payslip, your tax card or tax code, or the official calculator of your tax authority.
Updating the rules
Tax rules change every year. A script checks that every source URL still answers, and the date on each country page records the last comparison with the official documents. When a new year's figures are published the constants of the country module change and the known values are replaced with values from the new tables. If you find a difference, write to jonathan.holmlidh@gmail.com with a link to the official page.
Bronnen and tested values
Zweden · 2026
Last checked 2026-10-17.
- Teknisk beskrivning för skattetabeller 2026 (SKV 433, utgåva 36) (Skatteverket)
- Allmänna tabeller månad, tabell 29, 2026 (Skatteverket)
- Skattetabeller (tabeller för månadslön 2026) (Skatteverket)
- Belopp och procentsatser 2026 (Skatteverket)
| Tested value | Kind | Source |
|---|---|---|
| Table 29, column 1, monthly salary up to 4200 SEK: tax withheld 337 SEK | Official table row | Skatteverket |
| Table 29, column 1, monthly salary up to 10000 SEK: tax withheld 1061 SEK | Official table row | Skatteverket |
| Table 29, column 1, monthly salary up to 20000 SEK: tax withheld 2989 SEK | Official table row | Skatteverket |
| Table 29, column 1, monthly salary up to 40000 SEK: tax withheld 7399 SEK | Official table row | Skatteverket |
| Table 29, column 1, monthly salary up to 55000 SEK: tax withheld 11749 SEK | Official table row | Skatteverket |
| Table 33, column 1, monthly salary up to 20000 SEK: tax withheld 3391 SEK | Official table row | Skatteverket |
| Table 33, column 1, monthly salary up to 40000 SEK: tax withheld 8402 SEK | Official table row | Skatteverket |
| Table 33, column 1, monthly salary up to 60000 SEK: tax withheld 15995 SEK | Official table row | Skatteverket |
| SKV 433 example 1: annual income 28,000 SEK, table 34 rate: total tax 2,062 SEK | Official example | Skatteverket |
| SKV 433 example 2: annual income 55,000 SEK, table 34 rate: total tax 4,445 SEK | Official example | Skatteverket |
Noorwegen · 2026
Last checked 2026-10-17.
- Skattesatser 2026 (rates 2026) (Skatteetaten)
- Skattesatser 2026 (Regjeringen)
- Deduction tables in text format (trekktabeller 2026) (Skatteetaten)
- Trekkrutine 2026 (withholding routine, source code) (Skatteetaten)
| Tested value | Kind | Source |
|---|---|---|
| Withholding table 8000, monthly pay 15000 NOK: 1320 NOK deducted | Official table row | Skatteetaten |
| Withholding table 8000, monthly pay 35000 NOK: 8366 NOK deducted | Official table row | Skatteetaten |
| Withholding table 8000, monthly pay 55000 NOK: 16123 NOK deducted | Official table row | Skatteetaten |
| Withholding table 8000, monthly pay 80000 NOK: 28084 NOK deducted | Official table row | Skatteetaten |
| Withholding table 8000, monthly pay 120000 NOK: 49478 NOK deducted | Official table row | Skatteetaten |
| Annual salary 660,000 NOK: ordinary income tax 22 % after minstefradrag 95,700 and personfradrag 114,540, bracket tax 15,235, national insurance 7.6 % | Official formula | Skatteetaten |
| Annual salary 300,000 NOK: ordinary 19,747, bracket tax 1,256, national insurance 22,800 | Official formula | Skatteetaten |
Duitsland · 2026
Last checked 2026-10-17.
- Programmablaufplan Lohnsteuer 2026, Anlage 1 (BMF-Schreiben 12.11.2025) (Bundesfinanzministerium)
- Programmablaufplan für Lohnsteuertabellen 2026, Anlage 2 (Bundesfinanzministerium)
- § 32a EStG Einkommensteuertarif (Gesetze im Internet)
- Verordnung über maßgebende Rechengrößen der Sozialversicherung für 2026 (Gesetze im Internet)
- Beiträge der gesetzlichen Krankenversicherung (Zusatzbeitrag 2026) (Bundesgesundheitsministerium)
| Tested value | Kind | Source |
|---|---|---|
| Tax class I, 30,000 EUR: taxable income 22,689 after allowances and Vorsorgepauschale 6,045; Lohnsteuer 2,248 EUR | Official formula | Bundesfinanzministerium |
| Tax class I, 54,000 EUR: Lohnsteuer 7,802 EUR; pension 5,022, health 4,725, care 1,296, unemployment 702 | Official formula | Bundesfinanzministerium |
| Tax class I, 100,000 EUR: Lohnsteuer 23,248 EUR; solidarity surcharge in the transition zone 344.86 EUR | Official formula | Gesetze im Internet |
| Contribution ceilings 2026: pension 101,400 x 9.3 % = 9,430.20, unemployment 1,318.20, health 69,750 x 8.75 % = 6,103.13, care 69,750 x 2.4 % = 1,674 | Official formula | Gesetze im Internet |
| Tax class III, 75,000 EUR: splitting tariff gives Lohnsteuer 8,206 EUR | Official formula | Bundesfinanzministerium |
| Tax class I, 400,000 EUR (45 % zone): Lohnsteuer 152,310 EUR, solidarity surcharge 8,377.05 EUR | Official formula | Gesetze im Internet |
Nederland · 2026
Last checked 2026-10-17.
- Hoe wordt de belasting berekend? Box 1 tarieven 2026 (Belastingdienst)
- Tabel algemene heffingskorting 2026 (Belastingdienst)
- Tabel arbeidskorting 2026 (Belastingdienst)
- Tarieven, bedragen en percentages loonheffingen vanaf 1 januari 2026 (Belastingdienst)
- Belangrijkste wijzigingen belastingen 2026 (Rijksoverheid)
| Tested value | Kind | Source |
|---|---|---|
| Salary 11,965 EUR: box 1 tax 4,277, general credit 3,115 (maximum), labour credit 996 (first build-up maximum) | Official formula | Belastingdienst |
| Salary 29,736 EUR: end of the full general credit; box 1 tax 10,631, labour credit 5,376 | Official formula | Belastingdienst |
| Salary 45,592 EUR: maximum labour credit 5,685, general credit 2,101 after phase-out | Official formula | Belastingdienst |
| Salary 80,000 EUR: third bracket 49.50 % above 78,426, general credit gone, labour credit 3,445; net 53,913 | Official formula | Belastingdienst |
| Salary 132,920 EUR: labour credit fully phased out; box 1 tax 55,728; net 77,192 | Official formula | Belastingdienst |
Verenigd Koninkrijk · 2026/27
Last checked 2026-10-17.
- Income Tax rates and Personal Allowances (GOV.UK)
- Income over £100,000 (Personal Allowance reduction) (GOV.UK)
- Income Tax in Scotland: current rates 2026 to 2027 (GOV.UK)
- National Insurance rates and categories 2026 to 2027 (GOV.UK)
- Rates and thresholds for employers 2026 to 2027 (GOV.UK)
| Tested value | Kind | Source |
|---|---|---|
| Salary 12,570 GBP: equal to the Personal Allowance and primary threshold, no tax, no NI | Official formula | GOV.UK |
| Salary 30,000 GBP, England: tax 3,486; NI 1,394.40 | Official formula | GOV.UK |
| Salary 60,000 GBP, England: tax 11,432 (basic 7,540 + higher 3,892); NI 3,210.60 | Official formula | GOV.UK |
| Salary 110,000 GBP: Personal Allowance reduced by 5,000 to 7,570; tax 33,432 | Official formula | GOV.UK |
| Salary 30,000 GBP, Scotland: starter 19 %, basic 20 %, intermediate 21 %; tax 3,451.07 | Official formula | GOV.UK |
| Salary 60,000 GBP, Scotland: higher rate 42 % band reached; tax 13,182.05 | Official formula | GOV.UK |