Für Benutzer mit Sprachausgabe, bitte Leseansicht aktivieren.
Das Bundesministerium der Finanzen (BMF) erstellt im Einvernehmen mit den obersten Finanzbehörden der Länder einen Programmablaufplan für die maschinelle Berechnung der Lohnsteuer. Der Programmablaufplan ist die Grundlage für die Berechnung der Lohnsteuer, des Solidaritätszuschlags und der Bemessungsgrundlage für die Kirchenlohnsteuer.
Der Lohnsteuerrechner ist kein "Brutto-Netto"-Rechner, d.h. er berechnet nicht das individuelle Netto-Einkommen unter Berücksichtigung ggf. abzuführenden Sozialabgaben. Die Bereitstellung eines entsprechenden Rechners gehört nicht zu den Aufgaben des BMF.
Die Berechnung der Lohnsteuer kann mit dem dafür vorgesehenen Modul vorgenommen werden. Die Berechnung der Einkommensteuer ist wesentlich komplexer und wird vom jeweiligen Finanzamt unter Berücksichtigung der Umstände des Einzelfalls und der aktuellen Gesetzeslage vorgenommen. An dieser Stelle wird nur auf Grundlage des zu versteuernden Einkommens die tarifliche Einkommensteuer nach § 32a EStG berechnet. Das zu versteuernde Einkommen darf hier nicht mit den Begriffen „Bruttoarbeitslohn”, „Einnahmen”, „Einkünfte”, „Einkommen” etc. verwechselt werden.
Dem Softwareentwickler werden neben den PDF-Versionen der beiden aktuellsten Programmablaufpläne (PAP) zur Verfügung gestellt:
Die externe Programmierschnittstelle kann zur automatisierten, maschinellen Prüfung eines Lohn- und Einkommensteuerrechners gegen den des BMF herangezogen werden.
Der PAP bildet die Grundlage für die Erstellung von Programmen zur Berechnung der Lohnsteuer des jeweiligen Jahres. Erfahrungsgemäß ist die Übersetzung der grafischen Darstellung aus DIN 66001 (vgl. Wikipedia, DIN_66001) nicht immer problemlos möglich. Insbesondere lassen die Vorschriften zum Umgang mit Dezimalstellen oft Spielraum für unterschiedliche Interpretationen, was letztendlich zu fehlerhaften Ergebnissen bei der Lohnsteuerberechnung führen kann.
Aus diesem Grund veröffentlicht das BMF eine Version des PAP im XML-Pseudocode. Diese lässt sich problemlos in andere prozedurale Programmiersprachen wie Java oder C übersetzen.
Um Rundungsfehlern beim Einsatz von Gleitkommazahlen (vgl. Wikipedia, Gleitkommazahl) zu vermeiden, wird der Einsatz einer Klasse für numerisches Rechnen empfohlen (vgl. Oracle, BigDecimal).