Not tax advice. Computation tools only. Have a professional check your work before filing.
openaccountants/skills/de-payroll.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.

de-payroll.md525 lines23.6 KB
v10Germany
Not yet verified by an accountantContact accountant
1---
2name: de-payroll
3description: >
4 Use this skill whenever asked about German payroll tax (Lohnsteuer) computation for EMPLOYEES. Trigger on phrases like "Lohnsteuer", "Gehaltsabrechnung", "payslip Germany", "Steuerklasse", "Brutto Netto", "Solidaritaetszuschlag on wages", "Kirchensteuer on payroll", "Sozialversicherungsbeitraege employee", "Arbeitnehmeranteil", "Arbeitgeberanteil", "Beitragsbemessungsgrenze", "Lohnabrechnung", "Nettolohn", "payroll withholding Germany", "German wage tax", "Lohnsteuerklasse I II III IV V VI", or any question about computing employee payroll deductions in Germany. Covers Lohnsteuer (income tax withholding), Solidaritatszuschlag, Kirchensteuer, and all four branches of Sozialversicherung (RV, KV, PV, AV) from an employer/employee split perspective. This is SEPARATE from the self-employed income tax skill (de-income-tax.md). ALWAYS read this skill before computing any German employee payroll.
5version: 1.0
6jurisdiction: DE
7tax_year: 2025
8category: international
9depends_on:
10 - income-tax-workflow-base
11 - de-social-contributions
12---
13 
14# Germany Payroll Tax (Lohnsteuer) -- Employee Skill v1.0
15 
16---
17 
18## Section 1 -- Quick Reference
19 
20| Field | Value |
21|---|---|
22| Country | Germany (Bundesrepublik Deutschland) |
23| Taxes | Lohnsteuer (LSt) + Solidaritatszuschlag (SolZ) + Kirchensteuer (KiSt, if applicable) |
24| Social contributions | Rentenversicherung (RV) + Krankenversicherung (KV) + Pflegeversicherung (PV) + Arbeitslosenversicherung (AV) |
25| Currency | EUR only |
26| Pay period | Monthly (Monat), Weekly (Woche), Daily (Tag), or Annual (Jahr) |
27| Primary legislation | Einkommensteuergesetz (EStG) s38--s42f; Solidaritatszuschlaggesetz (SolZG); SGB IV/V/VI/VII/XI |
28| Computation source | BMF Programmablaufplan (PAP) -- official algorithm published annually by the Federal Ministry of Finance |
29| Tax engine repos | [MarcelLehmann/Lohnsteuer](https://github.com/MarcelLehmann/Lohnsteuer) (Apache-2.0, generated from BMF PAP XML, covers 2006--2026); [jenner/LstGen](https://github.com/jenner/LstGen) (MIT, PAP code generator for Python/Java/JS/Go/PHP) |
30| BMF online calculator | [bmf-steuerrechner.de](https://www.bmf-steuerrechner.de) |
31| Contributor | Open Accountants Community |
32| Validated by | Pending -- requires sign-off by a German Steuerberater |
33| Validation date | Pending |
34| Skill version | 1.0 |
35 
36### Grundfreibetrag and Tax Brackets (2025, from BMF PAP September 2025 revision)
37 
38| Taxable Income (EUR) | Rate | PAP Zone |
39|---|---|---|
40| 0 -- 12,096 | 0% | Grundfreibetrag (GFB = 12,096) |
41| 12,097 -- 17,443 | 14% -- ~24% | Progressive zone 1 (linear-progressive, formula below) |
42| 17,444 -- 68,480 | ~24% -- 42% | Progressive zone 2 (linear-progressive, formula below) |
43| 68,481 -- 277,825 | 42% | Proportionalzone (flat) |
44| 277,826+ | 45% | Reichensteuer |
45 
46**Germany uses the BMF Programmablaufplan (PAP) formula, not simple bracket multiplication. The exact formula is in Section 3.**
47 
48### Solidaritatszuschlag (SolZ) on Lohnsteuer
49 
50| Item | Value |
51|---|---|
52| Rate | 5.5% of Lohnsteuer |
53| Freigrenze (single / Stkl I, II, IV, V, VI) | Jahreslohnsteuer up to EUR 19,950 -- no SolZ |
54| Freigrenze (married / Stkl III) | Jahreslohnsteuer up to EUR 39,900 -- no SolZ |
55| Gleitzone (phase-in) | 11.9% marginal rate on LSt between Freigrenze and full-rate zone |
56 
57### Kirchensteuer (KiSt)
58 
59| Item | Value |
60|---|---|
61| Rate (most Lander) | 9% of Lohnsteuer |
62| Rate (Bavaria, Baden-Wurttemberg) | 8% of Lohnsteuer |
63| Applied only if | Employee is a registered church member (R > 0 in ELStAM) |
64| Bemessungsgrundlage | BK output from PAP (Lohnsteuer after certain adjustments) |
65 
66### Steuerklassen (Tax Classes)
67 
68| Class | Who | Tariff | Key Parameters (2025 PAP) |
69|---|---|---|---|
70| I | Single, divorced, widowed | Grundtarif | ANP=1,230; SAP=36; KFB=ZKF x 9,600; KZTAB=1 |
71| II | Single parent (Alleinerziehend) | Grundtarif + EFA | ANP=1,230; SAP=36; KFB=ZKF x 9,600; EFA=4,260; KZTAB=1 |
72| III | Married, sole earner or higher earner (spouse in V) | Splittingtarif | ANP=1,230; SAP=36; KFB=ZKF x 9,600; KZTAB=2 |
73| IV | Married, both earning similar amounts | Grundtarif | ANP=1,230; SAP=36; KFB=ZKF x 4,800; KZTAB=1 |
74| V | Married, lower earner (spouse in III) | Special min-tax method | ANP=1,230; SAP=36; KFB=0; special MST5_6 |
75| VI | Second or additional employment | No allowances | No ANP, no FVBZ, no KFB |
76 
77**Key:** ANP = Arbeitnehmer-Pauschbetrag (employee lump sum EUR 1,230); SAP = Sonderausgaben-Pauschbetrag (EUR 36); KFB = Kinderfreibetrag per child (EUR 9,600 full / EUR 4,800 half); EFA = Entlastungsbetrag fuer Alleinerziehende (EUR 4,260); KZTAB = tariff multiplier (1 = Grundtarif, 2 = Splittingverfahren); ZKF = number of child allowances.
78 
79### Social Security Rates (2025)
80 
81| Branch | German Name | Total Rate | Employee (AN) | Employer (AG) |
82|---|---|---|---|---|
83| Pension | Rentenversicherung (RV) | 18.6% | 9.3% | 9.3% |
84| Health | Krankenversicherung (KV) | 14.6% + Zusatzbeitrag | 7.3% + ZB/2 | 7.3% + ZB/2 |
85| Care | Pflegeversicherung (PV) | 3.6% base | see table below | see table below |
86| Unemployment | Arbeitslosenversicherung (AV) | 2.6% | 1.3% | 1.3% |
87 
88Average Zusatzbeitrag (ZB) for 2025: **2.5%** (varies by Krankenkasse). Total KV with average ZB = 17.1%.
89 
90### Pflegeversicherung Detail (2025)
91 
92| Situation | Employee (AN) | Employer (AG) | Total |
93|---|---|---|---|
94| Childless, age 23+ (PVZ=1) | 2.4% | 1.8% | 4.2% |
95| 1 child (PVZ=0, PVA=0) | 1.8% | 1.8% | 3.6% |
96| 2 children (PVZ=0, PVA=1) | 1.55% | 1.8% | 3.35% |
97| 3 children (PVZ=0, PVA=2) | 1.3% | 1.8% | 3.1% |
98| 4 children (PVZ=0, PVA=3) | 1.05% | 1.8% | 2.85% |
99| 5+ children (PVZ=0, PVA=4) | 0.8% | 1.8% | 2.6% |
100| **Sachsen exception** (PVS=1) | +0.5% AN | -0.5% AG | same total |
101 
102In Sachsen, the employee pays 0.5% more and the employer pays 0.5% less (Buss- und Bettag adjustment). For childless in Sachsen: AN = 2.9%, AG = 1.3%.
103 
104### Beitragsbemessungsgrenzen (Contribution Ceilings, 2025)
105 
106| Ceiling | Monthly | Annual | Applies to |
107|---|---|---|---|
108| KV/PV-BBG | EUR 5,512.50 | EUR 66,150 | Health + Care insurance |
109| RV-BBG (West) | EUR 8,050.00 | EUR 96,600 | Pension insurance |
110| RV-BBG (East) | EUR 8,050.00 | EUR 96,600 | Pension insurance (unified since 2025) |
111| AV-BBG | EUR 8,050.00 | EUR 96,600 | Unemployment insurance |
112| JAEG (Versicherungspflichtgrenze) | EUR 6,150.00 | EUR 73,800 | Threshold above which employees may opt for PKV |
113 
114Income above the BBG is not subject to contributions for that branch.
115 
116### Conservative Defaults
117 
118| Ambiguity | Default |
119|---|---|
120| Unknown Steuerklasse | Steuerklasse I |
121| Unknown church membership | No Kirchensteuer (R=0) |
122| Unknown Zusatzbeitrag | Use average 2.5% |
123| Unknown number of children | Childless surcharge (PVZ=1) |
124| Unknown KRV status | KRV=0 (statutory pension insured) |
125| Unknown Sachsen status | PVS=0 (non-Sachsen) |
126 
127---
128 
129## Section 2 -- Required Inputs and Refusal Catalogue
130 
131### Required Inputs
132 
133**Minimum viable** -- gross monthly salary (Bruttolohn), Steuerklasse, and pay period (monthly/weekly).
134 
135**Recommended** -- Zusatzbeitrag of specific Krankenkasse, number and ages of children, church membership, Freibetrag from ELStAM, KRV status, Sachsen residence.
136 
137**Ideal** -- full ELStAM data (electronic wage tax deduction characteristics), employment contract, prior Lohnsteuerbescheinigung.
138 
139### Refusal Catalogue
140 
141**R-DE-P-1 -- Self-employed / Freiberufler.** "This skill covers employee payroll (Lohnsteuer). Self-employed persons compute Einkommensteuer, not Lohnsteuer. Use de-income-tax.md."
142 
143**R-DE-P-2 -- Mini-job (geringfugige Beschaftigung).** "Mini-jobs up to EUR 556/month have flat-rate taxation (2% pauschale Lohnsteuer or individual). Separate rules apply."
144 
145**R-DE-P-3 -- Cross-border workers (Grenzganger).** "Cross-border employment requires DBA analysis and potentially foreign social security. Escalate to Steuerberater."
146 
147**R-DE-P-4 -- Board members / Geschaftsfuhrer of GmbH.** "Managing directors have special social security rules. Escalate."
148 
149**R-DE-P-5 -- Short-term employment (kurzfristige Beschaftigung).** "Limited to 70 working days or 3 months per year. Special rules apply."
150 
151---
152 
153## Section 3 -- BMF PAP Tax Formula (UPTAB25)
154 
155The following is the exact Einkommensteuer tariff formula from the BMF Programmablaufplan for 2025 (September 2025 revision), as implemented in [MarcelLehmann/Lohnsteuer](https://github.com/MarcelLehmann/Lohnsteuer) `Lohnsteuer2025.java`.
156 
157All values are annual. For monthly/weekly/daily payroll, the PAP annualises the pay period amount, computes annual tax, then divides back.
158 
159### Formula (§32a EStG, 2025 PAP constants)
160 
161```
162Input: X = zu versteuerndes Einkommen (taxable income) in EUR, whole euros
163 GFB = 12,096
164 
165Zone 0 -- Grundfreibetrag:
166 If X < GFB + 1 (i.e., X <= 12,096):
167 ST = 0
168 
169Zone 1 -- Progressive zone 1 (14% entry rate):
170 If 12,097 <= X < 17,444:
171 Y = (X - 12,096) / 10,000
172 RW = Y * 932.30 + 1,400
173 ST = floor(RW * Y)
174 
175Zone 2 -- Progressive zone 2:
176 If 17,444 <= X < 68,481:
177 Y = (X - 17,443) / 10,000
178 RW = Y * 176.64 + 2,397
179 ST = floor(RW * Y + 1,015.13)
180 
181Zone 3 -- Proportionalzone (42%):
182 If 68,481 <= X < 277,826:
183 ST = floor(X * 0.42 - 10,911.92)
184 
185Zone 4 -- Reichensteuer (45%):
186 If X >= 277,826:
187 ST = floor(X * 0.45 - 19,246.67)
188 
189Final: ST = ST * KZTAB
190 (KZTAB = 2 for Steuerklasse III Splitting; KZTAB = 1 for all others)
191```
192 
193### Steuerklasse V/VI Special Method (MST5_6)
194 
195Steuerklassen V and VI use a different computation per §39b Abs. 2 Satz 7 EStG. Instead of the standard UPTAB25, the PAP computes tax on 1.25x and 0.75x the income, takes the difference, doubles it, and applies a 14% minimum:
196 
197```
198UP5_6(ZX):
199 ST1 = UPTAB25(ZX * 1.25)
200 ST2 = UPTAB25(ZX * 0.75)
201 DIFF = (ST1 - ST2) * 2
202 MIST = floor(ZX * 0.14) -- minimum tax
203 ST = max(DIFF, MIST)
204```
205 
206The thresholds W1STKL5, W2STKL5, W3STKL5 create additional breakpoints:
207 
208| Threshold | 2025 Value | Rate above |
209|---|---|---|
210| W1STKL5 | EUR 13,785 | 42% marginal via comparison check |
211| W2STKL5 | EUR 34,240 | 42% flat marginal |
212| W3STKL5 | EUR 222,260 | 45% flat marginal |
213 
214### Solidaritatszuschlag Formula (MSOLZ)
215 
216```
217SOLZFREI = 19,950 * KZTAB
218 (EUR 19,950 for Grundtarif; EUR 39,900 for Splitting)
219 
220If JBMG > SOLZFREI:
221 SOLZJ = floor(JBMG * 5.5 / 100, 2 decimals)
222 SOLZMIN = floor((JBMG - SOLZFREI) * 11.9 / 100, 2 decimals)
223 SolZ = min(SOLZJ, SOLZMIN)
224Else:
225 SolZ = 0
226 
227JBMG = Jahresbemessungsgrundlage (annual Lohnsteuer for SolZ assessment,
228 computed from Jahreslohnsteuer after §51a EStG adjustments)
229```
230 
231The 11.9% phase-in rate ensures the SolZ increases gradually above the Freigrenze rather than jumping to 5.5%.
232 
233### Vorsorgepauschale (Insurance Deduction in Tax Computation)
234 
235The PAP deducts a Vorsorgepauschale from gross income before computing Lohnsteuer. This is an approximation of the employee's social insurance contributions:
236 
237```
238MPARA constants (2025):
239 BBGRV = 96,600 (annual pension ceiling)
240 RVSATZAN = 0.093 (employee pension rate)
241 BBGKVPV = 66,150 (annual health/care ceiling)
242 KVSATZAN = 0.07 + KVZ/200 (employee health rate: 7.0% base + half Zusatzbeitrag)
243 KVSATZAG = 0.07 + 0.0125 (employer health rate for Vorsorgepauschale: 8.25%)
244 PVSATZAN = 0.018 (employee care rate, non-Sachsen; 0.023 Sachsen)
245 PVSATZAG = 0.018 (employer care rate, non-Sachsen; 0.013 Sachsen)
246 
247VSP1 = min(annual_gross, BBGRV) * RVSATZAN
248VSP2 = min(annual_gross * 0.12, VHB)
249 VHB = 3,000 (Stkl III) or 1,900 (others)
250VSP3 = min(annual_gross, BBGKVPV) * (KVSATZAN + PVSATZAN)
251VSP = max(VSP1 + VSP2, VSP1 + VSP3)
252```
253 
254---
255 
256## Section 4 -- Social Security Computation (Employer Payroll)
257 
258### 4.1 Monthly Payroll Social Security Deductions
259 
260For each employee, the employer computes contributions on `assessment_base = min(gross_monthly, BBG)`:
261 
262```
263Branch | Rate (AN) | Rate (AG) | BBG monthly | Max AN/month | Max AG/month
264----------------|-----------|-----------|------------- |------------- |-------------
265RV (Pension) | 9.30% | 9.30% | EUR 8,050.00 | EUR 748.65 | EUR 748.65
266KV (Health) | 7.30%+ZB/2 | 7.30%+ZB/2 | EUR 5,512.50 | varies | varies
267PV (Care) | varies | 1.80% | EUR 5,512.50 | varies | EUR 99.23
268AV (Unemploymt) | 1.30% | 1.30% | EUR 8,050.00 | EUR 104.65 | EUR 104.65
269```
270 
271With average ZB = 2.5%:
272- KV employee: 7.3% + 1.25% = 8.55% of min(gross, 5,512.50) → max EUR 471.32/month
273- KV employer: 7.3% + 1.25% = 8.55% of min(gross, 5,512.50) → max EUR 471.32/month
274 
275### 4.2 Total Maximum Monthly Deductions (at or above all ceilings)
276 
277| Branch | Employee Max | Employer Max | Total Max |
278|---|---|---|---|
279| RV | EUR 748.65 | EUR 748.65 | EUR 1,497.30 |
280| KV (avg ZB 2.5%) | EUR 471.32 | EUR 471.32 | EUR 942.64 |
281| PV (childless) | EUR 132.30 | EUR 99.23 | EUR 231.53 |
282| PV (1 child) | EUR 99.23 | EUR 99.23 | EUR 198.45 |
283| AV | EUR 104.65 | EUR 104.65 | EUR 209.30 |
284| **Total (childless)** | **EUR 1,456.92** | **EUR 1,423.85** | **EUR 2,880.77** |
285| **Total (1 child)** | **EUR 1,423.85** | **EUR 1,423.85** | **EUR 2,847.69** |
286 
287### 4.3 Employer-Only Contributions (not deducted from employee)
288 
289| Contribution | Rate | Base |
290|---|---|---|
291| Umlage U1 (sick pay, <30 employees) | 0.9%--4.1% (varies by Krankenkasse) | Gross up to KV-BBG |
292| Umlage U2 (maternity) | 0.19%--0.8% (varies) | Gross up to KV-BBG |
293| Insolvenzgeldumlage | 0.06% | Gross up to RV-BBG |
294| Berufsgenossenschaft (accident) | varies by industry (0.5%--10%+) | Gross (industry-specific ceiling) |
295 
296---
297 
298## Section 5 -- Worked Examples
299 
300### Example 1 -- Steuerklasse I, EUR 4,000/month, no church, childless
301 
302**Input:** Brutto EUR 4,000/month, Stkl I, R=0, PVZ=1, KVZ=2.50%, KRV=0, PVS=0
303 
304**Lohnsteuer computation (annualised):**
305- Annual gross = EUR 48,000
306- Less ANP (1,230) + SAP (36) + Vorsorgepauschale
307- VSP1 = 48,000 x 0.093 = 4,464
308- VSP3 = 48,000 x (0.07 + 0.0125 + 0.018 + 0.006) = 48,000 x 0.1065 = 5,112
309- VSP = max(4,464 + 1,900, 4,464 + 5,112) = max(6,364, 9,576) = 9,576
310- ZVE = 48,000 - 1,230 - 36 - 9,576 = 37,158
311- UPTAB25(37,158): Zone 2: Y = (37,158 - 17,443)/10,000 = 1.9715; RW = 1.9715 x 176.64 + 2,397 = 2,745.25; ST = floor(2,745.25 x 1.9715 + 1,015.13) = floor(6,425.96) = 6,425
312- Monthly LSt = floor(6,425 x 100 / 12) / 100 = EUR 535.41/month (approximate)
313 
314**SolZ:** JBMG = 6,425 < SOLZFREI 19,950 → SolZ = EUR 0
315 
316**Social security:**
317- RV: 4,000 x 9.3% = EUR 372.00
318- KV: 4,000 x 8.55% = EUR 342.00
319- PV: 4,000 x 2.4% = EUR 96.00
320- AV: 4,000 x 1.3% = EUR 52.00
321- Total SV (AN): EUR 862.00
322 
323**Approximate net:** 4,000 - 535 - 0 - 0 - 862 = **EUR 2,603/month**
324 
325### Example 2 -- Steuerklasse III, EUR 6,000/month, church (Bavaria), 2 children
326 
327**Input:** Brutto EUR 6,000/month, Stkl III, R=1 (church, 8% Bayern), ZKF=2.0, PVZ=0, PVA=1, KVZ=2.50%
328 
329**Lohnsteuer (annualised):**
330- Annual gross = EUR 72,000
331- KZTAB = 2 (Splitting)
332- KFB = 2.0 x 9,600 = 19,200
333- ZVE after deductions and Vorsorgepauschale: computed per PAP
334- X = ZVE / 2 (Splitting)
335- Apply UPTAB25 to X, then ST = ST x 2
336- Result: significantly lower than Stkl I due to Splitting
337 
338**Social security (2 children):**
339- RV: 6,000 x 9.3% = EUR 558.00 (under RV-BBG)
340- KV: 5,512.50 x 8.55% = EUR 471.32 (capped at KV-BBG)
341- PV: 5,512.50 x 1.55% = EUR 85.44 (2 children, PVA=1)
342- AV: 6,000 x 1.3% = EUR 78.00
343- Total SV (AN): EUR 1,192.76
344 
345### Example 3 -- Steuerklasse VI (second job), EUR 1,500/month
346 
347**Input:** Brutto EUR 1,500/month, Stkl VI, R=0
348 
349**Lohnsteuer:** No ANP, no SAP, no KFB, no FVBZ. Higher effective rate since no allowances are applied. MST5_6 method may apply depending on income level.
350 
351**Social security:** Normal rates apply. If already at BBG from primary employment, no additional contributions.
352 
353---
354 
355## Section 6 -- Payslip Transaction Pattern Library
356 
357### 6.1 Payslip Credits (Employee receives)
358 
359| Pattern | Classification | Notes |
360|---|---|---|
361| GEHALT, LOHN, ENTGELT | Net salary payment | After all deductions |
362| NACHZAHLUNG GEHALT | Salary back-payment | May trigger sonstige Bezuege rules |
363| WEIHNACHTSGELD, 13. GEHALT | Christmas bonus | Taxed as sonstiger Bezug |
364| URLAUBSGELD | Holiday bonus | Taxed as sonstiger Bezug |
365| ABFINDUNG | Severance payment | Fuenftelregelung may apply (§34 EStG) |
366| TANTIEME, BONUS, PRAEMIE | Performance bonus | Sonstiger Bezug |
367| JUBILAEUM | Anniversary bonus | Sonstiger Bezug |
368 
369### 6.2 Employer Deductions (visible on payslip, debited from gross)
370 
371| Line Item | What It Is | Employee Portion |
372|---|---|---|
373| LSt / Lohnsteuer | Income tax withholding | 100% employee |
374| SolZ / Solidaritatszuschlag | Solidarity surcharge | 100% employee |
375| KiSt / Kirchensteuer | Church tax | 100% employee |
376| RV-Beitrag AN | Pension contribution | 9.3% of gross (up to BBG) |
377| KV-Beitrag AN | Health contribution | 7.3% + ZB/2 of gross (up to BBG) |
378| PV-Beitrag AN | Care contribution | see PV table above |
379| AV-Beitrag AN | Unemployment contribution | 1.3% of gross (up to BBG) |
380 
381---
382 
383## Section 7 -- Key PAP Input Parameters Reference
384 
385These are the input parameters to the BMF Programmablaufplan, as defined in the [MarcelLehmann/Lohnsteuer](https://github.com/MarcelLehmann/Lohnsteuer) `Lohnsteuer2025.java` (generated from official BMF PAP XML, Stand: 2025-09-17):
386 
387| Parameter | Type | Description |
388|---|---|---|
389| RE4 | BigDecimal | Steuerpflichtiger Arbeitslohn for the pay period, in Cent |
390| STKL | int | Steuerklasse (1--6) |
391| LZZ | int | Pay period: 1=Jahr, 2=Monat, 3=Woche, 4=Tag |
392| R | int | Religion (0=none, church membership code otherwise) |
393| KRV | int | 0=statutory pension insured, 1=not |
394| KVZ | BigDecimal | Zusatzbeitrag in percent (e.g. 2.50) |
395| PVS | int | 1=Sachsen (Pflegeversicherung exception) |
396| PVZ | int | 1=childless surcharge applies |
397| PVA | BigDecimal | Number of Beitragsabschlage (0--4, for children 2--5+) |
398| PKV | int | 0=GKV, 1=PKV without employer subsidy, 2=PKV with subsidy |
399| PKPV | BigDecimal | Monthly PKV premium in Cent (if PKV) |
400| ZKF | BigDecimal | Number of Kinderfreibetrage (one decimal) |
401| af | int | 1=Faktorverfahren selected (Stkl IV only) |
402| f | double | Factor value (default 1.0) |
403| ALTER1 | int | 1=age 64+ at start of calendar year |
404| JFREIB | BigDecimal | Annual Freibetrag from ELStAM, in Cent |
405| JHINZU | BigDecimal | Annual Hinzurechnungsbetrag from ELStAM, in Cent |
406 
407### Key Output Parameters
408 
409| Parameter | Description |
410|---|---|
411| LSTLZZ | Lohnsteuer for the pay period, in Cent |
412| SOLZLZZ | Solidaritatszuschlag for the pay period, in Cent |
413| BK | Bemessungsgrundlage for Kirchensteuer, in Cent |
414| STS | Lohnsteuer on sonstige Bezuege, in Cent |
415| SOLZS | SolZ on sonstige Bezuege, in Cent |
416| BKS | Kirchensteuer Bemessungsgrundlage on sonstige Bezuege, in Cent |
417| VKVLZZ | Arbeitgeberzuschuss zur PKV (for employer subsidy computation), in Cent |
418 
419---
420 
421## Section 8 -- Sonstige Bezuege (Bonuses, One-Time Payments)
422 
423Sonstige Bezuege (bonuses, severance, holiday pay) are taxed separately per §39b Abs. 3 EStG. The PAP:
424 
4251. Computes annual Lohnsteuer on regular pay alone (Jahresarbeitslohn)
4262. Computes annual Lohnsteuer on regular pay + sonstiger Bezug
4273. The difference is the tax on the sonstiger Bezug
428 
429This prevents the progressive rate from being distorted by one-time payments.
430 
431For Entschadigungen/Abfindungen, the Funftelregelung (§34 EStG) may apply:
432- Compute tax on 1/5 of the Abfindung added to regular income
433- Multiply the incremental tax by 5
434- This smooths the progressive effect
435 
436---
437 
438## Section 9 -- Mini-Jobs and Gleitzone (Midijobs)
439 
440### Mini-Jobs (Geringfugige Beschaftigung)
441 
442| Parameter | Value |
443|---|---|
444| Monthly ceiling | EUR 556 (2025) |
445| Employer flat-rate contributions | RV 15%, KV 13%, Pauschalsteuer 2%, U1+U2+Insolvenzumlage |
446| Employee contributions | None (unless RV opt-in: employee pays 3.6% RV top-up) |
447| No Lohnsteuer | Covered by 2% Pauschalsteuer |
448 
449### Midijobs / Uebergangsbereich (Gleitzone)
450 
451| Parameter | Value |
452|---|---|
453| Range | EUR 556.01 -- EUR 2,000.00/month |
454| Employee contributions | Reduced via gliding scale formula |
455| Employer contributions | Full standard rates |
456| Lohnsteuer | Normal withholding per Steuerklasse |
457 
458---
459 
460## Section 10 -- Test Suite
461 
462**Test 1 -- Stkl I, 4,000 brutto, childless, no church.**
463Input: STKL=1, RE4=400000 (cents), LZZ=2, R=0, KVZ=2.50, PVZ=1, KRV=0, PKV=0.
464Expected: LSTLZZ approximately EUR 535 (monthly Lohnsteuer in cents). SOLZLZZ = 0 (below Freigrenze). BK = 0.
465SV deductions: RV=372, KV=342, PV=96, AV=52 = EUR 862/month.
466 
467**Test 2 -- Stkl III, 6,000 brutto, 2 children, church 8% (Bayern).**
468Input: STKL=3, RE4=600000, LZZ=2, R=1, ZKF=2.0, PVZ=0, PVA=1, KVZ=2.50.
469Expected: Significantly lower LSt due to Splitting. KiSt = BK x 8%.
470SV: RV=558, KV=471.32, PV=85.44, AV=78 = EUR 1,192.76/month.
471 
472**Test 3 -- Stkl V, 2,500 brutto, childless.**
473Input: STKL=5, RE4=250000, LZZ=2, PVZ=1, KVZ=2.50.
474Expected: Higher LSt than Stkl I due to MST5_6 method with 14% minimum.
475 
476**Test 4 -- Above all BBGs, Stkl I, 10,000 brutto.**
477Input: STKL=1, RE4=1000000, LZZ=2, PVZ=1.
478Expected: RV capped at 748.65, KV capped at 471.32, PV capped at 132.30, AV capped at 104.65.
479 
480**Test 5 -- SolZ phase-in.**
481Input: Annual LSt = EUR 20,500, single.
482Expected: SOLZFREI = 19,950. SOLZJ = 20,500 x 5.5% = 1,127.50. SOLZMIN = (20,500 - 19,950) x 11.9% = 65.45. SolZ = min(1,127.50, 65.45) = EUR 65.45.
483 
484**Test 6 -- Validate against BMF online calculator.**
485All computations should match [bmf-steuerrechner.de](https://www.bmf-steuerrechner.de) using the same inputs. The MarcelLehmann/Lohnsteuer test suite validates against this API.
486 
487---
488 
489## Section 11 -- Interaction with Other German Skills
490 
491| Scenario | Skill to Use |
492|---|---|
493| Employee payroll (Lohnsteuer) | **This skill (de-payroll.md)** |
494| Self-employed income tax (Einkommensteuer) | de-income-tax.md |
495| Self-employed social contributions | de-social-contributions.md |
496| Gewerbesteuer (trade tax) | de-trade-tax.md |
497| Umsatzsteuer / VAT return | germany-vat-return.md |
498| Quarterly estimated tax payments | de-estimated-tax.md |
499| ZUGFeRD/XRechnung e-invoicing | [horstoeko/zugferd](https://github.com/horstoeko/zugferd) (MIT, PHP) -- uses VAT category codes S/Z/E/AE/K/G/O with rates 19%/7% standard |
500 
501---
502 
503## PROHIBITIONS
504 
505- NEVER compute Lohnsteuer using simple bracket percentages -- use the PAP formula (UPTAB25)
506- NEVER apply Grundtarif (UPTAB25) directly to Steuerklasse V or VI -- use the MST5_6 method
507- NEVER forget the Vorsorgepauschale deduction before computing Lohnsteuer
508- NEVER confuse the KV/PV-BBG (EUR 5,512.50/month) with the RV/AV-BBG (EUR 8,050/month)
509- NEVER apply the childless PV surcharge to employees with children
510- NEVER charge social security contributions above the Beitragsbemessungsgrenze
511- NEVER omit the Sachsen PV exception when the employee is in Sachsen
512- NEVER treat sonstige Bezuege (bonuses) as regular pay -- use the PAP's separate method
513- NEVER assume Kirchensteuer is 9% everywhere -- Bavaria and Baden-Wurttemberg use 8%
514- NEVER present payroll computations as definitive -- direct to Steuerberater/Lohnbuchhalter for sign-off
515 
516---
517 
518## Disclaimer
519 
520This skill and its outputs are provided for informational and computational purposes only and do not constitute tax, legal, or financial advice. Open Accountants and its contributors accept no liability for any errors, omissions, or outcomes arising from the use of this skill. All outputs must be reviewed and signed off by a qualified professional (such as a Steuerberater or Lohnbuchhalter in Germany) before implementation.
521 
522The PAP formula and constants are sourced from the [MarcelLehmann/Lohnsteuer](https://github.com/MarcelLehmann/Lohnsteuer) repository (Apache-2.0), which generates code from the official BMF Programmablaufplan XML. The BMF publishes the PAP at [bmf-steuerrechner.de](https://www.bmf-steuerrechner.de).
523 
524The most up-to-date, verified version of this skill is maintained at [openaccountants.com](https://openaccountants.com). Log in to access the latest version, request a professional review from a licensed accountant, and track updates as tax law changes.
525 

Run this skill, then get an accountant to check it

After running the full skill pack in your AI agent, 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.

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

Not yet reviewed

About

Use this skill whenever asked about German payroll tax (Lohnsteuer) computation for EMPLOYEES. Trigger on phrases like "Lohnsteuer", "Gehaltsabrechnung", "payslip Germany", "Steuerklasse", "Brutto Netto", "Solidaritaetszuschlag on wages", "Kirchensteuer on payroll", "Sozialversicherungsbeitraege employee", "Arbeitnehmeranteil", "Arbeitgeberanteil", "Beitragsbemessungsgrenze", "Lohnabrechnung", "Nettolohn", "payroll withholding Germany", "German wage tax", "Lohnsteuerklasse I II III IV V VI", or any question about computing employee payroll deductions in Germany. Covers Lohnsteuer (income tax withholding), Solidaritatszuschlag, Kirchensteuer, and all four branches of Sozialversicherung (RV, KV, PV, AV) from an employer/employee split perspective. This is SEPARATE from the self-employed income tax skill (de-income-tax.md). ALWAYS read this skill before computing any German employee payroll.

DEty-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.

3 of 9 in the DE workflow: