Skip to main content
lohnsteuer-bmf

Lohn- und Einkommensteuer nach dem BMF-Programmablaufplan 2026: offline, typisiert, ohne externe Abhängigkeiten.

PyPI Downloads Python License: MIT CI codecov Ruff Types: mypy strict Dependencies: 0

Installation · Schnellstart · API · PyPI

lohnsteuer-bmf

pip install und loslegen: kein Code-Generator, kein PAP-XML-Parsing, keine Laufzeit-Abhängigkeiten. Die Steuerwerte für 2026 sind gegen Primärquellen verifiziert (§32a EStG, BMF-PAP 2026, SV-Rechengrößenverordnung 2026).

  • 🔌 Zero Dependencies — reine Standardbibliothek, nichts zu auditieren
  • 📴 Offline — keine Netzwerk-Calls, kein PAP-XML-Parsing zur Laufzeit
  • 🧮 Primärquellen-verifiziert — §32a EStG, BMF-PAP 2026, SV-RechGrV 2026
  • 🏷️ Vollständig typisiert — PEP 561 (py.typed), mypy --strict
  • 🐍 Python 3.10 – 3.14 — getestet auf Linux, Windows und macOS

🇬🇧 English speakers: scroll down for the English section.


Installation

pip install lohnsteuer-bmf

Python ≥ 3.10 (getestet bis 3.14) · keine Abhängigkeiten.

Schnellstart

Die häufigste Frage zuerst — Steuerklasse 1, 5.000 € brutto/Monat, 2026:

from lohnsteuer_bmf import berechne_lohnsteuer_pap

ergebnis = berechne_lohnsteuer_pap(
    brutto_jahr=60_000.0,        # 5.000 € * 12
    steuerklasse=1,
    bundesland="Nordrhein-Westfalen",
    mit_kirchensteuer=False,
    kinder=0,
    geburtsjahr=1990,
    kv_zusatzbeitrag=2.9,        # durchschnittlicher Zusatzbeitrag 2026
    ist_sachsen=False,
    jahr=2026,
)

print(ergebnis)
# {'lohnsteuer_monat': 782.42, 'soli_monat': 0.0, 'kirchensteuer_monat': 0.0,
#  'zve_jahr': 46644.0, 'vorsorgepauschale': 12090.0}

Privat krankenversichert (PKV)

Bei PKV zählt für die Vorsorgepauschale dein Basisbeitrag (Kranken- plus Pflege-Pflichtversicherung, ohne Wahlleistungen) abzüglich des steuerfreien Arbeitgeberzuschusses. Beide Beträge gibst du wie im PAP als Monatsbetrag in Cent an:

ergebnis = berechne_lohnsteuer_pap(
    brutto_jahr=60_000.0,
    steuerklasse=1,
    bundesland="Nordrhein-Westfalen",
    mit_kirchensteuer=False,
    kinder=0,
    geburtsjahr=1990,
    kv_zusatzbeitrag=2.9,        # wird bei PKV nicht verwendet
    ist_sachsen=False,
    jahr=2026,
    pkv=True,
    pkpv_monat_cent=60_000,      # 600 € Basisbeitrag KV + PV (PAP: PKPV)
    pkpvagz_monat_cent=30_000,   # 300 € AG-Zuschuss (PAP: PKPVAGZ)
)
print(ergebnis["lohnsteuer_monat"])  # 866.0, identisch mit dem BMF-Steuerrechner

Zwei weitere Merker aus dem PAP gibt es als optionale Schlüsselwort-Argumente: alv_pflichtversichert=False (PAP ALV = 1) und rv_pflichtversichert=False (PAP KRV = 1, z. B. beherrschende Gesellschafter-Geschäftsführer). Den Arbeitgeberzuschuss rechnet das Paket nicht selbst aus. Du übergibst ihn so, wie er auf der Abrechnung steht.

Einkommensteuer-Tarif (§32a EStG)

from lohnsteuer_bmf import berechne_einkommensteuer_tarif

t = berechne_einkommensteuer_tarif(zve=50_000, jahr=2026)
print(t["einkommensteuer"], t["grenzsteuersatz"], t["tarifzone"]["name"])
# 10548.0 35.0 'Obere Progressionszone'

Bausteine

from lohnsteuer_bmf import (
    einkommensteuer,             # §32a EStG, Grundtarif
    einkommensteuer_splitting,   # §32a Abs. 5 EStG, Ehegattensplitting
    solidaritaetszuschlag,       # §3/§4 SolzG inkl. Milderungszone
    kirchensteuer,               # 8 % (BY, BW) / 9 % (übrige Länder)
)

einkommensteuer(50_000, 2026)              # 10548
einkommensteuer_splitting(100_000, 2026)   # 21096
solidaritaetszuschlag(30_864, jahr=2026)   # 1251.17
kirchensteuer(10_000, "Bayern")            # 800.0

Was ist drin

Funktion Rechtsgrundlage
berechne_lohnsteuer_pap BMF-Programmablaufplan 2026 (BMF-Schreiben v. 12.11.2025), gesetzlich und privat krankenversichert
berechne_zve zu versteuerndes Einkommen aus Brutto (Vorsorgepauschale etc.)
berechne_einkommensteuer_tarif §32a EStG inkl. Grenz-/Durchschnittssteuersatz
einkommensteuer / einkommensteuer_splitting §32a Abs. 1 / Abs. 5 EStG
solidaritaetszuschlag §3/§4 SolzG
kirchensteuer Landeskirchensteuergesetze

Unterstützte Steuerjahre: 2024, 2025, 2026.

Stand der Verifikation (2026-06-07): Alle drei Steuerjahre sind gegen amtliche Primärquellen geprüft — 2024 final (Grundfreibetrag 11.784 €, BGBl. 2024 I Nr. 386 / BMF EStH 2024), 2025 (Steuerfortentwicklungsgesetz, BGBl. 2024 I Nr. 449 / BMF EStH 2025), 2026 (§32a EStG, gesetze-im-internet) — zusätzlich durch einen Kontinuitäts-Check an allen Tarif-Zonengrenzen abgesichert.

Brauchst du mehr als Lohn-/Einkommensteuer?

Dieses Paket ist die offene Commodity-Schicht. Die breite Abdeckung — rund 58 weitere deutsche Rechner inkl. Sozialleistungen (Bürgergeld, Wohngeld, Elterngeld, Gewerbe-/Grunderwerb-/Erbschaftsteuer, Krypto, Photovoltaik u.v.m.), Batch-Endpoints und Gemeinde-Hebesätze — gibt es als gehostete REST-API:

👉 rechner-hub.de/steuerrechner-api

Genauigkeit & Haftung

Die Berechnungen folgen den offiziellen BMF-Formeln, ersetzen aber keine Steuerberatung. Alle Angaben ohne Gewähr. Das Paket bildet die maschinelle Lohnsteuer-/ESt-Berechnung ab, nicht jeden Einzelfall des Veranlagungsverfahrens.

Lizenz

MIT © 2026 L1nch-lab


English

German wage tax (Lohnsteuer) and income tax (Einkommensteuer) per the official BMF payroll algorithm (Programmablaufplan) 2026 — offline, typed, zero dependencies.

pip install lohnsteuer-bmf

Quick start — tax class 1, €5,000 gross/month, 2026:

from lohnsteuer_bmf import berechne_lohnsteuer_pap

result = berechne_lohnsteuer_pap(
    brutto_jahr=60_000.0,        # 5,000 EUR * 12
    steuerklasse=1,              # tax class 1
    bundesland="Nordrhein-Westfalen",
    mit_kirchensteuer=False,     # church tax
    kinder=0,                    # children
    geburtsjahr=1990,            # birth year
    kv_zusatzbeitrag=2.9,        # avg. health-insurance surcharge 2026
    ist_sachsen=False,           # Saxony special rule
    jahr=2026,                   # tax year
)
print(result["lohnsteuer_monat"])  # 782.42  (monthly wage tax in EUR)

What's included: monthly Lohnsteuer (BMF-PAP 2026, statutory and private health insurance via pkv=True), the §32a income-tax tariff (incl. spouse splitting, marginal/average rates), solidarity surcharge and church tax. Tax years 2024–2026 — all three verified against official primary sources (as of 2026-06-07). Python ≥ 3.10, zero dependencies.

Need the full breadth (≈58 more German calculators incl. social benefits, batch endpoints, municipal trade-tax rates)? Use the hosted REST API: rechner-hub.de/steuerrechner-api.

Not tax advice — provided as is. Licensed under MIT.

Metadata

Release files for lohnsteuer-bmf 2026.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for lohnsteuer-bmf 2026.3
File Size Uploaded
lohnsteuer_bmf-2026.3.tar.gz 28.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for lohnsteuer-bmf 2026.3
File Interpreter ABI Platform
lohnsteuer_bmf-2026.3-py3-none-any.whl Python 3 none any Details

Total release size: 50.1 kB

Release files / lohnsteuer_bmf-2026.3.tar.gz

Download URL lohnsteuer_bmf-2026.3.tar.gz
Size 28.4 kB
Tags Source
SHA-256 checksum
How to use checksums
a43e3cc7b20efb96439dafa20a162f496ff57aa33010daa8d0d0db5cc3641bd3
BLAKE2b-256 checksum
How to use checksums
492f773964d77249847768843f6bd0eed149eb883c0afb0c8ef41ac74ea9e6f4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.

Transparency log

Release files / lohnsteuer_bmf-2026.3-py3-none-any.whl

Download URL lohnsteuer_bmf-2026.3-py3-none-any.whl
Size 21.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2572a0e803742e736ceaa1f2a98ef91f4b5329bbc9abc250a380d7826177a3d8
BLAKE2b-256 checksum
How to use checksums
0d233db152c9fbcbed056d64df32ca47361c7b95f4327f17e7f03f94acd019cc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

2026.3 This release

2 release files

2026.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page