Not tax advice. Computation tools only. Have a professional check your work before filing.
openaccountants/skills/nl-payroll-tax.md

Use this skill with your AI agent

View on GitHub

Paste this skill into your AI agent's context, or save the file to your project. Works with any AI agent that reads markdown.

nl-payroll-tax.md293 lines12.7 KB
v10Netherlands
Not yet verified by an accountantContact accountant
1---
2name: nl-payroll-tax
3description: >
4 Use this skill whenever asked about Dutch payroll taxes (loonheffingen) or the work cost scheme (werkkostenregeling / WKR). Trigger on phrases like "loonheffingen", "payroll tax Netherlands", "werkkostenregeling", "WKR", "loonbelasting", "premies volksverzekeringen", "premies werknemersverzekeringen", "wage tax NL", "eindheffing", "vrije ruimte", "salary administration", "loonadministratie", "werkgeverslasten", "employer costs NL", "payroll period filing", "loonstrook", "jaarloonopgave", "UWV premies", "WAO/WIA", "ZW premie", "AWf premie", "Whk premie", or any question about Dutch employer withholding, social contributions, or employee benefit taxation. Also trigger when reviewing payroll runs, computing employer costs, or advising on WKR allocation. ALWAYS read this skill before touching any Dutch payroll tax work.
5version: 1.0
6jurisdiction: NL
7tax_year: 2025
8category: international
9depends_on:
10 - income-tax-workflow-base
11---
12 
13# Netherlands Payroll Tax — Loonheffingen & Werkkostenregeling (WKR) v1.0
14 
15> **Based on work by [John in 't Hout (@johnhout)](https://github.com/johnhout/knowledge-work-belastingzaken)**, licensed under MIT. Adapted for the OpenAccountants format.
16 
17---
18 
19## Section 1 — Quick Reference
20 
21| Field | Value |
22|---|---|
23| Country | Netherlands (Koninkrijk der Nederlanden) |
24| Tax | Loonheffingen (wage tax + social insurance contributions) |
25| Currency | EUR only |
26| Period | Per pay period (month/4-week); annual reconciliation (loonaangifte) |
27| Primary legislation | Wet op de loonbelasting 1964 (Wet LB); Wet financiering sociale verzekeringen (Wfsv) |
28| WKR legislation | Articles 31, 31a Wet LB 1964 |
29| Tax authority | Belastingdienst |
30| Filing portal | Loonaangifte via payroll software or Mijn Belastingdienst |
31| Contributor | Open Accountants Community |
32| Validated by | Pending — requires sign-off by a qualified Dutch belastingadviseur or salarisadministrateur |
33| Skill version | 1.0 |
34 
35### Components of Loonheffingen [T1]
36 
37| Component | Paid by | Rate/Notes |
38|---|---|---|
39| Loonbelasting (wage tax) | Employee (withheld by employer) | Progressive rates aligned with Box 1 IB |
40| Premie volksverzekeringen (AOW/Anw/Wlz) | Employee (withheld by employer) | Combined ~27.65% on first bracket |
41| Premie werknemersverzekeringen (WW/WIA/ZW) | Employer | Various rates; see table below |
42| Inkomensafhankelijke bijdrage Zvw | Employer | 6.57% (2025) |
43 
44### Volksverzekeringen Rates 2025 [T1]
45 
46| Premium | Rate | Max income (EUR) |
47|---|---|---|
48| AOW (state pension) | 17.90% | EUR 38,441 |
49| Anw (survivors) | 0.10% | EUR 38,441 |
50| Wlz (long-term care) | 9.65% | EUR 38,441 |
51| **Total** | **27.65%** | **EUR 38,441** |
52 
53These are withheld from the employee's gross salary (combined with wage tax in bracket 1 rate of 35.82%).
54 
55### Werknemersverzekeringen (Employer Contributions) 2025 [T1]
56 
57| Premium | Rate | Max salary base (EUR) | Notes |
58|---|---|---|---|
59| AWf (unemployment — general) | 2.64% (fixed) / 7.64% (flex) | EUR 66,956 | Fixed contract = lower rate |
60| Whk (disability — differentiated) | Sector-dependent (avg ~1.5%) | EUR 66,956 | Based on sector and claims history |
61| Aof (disability — basic) | 6.18% (large) / 5.82% (small employer) | EUR 66,956 | Small = < 25× avg premium base |
62| **Zvw (health insurance)** | **6.57%** | **EUR 66,956** | Employer-paid (not withheld from employee) |
63 
64### AWf Premium — Contract Type Distinction [T1]
65 
66| Contract type | AWf rate 2025 |
67|---|---|
68| Permanent contract (vast contract, schriftelijk) | 2.64% |
69| Flexible contract (bepaalde tijd, oproep, uitzend) | 7.64% |
70 
71**Conditions for low rate:**
72- Written permanent contract (schriftelijke arbeidsovereenkomst voor onbepaalde tijd)
73- Not an on-call contract (geen oproepovereenkomst)
74- Employee works ≥ contracted hours (no excessive overtime correction needed)
75 
76### Wage Tax Tables 2025 [T1]
77 
78The loonbelasting/premie volksverzekeringen are computed using Belastingdienst-provided tax tables:
79 
80| Table type | Application |
81|---|---|
82| White table (witte tabel) | Standard employment |
83| Green table (groene tabel) | One-off payments, holiday allowance, bonuses |
84| Anonymous table | No BSN or ID provided — 52% flat rate |
85| Table for DGA | DGA monthly minimum salary |
86 
87---
88 
89## Section 2 — Werkkostenregeling (WKR) — Work Cost Scheme
90 
91### Concept [T1]
92 
93The WKR allows employers to provide tax-free benefits to employees within a "free space" (vrije ruimte) budget. Benefits exceeding the free space are subject to 80% flat-rate employer tax (eindheffing).
94 
95### Vrije Ruimte 2025 [T1]
96 
97| Fiscal wage base (loonsom) | Free space percentage |
98|---|---|
99| First EUR 400,000 | 1.92% |
100| Above EUR 400,000 | 1.18% |
101 
102**Example:** Employer with EUR 1,000,000 wage base:
103- Free space = EUR 400,000 × 1.92% + EUR 600,000 × 1.18% = EUR 7,680 + EUR 7,080 = EUR 14,760
104 
105### WKR Categories [T1]
106 
107| Category | Treatment | Examples |
108|---|---|---|
109| Gerichte vrijstellingen (targeted exemptions) | Fully exempt — do NOT count against vrije ruimte | Travel allowance (max EUR 0.23/km), training costs, verhuiskostenvergoeding, extraterritoriale kosten (30% ruling) |
110| Nihilwaarderingen (nil valuations) | Valued at EUR 0 — do NOT count against vrije ruimte | Workplace facilities (coffee, fruit), work clothing required for job, tools used at workplace |
111| Vrije ruimte (free space) | Counts against budget; excess taxed at 80% | Christmas gifts, company parties, non-targeted benefits, staff outings |
112| Individueel belast (individually taxed) | Taxed as employee wage (not WKR) | Benefits employee chooses to have taxed individually |
113 
114### Gerichte Vrijstellingen — Key Amounts 2025 [T1]
115 
116| Exemption | Amount/Rule |
117|---|---|
118| Travel allowance (reiskostenvergoeding) | Max EUR 0.23 per km (no cap on distance) |
119| Relocation allowance (verhuiskostenvergoeding) | Max EUR 7,750 + actual moving costs |
120| Study/training costs | Fully exempt if related to (future) employment |
121| Meals at workplace (maaltijden) | Valued at EUR 3.55 per meal (2025); excess over employee contribution = WKR |
122| Extraterritoriale kosten (30% ruling) | 30% of salary exempt or actual extraterritorial costs |
123| Work-from-home allowance (thuiswerkvergoeding) | EUR 2.35 per day (2025) |
124| Internet/phone (if partly business) | Reasonable business portion exempt |
125 
126### Eindheffing (Flat-Rate Tax on Excess) [T1]
127 
128| Situation | Rate |
129|---|---|
130| Benefits exceeding vrije ruimte | 80% eindheffing (paid by employer) |
131| Benefits exceeding EUR 2,400/occasion (gebruikelijkheidstoets) | Cannot use WKR — must be individually taxed |
132 
133**Gebruikelijkheidstoets:** A single benefit provision cannot exceed EUR 2,400 per employee per occasion under the WKR. If it does, it must be individually taxed or split.
134 
135---
136 
137## Section 3 — Filing Obligations and Deadlines
138 
139### Periodic Filing [T1]
140 
141| Obligation | Frequency | Deadline |
142|---|---|---|
143| Loonaangifte (payroll tax return) | Per pay period (monthly or 4-weekly) | Last day of month following pay period |
144| Payment of loonheffingen | Per pay period | Same as filing deadline |
145| Correctie loonaangifte | As needed | Within 5 years; penalties may apply after initial filing |
146 
147### Annual Obligations [T1]
148 
149| Obligation | Deadline | Notes |
150|---|---|---|
151| Jaaropgave (annual statement to employees) | 28 February | Employer provides to each employee |
152| WKR eindheffing determination | In first payroll return of following year | Determine if vrije ruimte exceeded; report 80% tax |
153| Renseignementen (information returns) | Various | Third-party payments > EUR 5,000/year |
154 
155### Key Dates [T1]
156 
157| Event | Date |
158|---|---|
159| Payroll return deadline (monthly) | Last day of month + 1 month |
160| Annual employer statement (jaaropgave) | 28 February |
161| WKR assessment moment | 31 December (assess full year usage) |
162| Report eindheffing | First return period of new year |
163 
164---
165 
166## Section 4 — Required Inputs and Refusal Catalogue
167 
168### Required Inputs
169 
170**Minimum viable:** Payroll run summary for the period. Employee count and contract types. Gross salary totals.
171 
172**Recommended:** Detailed payroll journal, WKR administration (benefits provided per category), sector classification for Whk, AWf contract type split.
173 
174**Ideal:** Full payroll software export, employment contracts, WKR policy document, expense claim registers, prior-year WKR reconciliation, UWV correspondence.
175 
176### Refusal Catalogue
177 
178**R-LH-1 — No payroll data available.** "Cannot compute loonheffingen without payroll run data. Provide at minimum gross salary totals per period."
179 
180**R-LH-2 — Contract types unclear.** "Cannot determine AWf rate (2.64% vs 7.64%) without confirmed contract types. Flag all employees as flex rate (conservative) until confirmed."
181 
182**R-LH-3 — WKR allocation undocumented.** "Cannot confirm vrije ruimte compliance without benefit-by-benefit administration. Flag for payroll advisor."
183 
184**R-LH-4 — Anonymous employee (no BSN).** "Must apply 52% anonymous rate. Cannot file normally without BSN and ID copy."
185 
186**R-LH-5 — 30% ruling status unclear.** "Cannot apply extraterritorial exemption without confirmed Belastingdienst ruling. Apply standard treatment."
187 
188---
189 
190## Section 5 — Computation Examples
191 
192### Example: Monthly Payroll Tax Computation
193 
194```
195Given:
196- Gross monthly salary: EUR 5,000
197- Employee: permanent contract, below AOW age
198- No special deductions
199 
200Step 1: Determine loonbelasting + premie volksverzekeringen
201 → Use white monthly table from Belastingdienst
202 → Approximate: EUR 5,000 × 35.82% = EUR 1,791 (first bracket)
203 → Actual amount per tax table (includes heffingskortingen)
204 
205Step 2: Employer premiums:
206 → AWf (permanent): EUR 5,000 × 2.64% = EUR 132
207 → Aof: EUR 5,000 × 5.82% = EUR 291 (small employer)
208 → Whk: EUR 5,000 × 1.50% = EUR 75 (example sector rate)
209 → Zvw: EUR 5,000 × 6.57% = EUR 328.50
210 
211Step 3: Total employer cost above gross:
212 → EUR 132 + EUR 291 + EUR 75 + EUR 328.50 = EUR 826.50
213 
214Step 4: Employee net (approximate):
215 → EUR 5,000 − EUR 1,791 + heffingskortingen (from table) = net salary
216```
217 
218### Example: WKR Assessment
219 
220```
221Given:
222- Annual wage base (fiscale loonsom): EUR 800,000
223- Benefits provided: Christmas packages EUR 8,000, staff party EUR 5,000, bicycle scheme EUR 3,000
224 
225Step 1: Calculate vrije ruimte:
226 → EUR 400,000 × 1.92% = EUR 7,680
227 → EUR 400,000 × 1.18% = EUR 4,720
228 → Total: EUR 12,400
229 
230Step 2: Determine which benefits count:
231 → Christmas packages: EUR 8,000 (vrije ruimte)
232 → Staff party: EUR 5,000 (vrije ruimte)
233 → Bicycle scheme: EUR 3,000 (vrije ruimte — not a gerichte vrijstelling)
234 → Total allocated: EUR 16,000
235 
236Step 3: Excess:
237 → EUR 16,000 − EUR 12,400 = EUR 3,600
238 
239Step 4: Eindheffing:
240 → EUR 3,600 × 80% = EUR 2,880 (employer pays)
241```
242 
243---
244 
245## Section 6 — Control Checks and Red Flags
246 
247| Check | Issue if triggered |
248|---|---|
249| AWf rate mismatch vs contract type | Incorrect premium — back-payment risk |
250| WKR benefit > EUR 2,400 per person per occasion | Gebruikelijkheidstoets failed — must individually tax |
251| Vrije ruimte exceeded without eindheffing | Missing tax payment |
252| Employee hours > 130% of contracted hours | AWf low rate at risk (herzieningsregeling) |
253| Late filing (> 1 month) | EUR 65 fine per return; escalates |
254| Missing jaaropgave | Employee cannot file IB return correctly |
255| DGA on payroll below EUR 56,000 | Gebruikelijk loon non-compliance |
256| No written employment contracts | All employees default to flex AWf rate |
257 
258---
259 
260## Section 7 — Official Source Verification Requirements
261 
262Before any rate, threshold, or deadline is used in output:
263 
2641. Verify payroll filing instructions on `belastingdienst.nl/loonheffingen`
2652. Verify premium rates in the annual "Nieuwsbrief Loonheffingen" (Belastingdienst)
2663. Verify statutory text on `wetten.overheid.nl` (Wet LB 1964, Wfsv)
2674. Record exact URL and retrieval date (YYYY-MM-DD)
2685. If source unavailable or conflicting: mark as **UNVERIFIED** and require professional confirmation
269 
270---
271 
272## Section 8 — Escalation Points
273 
274Escalate to a qualified salarisadviseur or belastingadviseur when:
275 
276- Employee/contractor classification (dienstverband vs. opdracht) is unclear
277- 30% ruling eligibility or application questions
278- Cross-border employment (posting, frontier worker, split payroll)
279- Payroll corrections affecting multiple prior periods
280- Werknemersverzekeringen premium disputes with UWV
281- WKR exceeds vrije ruimte by material amount (> EUR 10,000)
282- Reorganisation or mass dismissal payroll implications
283- Expatriate or DGA compensation structuring
284 
285---
286 
287**⚠️ DISCLAIMER: This skill provides workflow support only and does not constitute tax or payroll advice. All positions must be reviewed and signed off by a qualified Dutch belastingadviseur or salarisadministrateur before filing. Rates and thresholds change annually — verify against the current year's Nieuwsbrief Loonheffingen from belastingdienst.nl.**
288 
289---
290 
291*OpenAccountants — open-source tax computation skills*
292*openaccountants.com*
293 

Run this skill, then get an accountant to check it

After running the full skill pack in Claude, sign up and upload your worksheet. We'll connect you with a trusted accountant in our network who can review your numbers before you file.

Discussions(0)

No discussions yet. Verified accountants can post questions about this skill.

Quality

Q2: Research-verified

Deep research against tax authority sources. Not yet tested on real data.

Needs real client data + practitioner sign-off to reach Q1.

Accountant Review

Unverified
0/27

About

Use this skill whenever asked about Dutch payroll taxes (loonheffingen) or the work cost scheme (werkkostenregeling / WKR). Trigger on phrases like "loonheffingen", "payroll tax Netherlands", "werkkostenregeling", "WKR", "loonbelasting", "premies volksverzekeringen", "premies werknemersverzekeringen", "wage tax NL", "eindheffing", "vrije ruimte", "salary administration", "loonadministratie", "werkgeverslasten", "employer costs NL", "payroll period filing", "loonstrook", "jaarloonopgave", "UWV premies", "WAO/WIA", "ZW premie", "AWf premie", "Whk premie", or any question about Dutch employer withholding, social contributions, or employee benefit taxation. Also trigger when reviewing payroll runs, computing employer costs, or advising on WKR allocation. ALWAYS read this skill before touching any Dutch payroll tax work.

NLty-2025

Use this skill

This skill is open source and free to use in any AI agent. Copy it, download it, or clone the repo. If you find an error, flag it — a licensed accountant will review.

7 of 7 in the NL workflow: