Welches ist die richtige Quelle für den korrekten deutschen Lohnsteuerabzug?

Von hier kommend habe ich nun folgende Daten und muss sagen ich bin ziemlich ratlos.

Welcher Wert ist jetzt richtig?

  • #1 Angesichts der Referenzdaten eines deutschen Softwareunternehmens, das sich auf Steuersoftware spezialisiert hat. In ihren Musterdarlehensabrechnungen geben sie zum Beispiel für ein monatliches Bruttoeinkommen von 4926,59 Euro (alle weiteren Werte in Euro, und immer Lohnsteuerklasse I ) an. Dies entspricht der Lohnsteuergebühr von 1000,75 .

  • #2 Wenn Sie dann die beliebte Seite brutto-netto-rechner.info nehmen , erhalten Sie 1003.16 .

  • #3 Es gibt auch offizielle Regierungsdokumente für den Steuerabzug, die als XML verfügbar sind, die ein Open-Source-Projekt in einigen gängigen Sprachen in Programmcode umwandeln kann. Mein Ansatz mit seinem Python-Produkt gibt 1247.91 aus .

  • #4 Das offizielle deutsche Steuertool gibt 1027 .

  • #5 Schließlich ergibt meine eigene Interpretation der Wikipedia-Formel mit Python 936,91 .

Das kann nicht sein?! Ich muss wirklich an die Blue Tigers -Geschichte von JLBorges denken .

UPDATE nachdem die Frage beantwortet wurde / Lösung

Dank dieser Community funktioniert der folgende Code für mich basierend auf # 3; in #2 funktioniert es auch, aber sie haben Rundungsfehler. Andere habe ich nicht doppelt überprüft.

def test_lohnexample1(self):

        # source: https://www.lohnexperte.de/files/root-pdfs/pdf/Muster.pdf

        brutto = 4926.59 * 100 # Brutto in ¢ent

        l = Lohnsteuer2018()
        l.setRe4(brutto) # cent

        l.setStkl(1) # Steuerklasse
        l.setLzz(2) # Lohnzahlungszeitraum, 2 = Monat

        l.setZkf(1) # Kinder

        l.setPkv(0) # GKV (default)
        l.setKvz(1.5) # Krankenkassenzusatzbeitrag (1.50%) 
        l.setKrv(0) # RV-WEST (default)

        l.setAlter1(0) # setze 1, wenn das 64. Lebensjahr zu Beginn des Kalenderjahres vollendet wurde
        l.setAf(0) # # 1, wenn die Anwendung des Faktorverfahrens gewählt wurden (nur in Steuerklasse IV)
        l.setF(1) # Faktor
        l.setPvs(0) # Nur wenn in Sachsen
        l.setR(0) # Religion ja/nein
        l.setLzzhinzu(0) # Hinzurechnungsbetrag auf der Lohnsteuerkarte
        l.setPvz(0) # 1, wenn Zuschlag zur sozialen Pflegeversicherung

        l.MAIN()
        print("results lohnexample1:")
        print_lst(l)

        steuer = math.floor(float(l.getLstlzz()) + float(l.getStv()) + float(l.getSts())) / 100.0
        soli = math.floor(float(l.getSolzlzz()) + float(l.getSolzs()) + float(l.getSolzv())) / 100
        stges = steuer + soli

        assert steuer == 1000.75
        assert soli == 42.20
Wenn es tatsächlich solche Abweichungen zu diesem Thema gibt, würde ich einen in Deutschland zugelassenen Steuerrechtsberater konsultieren, als mir etwas weiter in einem Online-Forum anzuhören, tbh.
Es gibt viele Abhängigkeiten wie Kinder, Freibeträge usw., aber die Regierung veröffentlicht Tabellen (keine Formel), die verbindlich sind. Denen würde ich am meisten vertrauen.
@Aganju Ich habe eine behördliche XML-Beschreibung von Berechnungsworkflows verwendet, daher sind die Formeln vorhanden, siehe Link oben.

Antworten (1)

Aganju hat Recht, dass es viele Variablen gibt. Berücksichtigen Sie in Ihrer ersten Quelle insbesondere den Kinderfreibetrag (Kfb) und den Krankenkassenzusatzbeitrag (1,50 %). Geben Sie genau dieselben Variablen in Ihre zweite Quelle ein, und das Ergebnis ist auf den Cent genau dasselbe. Ich gehe davon aus, dass dies auch für die 4. Quelle gilt.

danke @WerKater jetzt funktioniert es bei mir! Wenn ich die beiden Tatsachen hinzufüge, auf die Sie im Quellcode basierend auf Quelle Nr. 3 hingewiesen haben, erhalte ich genau die gleichen Werte wie in Nr. 1. Mit #2 funktioniert es auch, aber ich denke, sie haben einige Rundungsfehler. Für diejenigen, die an detaillierteren Informationen interessiert sind, habe ich der Frage eine Zusammenfassung als Update hinzugefügt.