lohnsteuer-bmf 2026.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,29 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *.egg-info/
5
+ .eggs/
6
+ build/
7
+ dist/
8
+ *.egg
9
+
10
+ # Virtual environments
11
+ .venv/
12
+ venv/
13
+ env/
14
+
15
+ # Test / type / lint caches
16
+ .pytest_cache/
17
+ .mypy_cache/
18
+ .ruff_cache/
19
+ .hypothesis/
20
+ .coverage
21
+ htmlcov/
22
+ coverage.xml
23
+
24
+ # Editors / OS
25
+ .idea/
26
+ .vscode/
27
+ *.swp
28
+ .DS_Store
29
+ Thumbs.db
@@ -0,0 +1,17 @@
1
+ # Changelog
2
+
3
+ Alle nennenswerten Änderungen an diesem Projekt werden hier dokumentiert.
4
+
5
+ Das Format orientiert sich an [Keep a Changelog](https://keepachangelog.com/de/1.1.0/),
6
+ die Versionierung folgt [CalVer](https://calver.org/) (`JAHR.MINOR`, am Steuerjahr orientiert).
7
+
8
+ ## [Unreleased]
9
+
10
+ ### Added
11
+ - Erste Veröffentlichung: Lohnsteuer nach BMF-Programmablaufplan 2026
12
+ (`berechne_lohnsteuer_pap`, `berechne_zve`).
13
+ - Einkommensteuer-Tarif nach §32a EStG inkl. Splitting, Solidaritätszuschlag
14
+ und Kirchensteuer (`berechne_einkommensteuer_tarif`, `einkommensteuer`,
15
+ `einkommensteuer_splitting`, `solidaritaetszuschlag`, `kirchensteuer`).
16
+ - Steuerjahre 2024, 2025 und 2026.
17
+ - Offline, zero dependencies, vollständig typisiert (PEP 561 `py.typed`).
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 L1nch-lab
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,181 @@
1
+ Metadata-Version: 2.4
2
+ Name: lohnsteuer-bmf
3
+ Version: 2026.0
4
+ Summary: Lohnsteuer & Einkommensteuer nach BMF-Programmablaufplan 2026 — offline, typisiert, zero dependencies.
5
+ Project-URL: Homepage, https://github.com/L1nch-lab/lohnsteuer-bmf
6
+ Project-URL: Repository, https://github.com/L1nch-lab/lohnsteuer-bmf
7
+ Project-URL: Hosted API, https://api.rechner-hub.de/steuerrechner-api/
8
+ Project-URL: Changelog, https://github.com/L1nch-lab/lohnsteuer-bmf/blob/main/CHANGELOG.md
9
+ Author: L1nch-lab
10
+ License-Expression: MIT
11
+ License-File: LICENSE
12
+ Keywords: 2026,bmf,einkommensteuer,est,germany,lohnsteuer,pap,programmablaufplan,steuer,tax
13
+ Classifier: Development Status :: 4 - Beta
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: Intended Audience :: Financial and Insurance Industry
16
+ Classifier: Natural Language :: German
17
+ Classifier: Operating System :: OS Independent
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Programming Language :: Python :: 3.13
21
+ Classifier: Topic :: Office/Business :: Financial :: Accounting
22
+ Classifier: Typing :: Typed
23
+ Requires-Python: >=3.12
24
+ Provides-Extra: dev
25
+ Requires-Dist: build>=1.2.2; extra == 'dev'
26
+ Requires-Dist: mypy>=2.1.0; extra == 'dev'
27
+ Requires-Dist: pytest>=9.0.3; extra == 'dev'
28
+ Requires-Dist: ruff==0.15.16; extra == 'dev'
29
+ Requires-Dist: twine>=6.1.0; extra == 'dev'
30
+ Description-Content-Type: text/markdown
31
+
32
+ # lohnsteuer-bmf
33
+
34
+ **Lohn- und Einkommensteuer nach dem BMF-Programmablaufplan 2026 — offline, typisiert, ohne externe Abhängigkeiten.**
35
+
36
+ [![PyPI](https://img.shields.io/pypi/v/lohnsteuer-bmf.svg)](https://pypi.org/project/lohnsteuer-bmf/)
37
+ [![Python](https://img.shields.io/pypi/pyversions/lohnsteuer-bmf.svg)](https://pypi.org/project/lohnsteuer-bmf/)
38
+ [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)
39
+
40
+ `pip install` und loslegen — kein Code-Generator, kein PAP-XML-Parsing, keine
41
+ Laufzeit-Abhängigkeiten. Die Steuerwerte für 2026 sind gegen Primärquellen
42
+ verifiziert (§32a EStG, BMF-PAP 2026, SV-Rechengrößenverordnung 2026).
43
+
44
+ > 🇬🇧 **English speakers:** scroll down for the [English section](#english).
45
+
46
+ ---
47
+
48
+ ## Installation
49
+
50
+ ```bash
51
+ pip install lohnsteuer-bmf
52
+ ```
53
+
54
+ Python ≥ 3.12. Keine Abhängigkeiten.
55
+
56
+ ## Schnellstart
57
+
58
+ Die häufigste Frage zuerst — **Steuerklasse 1, 5.000 € brutto/Monat, 2026:**
59
+
60
+ ```python
61
+ from lohnsteuer_bmf import berechne_lohnsteuer_pap
62
+
63
+ ergebnis = berechne_lohnsteuer_pap(
64
+ brutto_jahr=60_000.0, # 5.000 € * 12
65
+ steuerklasse=1,
66
+ bundesland="Nordrhein-Westfalen",
67
+ mit_kirchensteuer=False,
68
+ kinder=0,
69
+ geburtsjahr=1990,
70
+ kv_zusatzbeitrag=2.9, # durchschnittlicher Zusatzbeitrag 2026
71
+ ist_sachsen=False,
72
+ jahr=2026,
73
+ )
74
+
75
+ print(ergebnis)
76
+ # {'lohnsteuer_monat': 777.33, 'soli_monat': 0.0, 'kirchensteuer_monat': 0.0,
77
+ # 'zve_jahr': 46464.0, 'vorsorgepauschale': 12270.0}
78
+ ```
79
+
80
+ ### Einkommensteuer-Tarif (§32a EStG)
81
+
82
+ ```python
83
+ from lohnsteuer_bmf import berechne_einkommensteuer_tarif
84
+
85
+ t = berechne_einkommensteuer_tarif(zve=50_000, jahr=2026)
86
+ print(t["einkommensteuer"], t["grenzsteuersatz"], t["tarifzone"]["name"])
87
+ # 10548.0 35.0 'Obere Progressionszone'
88
+ ```
89
+
90
+ ### Bausteine
91
+
92
+ ```python
93
+ from lohnsteuer_bmf import (
94
+ einkommensteuer, # §32a EStG, Grundtarif
95
+ einkommensteuer_splitting, # §32a Abs. 5 EStG, Ehegattensplitting
96
+ solidaritaetszuschlag, # §3/§4 SolzG inkl. Milderungszone
97
+ kirchensteuer, # 8 % (BY, BW) / 9 % (übrige Länder)
98
+ )
99
+
100
+ einkommensteuer(50_000, 2026) # 10548
101
+ einkommensteuer_splitting(100_000, 2026) # 21096
102
+ solidaritaetszuschlag(30_864, jahr=2026) # 1251.17
103
+ kirchensteuer(10_000, "Bayern") # 800.0
104
+ ```
105
+
106
+ ## Was ist drin
107
+
108
+ | Funktion | Rechtsgrundlage |
109
+ |---|---|
110
+ | `berechne_lohnsteuer_pap` | BMF-Programmablaufplan 2026 (BMF-Schreiben v. 12.11.2025) |
111
+ | `berechne_zve` | zu versteuerndes Einkommen aus Brutto (Vorsorgepauschale etc.) |
112
+ | `berechne_einkommensteuer_tarif` | §32a EStG inkl. Grenz-/Durchschnittssteuersatz |
113
+ | `einkommensteuer` / `einkommensteuer_splitting` | §32a Abs. 1 / Abs. 5 EStG |
114
+ | `solidaritaetszuschlag` | §3/§4 SolzG |
115
+ | `kirchensteuer` | Landeskirchensteuergesetze |
116
+
117
+ Unterstützte Steuerjahre: **2024, 2025, 2026.**
118
+
119
+ > **Hinweis zu 2024/2025:** Verifiziert und für den produktiven Einsatz empfohlen
120
+ > ist das Steuerjahr **2026**; die Werte für 2024/2025 entsprechen dem Upstream-Stand
121
+ > und werden noch gegen Primärquellen nachgeprüft.
122
+
123
+ ## Brauchst du mehr als Lohn-/Einkommensteuer?
124
+
125
+ Dieses Paket ist die offene Commodity-Schicht. Die **breite Abdeckung** — rund 58
126
+ weitere deutsche Rechner inkl. Sozialleistungen (Bürgergeld, Wohngeld, Elterngeld,
127
+ Gewerbe-/Grunderwerb-/Erbschaftsteuer, Krypto, Photovoltaik u.v.m.), Batch-Endpoints
128
+ und Gemeinde-Hebesätze — gibt es als gehostete REST-API:
129
+
130
+ 👉 **[api.rechner-hub.de/steuerrechner-api](https://api.rechner-hub.de/steuerrechner-api/)**
131
+
132
+ ## Genauigkeit & Haftung
133
+
134
+ Die Berechnungen folgen den offiziellen BMF-Formeln, ersetzen aber **keine
135
+ Steuerberatung**. Alle Angaben ohne Gewähr. Das Paket bildet die maschinelle
136
+ Lohnsteuer-/ESt-Berechnung ab, nicht jeden Einzelfall des Veranlagungsverfahrens.
137
+
138
+ ## Lizenz
139
+
140
+ [MIT](LICENSE) © 2026 L1nch-lab
141
+
142
+ ---
143
+
144
+ ## English
145
+
146
+ **German wage tax (Lohnsteuer) and income tax (Einkommensteuer) per the official
147
+ BMF payroll algorithm (Programmablaufplan) 2026 — offline, typed, zero dependencies.**
148
+
149
+ ```bash
150
+ pip install lohnsteuer-bmf
151
+ ```
152
+
153
+ Quick start — tax class 1, €5,000 gross/month, 2026:
154
+
155
+ ```python
156
+ from lohnsteuer_bmf import berechne_lohnsteuer_pap
157
+
158
+ result = berechne_lohnsteuer_pap(
159
+ brutto_jahr=60_000.0, # 5,000 EUR * 12
160
+ steuerklasse=1, # tax class 1
161
+ bundesland="Nordrhein-Westfalen",
162
+ mit_kirchensteuer=False, # church tax
163
+ kinder=0, # children
164
+ geburtsjahr=1990, # birth year
165
+ kv_zusatzbeitrag=2.9, # avg. health-insurance surcharge 2026
166
+ ist_sachsen=False, # Saxony special rule
167
+ jahr=2026, # tax year
168
+ )
169
+ print(result["lohnsteuer_monat"]) # 777.33 (monthly wage tax in EUR)
170
+ ```
171
+
172
+ What's included: monthly **Lohnsteuer** (BMF-PAP 2026), the **§32a income-tax tariff**
173
+ (incl. spouse splitting, marginal/average rates), **solidarity surcharge** and
174
+ **church tax**. Tax years 2024–2026 (2026 verified against primary sources;
175
+ 2024/2025 mirror upstream and are pending re-verification).
176
+
177
+ Need the full breadth (≈58 more German calculators incl. social benefits, batch
178
+ endpoints, municipal trade-tax rates)? Use the hosted REST API:
179
+ **[api.rechner-hub.de/steuerrechner-api](https://api.rechner-hub.de/steuerrechner-api/)**.
180
+
181
+ Not tax advice — provided as is. Licensed under [MIT](LICENSE).
@@ -0,0 +1,150 @@
1
+ # lohnsteuer-bmf
2
+
3
+ **Lohn- und Einkommensteuer nach dem BMF-Programmablaufplan 2026 — offline, typisiert, ohne externe Abhängigkeiten.**
4
+
5
+ [![PyPI](https://img.shields.io/pypi/v/lohnsteuer-bmf.svg)](https://pypi.org/project/lohnsteuer-bmf/)
6
+ [![Python](https://img.shields.io/pypi/pyversions/lohnsteuer-bmf.svg)](https://pypi.org/project/lohnsteuer-bmf/)
7
+ [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)
8
+
9
+ `pip install` und loslegen — kein Code-Generator, kein PAP-XML-Parsing, keine
10
+ Laufzeit-Abhängigkeiten. Die Steuerwerte für 2026 sind gegen Primärquellen
11
+ verifiziert (§32a EStG, BMF-PAP 2026, SV-Rechengrößenverordnung 2026).
12
+
13
+ > 🇬🇧 **English speakers:** scroll down for the [English section](#english).
14
+
15
+ ---
16
+
17
+ ## Installation
18
+
19
+ ```bash
20
+ pip install lohnsteuer-bmf
21
+ ```
22
+
23
+ Python ≥ 3.12. Keine Abhängigkeiten.
24
+
25
+ ## Schnellstart
26
+
27
+ Die häufigste Frage zuerst — **Steuerklasse 1, 5.000 € brutto/Monat, 2026:**
28
+
29
+ ```python
30
+ from lohnsteuer_bmf import berechne_lohnsteuer_pap
31
+
32
+ ergebnis = berechne_lohnsteuer_pap(
33
+ brutto_jahr=60_000.0, # 5.000 € * 12
34
+ steuerklasse=1,
35
+ bundesland="Nordrhein-Westfalen",
36
+ mit_kirchensteuer=False,
37
+ kinder=0,
38
+ geburtsjahr=1990,
39
+ kv_zusatzbeitrag=2.9, # durchschnittlicher Zusatzbeitrag 2026
40
+ ist_sachsen=False,
41
+ jahr=2026,
42
+ )
43
+
44
+ print(ergebnis)
45
+ # {'lohnsteuer_monat': 777.33, 'soli_monat': 0.0, 'kirchensteuer_monat': 0.0,
46
+ # 'zve_jahr': 46464.0, 'vorsorgepauschale': 12270.0}
47
+ ```
48
+
49
+ ### Einkommensteuer-Tarif (§32a EStG)
50
+
51
+ ```python
52
+ from lohnsteuer_bmf import berechne_einkommensteuer_tarif
53
+
54
+ t = berechne_einkommensteuer_tarif(zve=50_000, jahr=2026)
55
+ print(t["einkommensteuer"], t["grenzsteuersatz"], t["tarifzone"]["name"])
56
+ # 10548.0 35.0 'Obere Progressionszone'
57
+ ```
58
+
59
+ ### Bausteine
60
+
61
+ ```python
62
+ from lohnsteuer_bmf import (
63
+ einkommensteuer, # §32a EStG, Grundtarif
64
+ einkommensteuer_splitting, # §32a Abs. 5 EStG, Ehegattensplitting
65
+ solidaritaetszuschlag, # §3/§4 SolzG inkl. Milderungszone
66
+ kirchensteuer, # 8 % (BY, BW) / 9 % (übrige Länder)
67
+ )
68
+
69
+ einkommensteuer(50_000, 2026) # 10548
70
+ einkommensteuer_splitting(100_000, 2026) # 21096
71
+ solidaritaetszuschlag(30_864, jahr=2026) # 1251.17
72
+ kirchensteuer(10_000, "Bayern") # 800.0
73
+ ```
74
+
75
+ ## Was ist drin
76
+
77
+ | Funktion | Rechtsgrundlage |
78
+ |---|---|
79
+ | `berechne_lohnsteuer_pap` | BMF-Programmablaufplan 2026 (BMF-Schreiben v. 12.11.2025) |
80
+ | `berechne_zve` | zu versteuerndes Einkommen aus Brutto (Vorsorgepauschale etc.) |
81
+ | `berechne_einkommensteuer_tarif` | §32a EStG inkl. Grenz-/Durchschnittssteuersatz |
82
+ | `einkommensteuer` / `einkommensteuer_splitting` | §32a Abs. 1 / Abs. 5 EStG |
83
+ | `solidaritaetszuschlag` | §3/§4 SolzG |
84
+ | `kirchensteuer` | Landeskirchensteuergesetze |
85
+
86
+ Unterstützte Steuerjahre: **2024, 2025, 2026.**
87
+
88
+ > **Hinweis zu 2024/2025:** Verifiziert und für den produktiven Einsatz empfohlen
89
+ > ist das Steuerjahr **2026**; die Werte für 2024/2025 entsprechen dem Upstream-Stand
90
+ > und werden noch gegen Primärquellen nachgeprüft.
91
+
92
+ ## Brauchst du mehr als Lohn-/Einkommensteuer?
93
+
94
+ Dieses Paket ist die offene Commodity-Schicht. Die **breite Abdeckung** — rund 58
95
+ weitere deutsche Rechner inkl. Sozialleistungen (Bürgergeld, Wohngeld, Elterngeld,
96
+ Gewerbe-/Grunderwerb-/Erbschaftsteuer, Krypto, Photovoltaik u.v.m.), Batch-Endpoints
97
+ und Gemeinde-Hebesätze — gibt es als gehostete REST-API:
98
+
99
+ 👉 **[api.rechner-hub.de/steuerrechner-api](https://api.rechner-hub.de/steuerrechner-api/)**
100
+
101
+ ## Genauigkeit & Haftung
102
+
103
+ Die Berechnungen folgen den offiziellen BMF-Formeln, ersetzen aber **keine
104
+ Steuerberatung**. Alle Angaben ohne Gewähr. Das Paket bildet die maschinelle
105
+ Lohnsteuer-/ESt-Berechnung ab, nicht jeden Einzelfall des Veranlagungsverfahrens.
106
+
107
+ ## Lizenz
108
+
109
+ [MIT](LICENSE) © 2026 L1nch-lab
110
+
111
+ ---
112
+
113
+ ## English
114
+
115
+ **German wage tax (Lohnsteuer) and income tax (Einkommensteuer) per the official
116
+ BMF payroll algorithm (Programmablaufplan) 2026 — offline, typed, zero dependencies.**
117
+
118
+ ```bash
119
+ pip install lohnsteuer-bmf
120
+ ```
121
+
122
+ Quick start — tax class 1, €5,000 gross/month, 2026:
123
+
124
+ ```python
125
+ from lohnsteuer_bmf import berechne_lohnsteuer_pap
126
+
127
+ result = berechne_lohnsteuer_pap(
128
+ brutto_jahr=60_000.0, # 5,000 EUR * 12
129
+ steuerklasse=1, # tax class 1
130
+ bundesland="Nordrhein-Westfalen",
131
+ mit_kirchensteuer=False, # church tax
132
+ kinder=0, # children
133
+ geburtsjahr=1990, # birth year
134
+ kv_zusatzbeitrag=2.9, # avg. health-insurance surcharge 2026
135
+ ist_sachsen=False, # Saxony special rule
136
+ jahr=2026, # tax year
137
+ )
138
+ print(result["lohnsteuer_monat"]) # 777.33 (monthly wage tax in EUR)
139
+ ```
140
+
141
+ What's included: monthly **Lohnsteuer** (BMF-PAP 2026), the **§32a income-tax tariff**
142
+ (incl. spouse splitting, marginal/average rates), **solidarity surcharge** and
143
+ **church tax**. Tax years 2024–2026 (2026 verified against primary sources;
144
+ 2024/2025 mirror upstream and are pending re-verification).
145
+
146
+ Need the full breadth (≈58 more German calculators incl. social benefits, batch
147
+ endpoints, municipal trade-tax rates)? Use the hosted REST API:
148
+ **[api.rechner-hub.de/steuerrechner-api](https://api.rechner-hub.de/steuerrechner-api/)**.
149
+
150
+ Not tax advice — provided as is. Licensed under [MIT](LICENSE).
@@ -0,0 +1,27 @@
1
+ """Beispiel: Einkommensteuer-Tarif (§32a EStG) für verschiedene zvE, 2026.
2
+
3
+ Ausführen mit: python examples/einkommensteuer_tarif.py
4
+ """
5
+
6
+ from lohnsteuer_bmf import berechne_einkommensteuer_tarif
7
+
8
+ print("Einkommensteuer-Tarif 2026 (Grundtarif)")
9
+ print(f"{'zvE':>10} {'ESt':>10} {'Grenz-%':>9} {'Durchschn-%':>12} Zone")
10
+ for zve in (15_000, 30_000, 50_000, 70_000, 100_000, 300_000):
11
+ t = berechne_einkommensteuer_tarif(zve=zve, jahr=2026)
12
+ print(
13
+ f"{zve:>10,} "
14
+ f"{t['einkommensteuer']:>10,.0f} "
15
+ f"{t['grenzsteuersatz']:>8.2f}% "
16
+ f"{t['durchschnittssteuersatz']:>11.2f}% "
17
+ f"{t['tarifzone']['name']}"
18
+ )
19
+
20
+ print()
21
+ print("Mit Ehegattensplitting (zvE = gemeinsames Einkommen):")
22
+ einzel = berechne_einkommensteuer_tarif(80_000, zusammenveranlagung=False, jahr=2026)
23
+ splitting = berechne_einkommensteuer_tarif(80_000, zusammenveranlagung=True, jahr=2026)
24
+ ersparnis = einzel["einkommensteuer"] - splitting["einkommensteuer"]
25
+ print(f" Einzelveranlagung: {einzel['einkommensteuer']:>10,.0f} €")
26
+ print(f" Splitting: {splitting['einkommensteuer']:>10,.0f} €")
27
+ print(f" Splitting-Vorteil: {ersparnis:>10,.0f} €")
@@ -0,0 +1,25 @@
1
+ """Top-Query-Beispiel: Lohnsteuer für Steuerklasse 1, 5.000 €/Monat, 2026.
2
+
3
+ Ausführen mit: python examples/lohnsteuer_quickstart.py
4
+ """
5
+
6
+ from lohnsteuer_bmf import berechne_lohnsteuer_pap
7
+
8
+ ergebnis = berechne_lohnsteuer_pap(
9
+ brutto_jahr=60_000.0, # 5.000 € * 12
10
+ steuerklasse=1,
11
+ bundesland="Nordrhein-Westfalen",
12
+ mit_kirchensteuer=False,
13
+ kinder=0,
14
+ geburtsjahr=1990,
15
+ kv_zusatzbeitrag=2.9, # durchschnittlicher Zusatzbeitrag 2026
16
+ ist_sachsen=False,
17
+ jahr=2026,
18
+ )
19
+
20
+ print("Lohnsteuer 2026 — Steuerklasse 1, 5.000 €/Monat brutto")
21
+ print(f" Lohnsteuer/Monat: {ergebnis['lohnsteuer_monat']:>10.2f} €")
22
+ print(f" Soli/Monat: {ergebnis['soli_monat']:>10.2f} €")
23
+ print(f" Kirchensteuer/Monat: {ergebnis['kirchensteuer_monat']:>10.2f} €")
24
+ print(f" zvE/Jahr: {ergebnis['zve_jahr']:>10.2f} €")
25
+ print(f" Vorsorgepauschale: {ergebnis['vorsorgepauschale']:>10.2f} €")
@@ -0,0 +1,88 @@
1
+ [build-system]
2
+ requires = ["hatchling"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "lohnsteuer-bmf"
7
+ dynamic = ["version"]
8
+ description = "Lohnsteuer & Einkommensteuer nach BMF-Programmablaufplan 2026 — offline, typisiert, zero dependencies."
9
+ readme = "README.md"
10
+ requires-python = ">=3.12"
11
+ license = "MIT"
12
+ license-files = ["LICENSE"]
13
+ authors = [{ name = "L1nch-lab" }]
14
+ keywords = [
15
+ "lohnsteuer",
16
+ "einkommensteuer",
17
+ "bmf",
18
+ "pap",
19
+ "programmablaufplan",
20
+ "steuer",
21
+ "tax",
22
+ "germany",
23
+ "2026",
24
+ "est",
25
+ ]
26
+ classifiers = [
27
+ "Development Status :: 4 - Beta",
28
+ "Intended Audience :: Developers",
29
+ "Intended Audience :: Financial and Insurance Industry",
30
+ "Natural Language :: German",
31
+ "Operating System :: OS Independent",
32
+ "Programming Language :: Python :: 3",
33
+ "Programming Language :: Python :: 3.12",
34
+ "Programming Language :: Python :: 3.13",
35
+ "Topic :: Office/Business :: Financial :: Accounting",
36
+ "Typing :: Typed",
37
+ ]
38
+ dependencies = []
39
+
40
+ [project.optional-dependencies]
41
+ dev = [
42
+ "pytest>=9.0.3",
43
+ "ruff==0.15.16",
44
+ "mypy>=2.1.0",
45
+ "build>=1.2.2",
46
+ "twine>=6.1.0",
47
+ ]
48
+
49
+ [project.urls]
50
+ Homepage = "https://github.com/L1nch-lab/lohnsteuer-bmf"
51
+ Repository = "https://github.com/L1nch-lab/lohnsteuer-bmf"
52
+ "Hosted API" = "https://api.rechner-hub.de/steuerrechner-api/"
53
+ Changelog = "https://github.com/L1nch-lab/lohnsteuer-bmf/blob/main/CHANGELOG.md"
54
+
55
+ [tool.hatch.version]
56
+ path = "src/lohnsteuer_bmf/__init__.py"
57
+
58
+ [tool.hatch.build.targets.wheel]
59
+ packages = ["src/lohnsteuer_bmf"]
60
+
61
+ [tool.hatch.build.targets.sdist]
62
+ include = ["src/lohnsteuer_bmf", "tests", "examples", "README.md", "LICENSE", "CHANGELOG.md"]
63
+
64
+ [tool.ruff]
65
+ target-version = "py312"
66
+ line-length = 100
67
+
68
+ [tool.ruff.lint]
69
+ select = ["E", "F", "I", "UP", "B", "SIM", "ARG", "S"]
70
+
71
+ [tool.ruff.lint.per-file-ignores]
72
+ "tests/**" = ["S101"]
73
+ "tools/**" = ["S101", "S603", "S607"]
74
+
75
+ [tool.ruff.lint.isort]
76
+ known-first-party = ["lohnsteuer_bmf"]
77
+
78
+ [tool.mypy]
79
+ python_version = "3.12"
80
+ strict = true
81
+ files = ["src/lohnsteuer_bmf"]
82
+
83
+ [[tool.mypy.overrides]]
84
+ module = "tests.*"
85
+ disallow_untyped_defs = false
86
+
87
+ [tool.pytest.ini_options]
88
+ testpaths = ["tests"]
@@ -0,0 +1,58 @@
1
+ """lohnsteuer-bmf — Lohn- und Einkommensteuer nach BMF-Programmablaufplan 2026.
2
+
3
+ Offline, typisiert, ohne externe Abhängigkeiten. Carve-out der Commodity-Schicht
4
+ aus rechner-hub-api/steuerlogik.
5
+
6
+ Schnellstart (Top-Query: Steuerklasse 1, 5.000 €/Monat brutto, 2026)::
7
+
8
+ from lohnsteuer_bmf import berechne_lohnsteuer_pap
9
+
10
+ ergebnis = berechne_lohnsteuer_pap(
11
+ brutto_jahr=60_000.0, # 5.000 € * 12
12
+ steuerklasse=1,
13
+ bundesland="Nordrhein-Westfalen",
14
+ mit_kirchensteuer=False,
15
+ kinder=0,
16
+ geburtsjahr=1990,
17
+ kv_zusatzbeitrag=2.9, # durchschnittlicher Zusatzbeitrag 2026
18
+ ist_sachsen=False,
19
+ jahr=2026,
20
+ )
21
+ print(ergebnis["lohnsteuer_monat"])
22
+
23
+ Die breite Abdeckung (~58 weitere Rechner inkl. Sozialleistungen) gibt es als
24
+ gehostete REST-API: https://api.rechner-hub.de/steuerrechner-api/
25
+ """
26
+
27
+ from lohnsteuer_bmf.einkommensteuer import (
28
+ einkommensteuer,
29
+ einkommensteuer_splitting,
30
+ kirchensteuer,
31
+ solidaritaetszuschlag,
32
+ )
33
+ from lohnsteuer_bmf.konstanten import (
34
+ AKTUELLES_STEUERJAHR,
35
+ BUNDESLAENDER,
36
+ UNTERSTUETZTE_JAHRE,
37
+ )
38
+ from lohnsteuer_bmf.lohnsteuer import (
39
+ berechne_lohnsteuer_pap,
40
+ berechne_zve,
41
+ )
42
+ from lohnsteuer_bmf.tarif import berechne_einkommensteuer_tarif
43
+
44
+ __version__ = "2026.0"
45
+
46
+ __all__ = [
47
+ "AKTUELLES_STEUERJAHR",
48
+ "BUNDESLAENDER",
49
+ "UNTERSTUETZTE_JAHRE",
50
+ "__version__",
51
+ "berechne_einkommensteuer_tarif",
52
+ "berechne_lohnsteuer_pap",
53
+ "berechne_zve",
54
+ "einkommensteuer",
55
+ "einkommensteuer_splitting",
56
+ "kirchensteuer",
57
+ "solidaritaetszuschlag",
58
+ ]