Naar de inhoud

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.

Tested values for Zweden
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.

Tested values for Noorwegen
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.

Tested values for Duitsland
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.

Tested values for Nederland
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.

Tested values for Verenigd Koninkrijk
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