Use this skill with your AI agent
Paste this skill into your AI agent's context, or save the file to your project. Works with any AI agent that reads markdown.
| 1 | --- |
| 2 | name: de-payroll |
| 3 | description: > |
| 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. |
| 5 | version: 1.0 |
| 6 | jurisdiction: DE |
| 7 | tax_year: 2025 |
| 8 | category: international |
| 9 | depends_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 | |
| 88 | Average 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 | |
| 102 | In 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 | |
| 114 | Income 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 | |
| 155 | The 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 | |
| 157 | All 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 | ``` |
| 162 | Input: X = zu versteuerndes Einkommen (taxable income) in EUR, whole euros |
| 163 | GFB = 12,096 |
| 164 | |
| 165 | Zone 0 -- Grundfreibetrag: |
| 166 | If X < GFB + 1 (i.e., X <= 12,096): |
| 167 | ST = 0 |
| 168 | |
| 169 | Zone 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 | |
| 175 | Zone 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 | |
| 181 | Zone 3 -- Proportionalzone (42%): |
| 182 | If 68,481 <= X < 277,826: |
| 183 | ST = floor(X * 0.42 - 10,911.92) |
| 184 | |
| 185 | Zone 4 -- Reichensteuer (45%): |
| 186 | If X >= 277,826: |
| 187 | ST = floor(X * 0.45 - 19,246.67) |
| 188 | |
| 189 | Final: 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 | |
| 195 | Steuerklassen 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 | ``` |
| 198 | UP5_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 | |
| 206 | The 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 | ``` |
| 217 | SOLZFREI = 19,950 * KZTAB |
| 218 | (EUR 19,950 for Grundtarif; EUR 39,900 for Splitting) |
| 219 | |
| 220 | If 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) |
| 224 | Else: |
| 225 | SolZ = 0 |
| 226 | |
| 227 | JBMG = Jahresbemessungsgrundlage (annual Lohnsteuer for SolZ assessment, |
| 228 | computed from Jahreslohnsteuer after §51a EStG adjustments) |
| 229 | ``` |
| 230 | |
| 231 | The 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 | |
| 235 | The PAP deducts a Vorsorgepauschale from gross income before computing Lohnsteuer. This is an approximation of the employee's social insurance contributions: |
| 236 | |
| 237 | ``` |
| 238 | MPARA 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 | |
| 247 | VSP1 = min(annual_gross, BBGRV) * RVSATZAN |
| 248 | VSP2 = min(annual_gross * 0.12, VHB) |
| 249 | VHB = 3,000 (Stkl III) or 1,900 (others) |
| 250 | VSP3 = min(annual_gross, BBGKVPV) * (KVSATZAN + PVSATZAN) |
| 251 | VSP = 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 | |
| 260 | For each employee, the employer computes contributions on `assessment_base = min(gross_monthly, BBG)`: |
| 261 | |
| 262 | ``` |
| 263 | Branch | Rate (AN) | Rate (AG) | BBG monthly | Max AN/month | Max AG/month |
| 264 | ----------------|-----------|-----------|------------- |------------- |------------- |
| 265 | RV (Pension) | 9.30% | 9.30% | EUR 8,050.00 | EUR 748.65 | EUR 748.65 |
| 266 | KV (Health) | 7.30%+ZB/2 | 7.30%+ZB/2 | EUR 5,512.50 | varies | varies |
| 267 | PV (Care) | varies | 1.80% | EUR 5,512.50 | varies | EUR 99.23 |
| 268 | AV (Unemploymt) | 1.30% | 1.30% | EUR 8,050.00 | EUR 104.65 | EUR 104.65 |
| 269 | ``` |
| 270 | |
| 271 | With 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 | |
| 385 | These 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 | |
| 423 | Sonstige Bezuege (bonuses, severance, holiday pay) are taxed separately per §39b Abs. 3 EStG. The PAP: |
| 424 | |
| 425 | 1. Computes annual Lohnsteuer on regular pay alone (Jahresarbeitslohn) |
| 426 | 2. Computes annual Lohnsteuer on regular pay + sonstiger Bezug |
| 427 | 3. The difference is the tax on the sonstiger Bezug |
| 428 | |
| 429 | This prevents the progressive rate from being distorted by one-time payments. |
| 430 | |
| 431 | For 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.** |
| 463 | Input: STKL=1, RE4=400000 (cents), LZZ=2, R=0, KVZ=2.50, PVZ=1, KRV=0, PKV=0. |
| 464 | Expected: LSTLZZ approximately EUR 535 (monthly Lohnsteuer in cents). SOLZLZZ = 0 (below Freigrenze). BK = 0. |
| 465 | SV 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).** |
| 468 | Input: STKL=3, RE4=600000, LZZ=2, R=1, ZKF=2.0, PVZ=0, PVA=1, KVZ=2.50. |
| 469 | Expected: Significantly lower LSt due to Splitting. KiSt = BK x 8%. |
| 470 | SV: 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.** |
| 473 | Input: STKL=5, RE4=250000, LZZ=2, PVZ=1, KVZ=2.50. |
| 474 | Expected: 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.** |
| 477 | Input: STKL=1, RE4=1000000, LZZ=2, PVZ=1. |
| 478 | Expected: 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.** |
| 481 | Input: Annual LSt = EUR 20,500, single. |
| 482 | Expected: 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.** |
| 485 | All 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 | |
| 520 | This 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 | |
| 522 | The 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 | |
| 524 | The 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
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.
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.