This blog post is in German because I'm going to describe an edge case in the Austrian income tax law. I'm sorry for that.

Als ich mich heute mit dem Brutto-Netto-Rechner des Finanzministeriums spielte, hatte ich die Idee, diesen nachzubauen. Genauer gesagt wollte ich ein LibreOffice Sheet bauen, das mir mit Hilfe von Macros die Arbeitnehmerveranlagung erleichtert bzw. gewisse Werte vorberechnet. Zum Thema Lohn- und Einkommensteuer gibt es massenhaft Material im Internet, schließlich betrifft diese Materie auch einige Millionen Steuerpflichtige in Österreich. Für den Einstieg habe ich mir dazu das Steuerbuch vom Finanzministerum besorgt, das einen ganz guten Einstieg in das Thema Einkommensteuerrecht bietet. Die Aufbereitung ist zielgruppengerecht, das heißt, dass naturgemäß nur Dinge, die für die meisten Leser interessant sind, aufbereitet sind aber keine Spezialfälle. Für solche Details kann man aber sowieso immer im entsprechenden Gesetz nachlesen. Damit ich mein Spreadsheet-Macro einfach testen kann, wollte ich auf den bestehenden Brutto-Netto-Rechner von Haude zurückgreifen, der auch auf der Website des Finanzministeriums verlinkt wird. Dieser schickt die Eingaben an eine JSON-API von Haude und stellt nur das Ergebnis da. Also schrieb ich ein kleines Script, das für einige hundert Brutto-Löhne die entsprechenden Sozialversicherungsbeiträge und Lohnsteuern von der API berechnen ließ, um Vergleichswerte zu haben, gegen die ich mein Makro testen kann. Leider ist es nun so, dass die Brutto-Netto-Rechner z. B. keine Unterstützung für Negativsteuer bieten und von einem 14x gleichen Monatsgehalt ausgehen. Mein Brutto-Netto-Rechner sollte aber mehr können und zumindest die Negativsteuer gegebenenfalls ebenfalls berechnen.

Anonyme Steuerberechnung über FinanzOnline

Praktischerweise gibt es in FinanzOnline die Möglichkeit, anonym die Steuer zu berechnen. Über diese Seite kann man u. a. Daten für eine fiktive Arbeitnehmerveranlagung erfassen und dann die Steuergutschrift (z. B. im Falle einer Negativsteuer oder zu viel gezahlter Steuer) oder Abgabennachforderung berechnen. Diese Seite lässt sich prinzipiell als "Brutto-Netto-Rechner on Steroids" verwenden, allerdings ist die Eingabe etwas umständlicher. Zuerst muss ein fiktiver Lohnzettel erfasst werden. Wer nicht gerade firm in Lohnverrechnung ist, wird sich hier ob der nicht gerade selbsterklärenden Titel ein bisschen schwer tun. Im Endeffekt ist es aber ganz einfach, wenn man sich an den Kennzahlen orientiert.

Kennzahlen eines Jahreslohnzettels

  • Kennzahl 210 ("Bruttobezüge gem. § 25 (ohne § 26 und ohne Familienbeihilfe"'): Hiermit ist das Jahresbruttoeinkommen inkl. Sonderzahlungen gemeint. Der erwähnte § 25 Einkommensteuergesetz 1988 beschreibt Einkünfte aus nichtselbständiger Arbeit (Arbeitslohn), § 26 beschreibt Leistungen des Arbeitgebers, die nicht unter die Einkünfte aus nichtselbständiger Arbeit fallen und somit auch hier außen vor bleiben.
  • Kennzahl 220 ("Bezüge gem. § 67 Abs. 1 und 2 (innerhalb des Jahressechstel), vor Abzug der Sozialversicherungsbeiträge"): Hiermit ist das Jahressechstel (also z. B. Urlaubszuschuss und Weihnachtsremuneration) gemeint, das steuerbegünstigt ausbezahlt werden darf. Hier ist wieder das Bruttojahressechstel anzugeben, d.h. vor Abzug der Sozialversicherungsbeiträge.
  • Kennzahl 225 ("Abzüglich einbehaltene SV-Beiträge für Bezüge gem. Kennzahl 220"): Hier müssen nun die Sozialversicherungsbeiträge für das Jahressechstel angegeben werden. Achtung, auf das Jahressechstel fällt keine Wohnbauförderung und keine Arbeiterkammerumlage an. Für das komplette Jahressechstel gilt außerdem die zweifache Höchstbeitragsgrundlage in die Sozialversicherung.
  • Kennzahl 230 ("SV-Beiträge, Kammerumlage, Wohnbauförderung für laufende Bezüge"): Hier müssen nun die Sozialversicherungsbeiträge auf Bezüge, die normal abgerechnet werden (also nicht ins Jahressechstel fallen), angegeben werden.
  • Kennzahl 245 ("Steuerpflichtige Bezüge"`): Diese Kennzahl ist im Normalfall einfach Kennzahl 210 - Kennzahl 220 - Kennzahl 230 und beschreibt das Einkommen, das zum Regeltarif (§ 33 Abs. 1 EStG 1988) versteuert wird.

Automatisierung

Mit diesem Wissen gerüstet ist es nun relativ einfach, ein Script zu schreiben, das FinanzOnline entsprechend automatisiert bedient. Ich habe mich dazu einiger Zeilen Shell und cURL bedient, allerdings geht es mit Python Requests mit Sicherheit eleganter. Ein Nachteil bei der Benutzung dieser Seite ist, dass die Sozialversicherungsbeiträge selbst berechnet werden müssen. Dies ist prinzipiell nicht schwer, allerdings ändern sich die Werte in der Sozialversicherung jedes Jahr und je nach Einkommenshöhe ist der Beitragssatz auch unterschiedlich hoch (zwischen 15,07% und 18,07% bzw. um 1% niedriger für Sechstelbezüge).

Nach dem ich mir schnell ein paar Zeilen Shell-Script zusammengehackt hatte, dem man diese fünf Kennzahlen übergeben kann und diese dann an FinanzOnline zur Berechnung weiterreicht, wollte ich den Brutto-Netto-Rechner von Haude gegen den anonymen Steuerrechner von FinanzOnline antreten lassen. Ich rechnete damit, dass beide eigentlich die selben Ergebnisse liefern müssten, zumindest für Einkommen, bei denen die Negativsteuer nicht in Betracht kommt.

Exkurs: Negativsteuer

Die Negativsteuer ist eine Förderung des Finanzamt, die ausgeschüttet wird, wenn das Einkommen, das zum Regeltarif besteuert werden soll, noch mit 0% besteuert wird. Sie soll Absetzbeträge ausgleichen, die die zu bezahlende Steuer 1:1 vermindern, bei kleinen Einkommen aber nicht zur Anwendung kommen, da diese steuerfrei sind. Die Negativsteuer ist im einfachsten Fall 10% aller Sozialversicherungsbeiträge und ist gedeckelt mit 110 €. Bei geringen Einkommen liefert ein normaler Brutto-Netto-Rechner also 0 € Steuerbelastung, während der anonyme Steuerrechner eine Gutschrift von 110 € berechnet.

Wie hoch ist die jährliche Steuerbelastung bei 1.191 € monatlich?

Diese Einschränkung von gängigen Brutto-Netto-Rechnern war mir bewusst. Verblüfft war ich allerdings, wie ich die Steuerlast für ein monatliches Einkommen von 1.191 €, 14 x pro Jahr (= 16.674 € pro Jahr), berechnen wollte. Der Rechner von Haude berechnet 85,98 € Lohnsteuer pro Jahr, wobei sich diese aus 0,36 € für das zum Regeltarif besteuerte Einkommen (12 * 1.191 €) und der Lohnsteuer auf das Jahressechstel (2 * 1.191 €) ergibt.

Besteuerung zum Regeltarif

Die 0,36 € Lohnsteuer lässt sich leicht nachprüfen:

12 * (1.191 € - 179,48 €) - 132 € - 60 € - 11.000 € = 946,24 €

179,48 € ist der Sozialversicherungsbeitrag pro Monat, 132 € das Werbungspauschale und 60 € das Sonderausgabenpauschale. 11.000 € ist die Steuergrenze, ab der Einkommensteuer anfällt, in diesem Fall 36,5 % (gemäß § 33 Abs. 1 Einkommensteuergesetz 1988). Das mit diesem Satz zu versteuernde Einkommen ist also 946,24 €:

946,24 * 36,5 % = 345,38 €

Von diesem Betrag sind nun die Absetzbeträge (Verkehrsabsetzbetrag und Arbeitnehmerabsetzbetrag) abzuziehen:

345,38 € - 291 € - 54 € = 0,38 €

Übrig bleiben die errechneten 0,38 €, die uns den Anspruch auf Negativsteuer vermiesen.

Besteuerung des Jahressechstels

Kommen wir nun zum Jahressechstel, das separat versteuert wird. Dieses Sechstel in der Höhe von 2 * 1.192 € = 2.382 € muss versteuert werden, da es um 282 € die Freigrenze von 2.100 € übersteigt. Diese Grenze ist für meine Begriffe etwas seltsam, da hier das Bruttosechstel (d.h. inklusive Sozialversicherungsbeitrag) heranzuziehen ist, vor der Besteuerung mit 6 % wird dieser allerdings vorher abgezogen. Dies ist inkonsistent zur Regelbesteuerung nach Tarif, wo die Grenzen für das zu versteuernde Einkommen keine Sozialversicherungsbeiträge beinhalten. Vom Jahressechstel werden wie gesagt die Sozialversicherungsbeiträge abgezogen und dann wird es mit 6 % versteuert (oder mehr, falls es größer als 25.000 € sein sollte). Die ersten 620 € sind steuerfrei und werden ebenfalls vor Berechnung der Steuer abgezogen. Somit ergibt sich:

(2.382 € - 335,14 € - 620 €) * 6 % = 85,61 €

Dieses Ergebnis spuckt auch der Brutto-Netto-Rechner von Haude aus. Prüft man die Rechnung mit Hilfe von FinanzOnline nach, wird es allerdings spannend. Letzeres errechnet nämlich eine Gutschrift in Höhe von 14 €. Auf den ersten Blick schaut es so aus, als wäre einfach nur die Negativsteuer (max. 110 €) gegengerechnet worden, aber prüfen wir nach:

0,38 € + 85,61 € - 110 € = 24,01 €

Hier liegen wir also um 10 € daneben! Ich begann sofort weitere Werte zu berechnen. Erst ab 1.400 € erzielten das Finanzamt und der Brutto-Netto-Rechner vergleichbare Werte. Und das obwohl schon zwischen 1.191 € und 1.399 € keine Negativsteuer mehr anfällt und diese somit nicht für den Unterschied verantwortlich sein kann. Ich testete mehrere Brutto-Netto-Rechner und begann zu recherchieren. Ich las noch einmal die mir relevant erscheinenden Teile des Einkommensteuergesetz durch (also vorrangig § 67), konnte aber keinen Denkfehler finden. Also muss mir der Steuerrechner verraten, wie er die Steuer berechnet!

Wo liegt der Fehler?

Als Testwert nahm ich allerdings ein Einkommen von 1.300 €, da hier ein größere Betrag an Steuern anfällt (444,14 € lt. Brutto-Netto-Rechner vs. 411 € lt. FinanzOnline) und definitiv auch keine Negativsteuer. (Gemäß § 39 Abs. 3 wird übrigens die Einkommensteuer kaufmännisch auf ganze Euro gerundet.)

Nun stellt sich zuerst die Frage, ob der Fehler in der Berechnung des regulären Einkommens oder in der Behandlung des Jahressechstels liegt. Dies lässt sich leicht nachprüfen, da das Jahressechstel (Kennzahlen 220 und 225) optional ist. Natürlich muss man das Jahressechstel dann auch im Bruttobezug (Kennzahl 210) herausrechnen. FinanzOnline errechnet dann eine Nachforderung von 349 €. Dies entspricht auch dem Ergebnis des Brutto-Netto-Rechners (gerundet).

Also muss der Fehler in der Behandlung der Sechstelbegünstigung liegen. Angenehmerweise erlaubt FinanzOnline auch Lohnzettel, die nur eine Sechstelbegünstigung aufweisen. Kennzahl 210: 2.600 €, Kennzahl 220: 2.600 €, Kennzahl 225: 391,82 €, Kennzahl 245: 0 €. Berechnet man den Lohnzettel bekommt man als Ergebnis eine Nachforderung von 23 €. Hierzu muss man allerdings noch die Negativsteuer dazurechnen (10% von 391,82 € = 39 €), da diese berücksichtigt wurde, weil unser Lohnzettel keine reguläre Einkommensteuer aufweist:

23 € + 39 € + 349 € = 411 €

Der Lohnzettel lässt sich also in seine Bestandteile zerlegen und nachvollziehen. Wie kommt FinanzOnline aber nun auf die Einkommensteuer in Höhe von 62 € für das Jahressechstel?

Um eine Antwort auf diese Frage zu finden, las ich mir noch einmal § 67 Einkommensteuergesetz durch. Leider war ich auch danach nicht schlauer. Gemäß § 67 Abs. 1 entfällt die Besteuerung wenn das Jahressechstel höchstens 2.100 € beträgt. Somit müsste das Sechstel in Höhe von 2.382 € nach Abzug von Sozialversicherung (§ 67 Abs. 12) und des Freibetrags von 620 € mit 6 % versteuert werden. Wie weiter oben gezeigt, kommt hier allerdings ein zu hoher Wert, nämlich 85,61 €, heraus. Für mich ging nicht ganz klar hervor, ob die Grenze von 2.100 € mit oder ohne Sozialversicherung gerechnet wird. Würde sie allerdings ohne gerechnet werden, so wäre die Steuer 0 somit wird hier der Bruttowert herangezogen, was eigentlich unüblich ist (vgl. Regelbesteuerung).

Um den Algorithmus zur Besteuerung bis 1.400 € zu verstehen, musste ich mir etwas Kreativeres einfallen lassen. Nach dem FinanzOnline Lohnzettel nur mit Jahressechstel akzeptiert, prüfte ich, ob auch ein Lohnzettel nur mit Jahressechstel ohne Sozialversicherung möglich ist, was die Sache erleichtert, da dann auch keine Negativsteuer anfällt. Praktischerweise ist FinanzOnline nicht wählerisch, wenn es um Lohnzettel geht und so startete ich meine ersten Experimente. Zuerst probierte ich die Beitragsgrenze in Höhe von 2.100 € aus. Gibt man für Kennzahl 210 und 220 2.100 € und für Kennzahl 245 0 € an, so zahlt man wie erwartet keine Steuern. Ab 2.101 € wird es dann schon interessanter, hier fallen auf einmal 30 € an, was aber für mich in Widerspruch zu § 67 Abs. 1 steht, denn:

(2.101 € - 620 €) * 6% = 88,86 €

Ein höherer Betrag (2.400 €) führt allerdings zum erwarteten Ergebnis (107 €):

(2.400 € - 620 €) * 6% = 107,00 €

Auch höhere Zahlen wie 5.000 € führen zum richtigen Ergebnis (263 €):

(5.000 € - 620 €) * 6% = 262,80 €

Es muss also eine Art Einschleifregelung für Beiträge zwischen 2.100 € und (höchstens) 2.400 € geben. Um das herauszufinden, schrieb ich ein kleines Script, das FinanzOnline die Werte für alle ganzen Zahlen zwischen 2.100 € und 2.400 € entlockt. Das Ergebnis sah (gekürzt) folgendermaßen aus:

2110 33,00
2120 36,00
2130 39,00
2140 42,00
2150 45,00
2160 48,00
2170 51,00
2180 54,00
2190 57,00
2200 60,00
2210 63,00
2220 66,00
2230 69,00
2240 72,00
2250 75,00
2260 78,00
2270 81,00
2280 84,00
2290 87,00
2300 90,00
2310 93,00
2320 96,00
2330 99,00
2340 102,00
2350 104,00
2360 104,00
2370 105,00
2380 106,00
2390 106,00
2400 107,00

In der ersten Spalte steht das Jahressechstel, in der zweiten die Steuerlast. Nun sieht man sehr deutlich, dass pro 10 € die Steuerlast um 3 € steigt (zumindest bis 2.340 € ist dieser Zusammenhang beobachtbar). Ich vermutete also einen linearen Zusammenhang:

y = k * x + d

Beispielhaft eingesetzt:

33 = k * 2110 + d
36 = k * 2120 + d

Eine Gleichung mit zwei Unbekannten lässt sich nun relativ einfach (von WolframAlpha) lösen:

d = -600, k = 0.3 -> y = 0.3 * x - 600

Rechnet man die Tabelle nun über die obige Formel nach, kommt man zu folgenden Ergebnissen:

2110 33,00
2120 36,00
2130 39,00
2140 42,00
2150 45,00
2160 48,00
2170 51,00
2180 54,00
2190 57,00
2200 60,00
2210 63,00
2220 66,00
2230 69,00
2240 72,00
2250 75,00
2260 78,00
2270 81,00
2280 84,00
2290 87,00
2300 90,00
2310 93,00
2320 96,00
2330 99,00
2340 102,00
2350 105,00
2360 108,00
2370 111,00
2380 114,00
2390 117,00
2400 120,00

Bis auf die Ergebnisse ab 2.350 € sind alle korrekt! Die Formel scheint also zu stimmen. Jetzt stellt sich noch die Frage, bis zu welcher Höhe diese Einschleifregelung verwendet wird (vermutlich irgendwo um diese 2.350 € herum). Dazu berechnen wir einfach den Schnittpunkt zwischen unserer "reverse engineerten" Funktion und der offiziellen Funktion aus § 67 Abs. 1:

0.3 * x - 600 = (x - 620) * 0.06 -> x = 2345

Für 2.345 € ist also die Verwendung von beiden Formeln möglich. Danach muss allerdings die offizielle verwendet werden, was man auch gut am fehlerhaften Ergebnis für 2.350 € und allen danach folgenden Werten sieht.

Der kleinste Werte, der in unsere Formel einsetzbar ist, ist übrigens:

0.3 * x - 600 = 0 -> x = 2000

Die Einschleifregelung ist somit zwischen 2.000 € und 2.345 € anwendbar. Darunter wird keine Steuer verrechnet, darüber ist die offizielle Formel anwendbar. Die 2.000 € sind übrigens kein Fehler bzw. stehen nur auf den ersten Blick im Widerspruch zum Freibetrag von 2.100 €. Zuerst muss geprüft werden, ob das Jahressechstel inkl. Sozialversicherung über 2.100 € liegt. Ist das nicht der Fall, fällt gar keine Steuer an. Falls schon, wird die Sozialversicherung abgezogen und dieser Beitrag muss dann zwischen 2.000 € und 2.345 € für die Einschleifregelung liegen bzw. darüber für die reguläre Sechstelbesteuerung. Diese Bedingung lässt sich auch ein bisschen klarer in unserer Formel ersichtlich machen, in dem man 0.3 heraushebt.

Somit ergibt sich

2.000 bis 2.345 €

y = (x - 2000) * 0.3

ab 2.345 €

y = (x - 620) * 0.06

Mangels praktischer Relevanz (für mich) erspare ich mir die Formeln für Jahressechstel über 25.000 €. :-)

Jetzt stellt sich für mich noch die Frage: Wo ist diese Praxis beschrieben?

§ 77 Abs. 4 Einkommensteuergesetz 1988: Lohnzahlungszeitraum

"Versteckt" in einem Paragraph, dessen Namen es nicht vermuten lassen würde, befindet sich die oben beschriebene Formel:

§ 77 Abs. 4 Einkommensteuergesetz 1988

Der Arbeitgeber kann bei Arbeitnehmern, die im Kalenderjahr ständig von diesem Arbeitgeber Arbeitslohn (§ 25) erhalten haben, in dem Monat, in dem der letzte sonstige Bezug für das Kalenderjahr ausgezahlt wird, die Lohnsteuer für die im Kalenderjahr zugeflossenen sonstigen Bezüge innerhalb des Jahressechstels gemäß § 67 Abs. 1 und 2 [...] neu berechnen, wenn das Jahressechstel 2 100 Euro übersteigt. Die Bemessungsgrundlage sind die sonstigen Bezüge innerhalb des Jahressechstels gemäß § 67 Abs. 1 und 2 [...], abzüglich der darauf entfallenden Beiträge gemäß § 62 Z 3, 4 und 5. Bis zu einem Jahressechstel von 25 000 Euro beträgt die Steuer 6% der 620 Euro übersteigenden Bemessungsgrundlage, jedoch höchstens 30% der 2 000 Euro übersteigenden Bemessungsgrundlage.

Im letzten Satz steckt die Quintessenz. Die Steuer von 6% ist gedeckelt mit 30% auf den Betrag, der 2.000 € übersteigt. Bestätigt wird diese Formel auch durch eine Berufungsentscheidung des Unabhängigen Finanzsenats bestätigt:

Mit Berufungsvorentscheidung vom 16. Mai 2007 wurde die Berufung als unbegründet abgewiesen und hiezu ausgeführt: „Übersteigen die sonstigen (Brutto-)Bezüge die Freigrenze von € 2.000, so beträgt die Steuer unter Anwendung des § 67 Abs. 12 EStG 1988 (Sozialversicherungsbeiträge) 6 % des € 620 übersteigenden Betrages. Die Steuer beträgt jedoch höchstens 30 % des € 2.000 übersteigenden Betrages. Die Freigrenze von € 2.000 gilt für den Brutto-Betrag der sonstigen Bezüge. Die Einschleifregelung gem. § 77 Abs. 4 EStG kommt bei Ihnen zur Anwendung, da die Versteuerung mit 6 % (Brutto abzüglich SV-Beiträge und € 620) eine höhere Steuer als 30 % des € 2.000 übersteigenden Betrages ergibt. Somit werden nur 30 % des € 2.000 übersteigenden Betrages als Steuer auf die sonstigen Bezüge festgesetzt.“

Da sich die Veranlagung auf das Einkommensteuerjahr 2006 bezieht, ist hier auch noch von der niedrigeren Freigrenze von 2.000 € zu lesen.

Fazit

Ob der Brutto-Netto-Rechner nun ein falsches Ergebnis liefert, ist nun in gewisser Weise Ansichtssache. § 77 Abs. 4 EStG 1988 ist eine Kannbestimmung, wird aber vermutlich von der Personalverrechnung automatisch angewendet und kommt nicht erst bei der Veranlagung zum Tragen. Nach dem die Bestimmung auch einzig und allein vom Einkommen abhängt, sollte man diese aber meines Erachtens entsprechend im Brutto-Netto-Rechner berücksichtigen.