Brutto2Netto.pm
############################################################################################################################### # Vereinfachte Berechnung des Nettogehalts bzw. der Nettopension von Angestellten und Pensionisten für 2001 bis 2024: # # Berücksichtigt sind: Arbeitnehmer-, Verkehrs- und Pensionistenabsetzbetrag bzw. Sonderausgaben- und # Webungskostenpauschale. Nicht berücksichtigt sind: Pendlerpauschale, Sachbezug, Alleinverdiener-, Alleinerzieher-, # Unterhalts- und Kinderabsetzbetrag, etc. # # (c) 2014-2023 by Ing. Peter Grobner, peter@grobner.at, http://paudorf142.at/cgi-bin/brutto2netto.cgi #------------------------------------------------------------------------------------------------------------------------------ ############################################################################################################################### # $netto=brutto2netto($brutto,$year,$m,$pens) # \ \ \ \_ 0=Angestellte, 1=Pensionisten # \ \ \____-1=Jahresgehalt, 0..12 Monatsgehalt, 13..14=erste/zweite Sonderzahlung # \ \_________ Jahr der Versteuerung # \________________ Monatsbrutto sub brutto2netto { my ($minYEAR,$maxYEAR)=(2001,2024); return ($minYEAR,$maxYEAR) if(0==scalar @_); my($brutto,$year,$m,$pens)=@_; $year||=1900+(localtime(time))[5]; return undef if($year<$minYEAR or $year>$maxYEAR); my $BG12=12*$brutto-12*SV($brutto,$year,0,$pens); my $N12=($BG12-ESt($BG12,$year,0,$pens,$brutto)); return $N12/12 if($m>=0 and $m<=12); my $BG13= $brutto- SV($brutto,$year,1,$pens); my $N13=($BG13-ESt($BG13,$year,1,$pens,$brutto)); return $N13 if($m==13); my $N14=($BG13-ESt($BG13,$year,2,$pens,$brutto)); return $N14 if($m==14); return $N12+$N13+$N14; } ############################################################################################################################### # $svBetrag=SV($v,$year,$SZ,$pens) # \ \ \ \_ 0=Angestellte, 1=Pensionisten # \ \ \___ 0=laufendes Monat, >0=Sonderzahlung, <0=SV-Quote # \ \________ Jahr der Bemessung # \__________ Monatsbrutto # # @werte=SV(-1,$year) # $Quote=SV($v,$year,-1); # sub SV { ## Geringfügigkeitsgrenze/M # ## Ausgleichstaxe (für Betriebe > 400MA) §9(2) BEinstG # # ## Krankenversicherung §51(3)1.a ASVG # # # ## Pensionsversicherung §51(3)2 ASVG # # # # ## Grenze AL1% # # # # # ## Grenze AL2% # # # # # # ## Grenze AL3% my %Wert= # # # # # # # ## SV-Höchstbeitragsgrundlage/M ( # # # # # # # # 1999 => [ 283.35, 148.25, 0.0340, 0.1025, 0.00, 0.00, 0.00, 3095.86 ], 2000 => [ 289.02, 148.98, 0.0340, 0.1025, 0.00, 0.00, 0.00, 3139.47 ], 2001 => [ 296.21, 149.71, 0.0340, 0.1025, 0.00, 0.00, 0.00, 3226.67 ], 2002 => [ 301.54, 196.22, 0.0340, 0.1025, 0.00, 0.00, 0.00, 3270.00 ], 2003 => [ 309.38, 196.22, 0.0340, 0.1025, 0.00, 0.00, 0.00, 3360.00 ], 2004 => [ 316.19, 198.00, 0.0370, 0.1025, 0.00, 0.00, 0.00, 3450.00 ], 2005 => [ 323.46, 201.00, 0.0375, 0.1025, 0.00, 0.00, 0.00, 3630.00 ], 2006 => [ 333.16, 206.00, 0.0375, 0.1025, 0.00, 0.00, 0.00, 3750.00 ], 2007 => [ 341.16, 209.00, 0.0375, 0.1025, 0.00, 0.00, 0.00, 3840.00 ], 200801 => [ 349.01, 213.00, 0.0382, 0.1025, 0.00, 0.00, 0.00, 3930.00 ], 200802 => [ 349.01, 213.00, 0.0382, 0.1025, 0.00, 0.00, 0.00, 3930.00 ], 200803 => [ 349.01, 213.00, 0.0382, 0.1025, 0.00, 0.00, 0.00, 3930.00 ], 200804 => [ 349.01, 213.00, 0.0382, 0.1025, 0.00, 0.00, 0.00, 3930.00 ], 200805 => [ 349.01, 213.00, 0.0382, 0.1025, 0.00, 0.00, 0.00, 3930.00 ], 200806 => [ 349.01, 213.00, 0.0382, 0.1025, 0.00, 0.00, 0.00, 3930.00 ], 2008 => [ 349.01, 213.00, 0.0382, 0.1025, 1100.00, 1200.00, 1350.00, 3930.00 ], 2009 => [ 357.74, 220.00, 0.0382, 0.1025, 1128.00, 1230.00, 1384.00, 4020.00 ], 2010 => [ 366.33, 233.00, 0.0382, 0.1025, 1155.00, 1260.00, 1417.00, 4110.00 ], 2011 => [ 374.02, 336.00, 0.0382, 0.1025, 1179.00, 1286.00, 1447.00, 4200.00 ], 2012 => [ 376.26, 345.00, 0.0382, 0.1025, 1186.00, 1294.00, 1456.00, 4230.00 ], 2013 => [ 386.80, 355.00, 0.0382, 0.1025, 1219.00, 1330.00, 1497.00, 4440.00 ], 2014 => [ 395.31, 364.00, 0.0382, 0.1025, 1246.00, 1359.00, 1530.00, 4530.00 ], 2015 => [ 405.98, 370.00, 0.0382, 0.1025, 1280.00, 1396.00, 1571.00, 4650.00 ], 2016 => [ 415.72, 374.00, 0.0387, 0.1025, 1311.00, 1430.00, 1609.00, 4860.00 ], 2017 => [ 425.70, 377.00, 0.0387, 0.1025, 1342.00, 1464.00, 1648.00, 4980.00 ], 201801 => [ 438.05, 383.00, 0.0387, 0.1025, 1381.00, 1506.00, 1696.00, 5130.00 ], 201802 => [ 438.05, 383.00, 0.0387, 0.1025, 1381.00, 1506.00, 1696.00, 5130.00 ], 201803 => [ 438.05, 383.00, 0.0387, 0.1025, 1381.00, 1506.00, 1696.00, 5130.00 ], 201804 => [ 438.05, 383.00, 0.0387, 0.1025, 1381.00, 1506.00, 1696.00, 5130.00 ], 201805 => [ 438.05, 383.00, 0.0387, 0.1025, 1381.00, 1506.00, 1696.00, 5130.00 ], 201806 => [ 438.05, 383.00, 0.0387, 0.1025, 1381.00, 1506.00, 1696.00, 5130.00 ], 2018 => [ 438.05, 383.00, 0.0387, 0.1025, 1648.00, 1798.00, 1948.00, 5130.00 ], 2019 => [ 446.81, 391.00, 0.0387, 0.1025, 1681.00, 1834.00, 1987.00, 5220.00 ], 2020 => [ 460.66, 398.00, 0.0387, 0.1025, 1733.00, 1891.00, 2049.00, 5370.00 ], 2021 => [ 475.86, 404.00, 0.0387, 0.1025, 1790.00, 1953.00, 2117.00, 5550.00 ], 2022 => [ 485.85, 411.00, 0.0387, 0.1025, 1828.00, 1994.00, 2161.00, 5670.00 ], 2023 => [ 500.91, 435.00, 0.0387, 0.1025, 1885.00, 2056.00, 2228.00, 5850.00 ], 2024 => [ 500.91, 435.00, 0.0387, 0.1025, 1885.00, 2056.00, 2228.00, 5850.00 ], ); # 0 1 2 3 4 5 6 7 my($v,$year,$SZ,$pens)=@_; $year||=100*(1900+(localtime(time))[5]) +1+(localtime(time))[6]; $year=~s/\d\d$// unless($Wert{$year}); return undef unless($Wert{$year}); return @{$Wert{$year}} if($v==-1); # Rückgabe der Wertetabelle return $v*0.051 if($pens); # Pensionisten zahlen 5,1% Krankenversicherungsbeitrag # laut https://www.ots.at/presseaussendung/OTS_20100526_OTS0176/ # seit mindestens 2010 ... return 0 if($v<=$Wert{$year}[0]); # Geringfügigkeitsgrenze/M my $KV = $Wert{$year}[2]; # Krankenversicherung §51(3)1.a ASVG my $PV = $Wert{$year}[3]; # Pensionsversicherung §51(3)2 ASVG my $ALV= ($v<=$Wert{$year}[4])? 0.000 # Arbeitslosenversicherung §2a AMPFG :($v<=$Wert{$year}[5])? 0.010 :($v<=$Wert{$year}[6])? 0.020 : 0.030; my $AKU= ($SZ>0)? 0: 0.005; # AK-Umlage my $WBF= ($SZ>0)? 0: 0.005; # Wohnbauförderung my $max= $Wert{$year}[7]; # SV-Höchstbeitragsgrundlage/M my $sv=($KV+$PV+$ALV+$AKU+$WBF)*($v<$max? $v:$max); return ($SZ<0)? $sv/$v:$sv; } ########################################################################################################################### # $lohnsteuer=LSt($v,$year,$SZ,$pens,$brutto) # \ \ \ \ \__ Brutto wg. Vergleich mit Jahressechstel-Freigrenze # \ \ \ \_______ 0=Angestellte, 1=Pensionisten # \ \ \__________ 0=laufendes Monat, 1=erste Sonderzahlung, 2=zweite Sonderzahlung, -1=max Stufe # \ \_______________ Jahr der Bemessung # \_________________ Bemessungsgrundlage=12*(Monatsbrutto-SV) # sub LStK { my($b,$year)=@_; return ESt(12*($b-SV($b,$year)),$year,-1); } sub LStB { my($b,$year)=@_; return ESt(12*($b-SV($b,$year)),$year, 0)/12; } sub LSt { return ESt(@_); } sub ESt { ## Jahressechstel-Freigrenze # ## Jahressechstel-Freibetrag my %Wert= # # ## Steuerklassen-Grenzbeträge ( # # # ## Steuerklassen-Steuersätze, ... # # # # 1999 => [ 1671, 618, 0- 3634, 0.1, 3634- 7267, 0.22, 7267-10901, 0.32, 10901-29070, 0.42, 29070, 0.5 ], 2000 => [ 1671, 618, 0- 3640, 0.0, 3640- 7270, 0.21, 7270-21800, 0.31, 21800-50870, 0.41, 50870, 0.5 ], 2001 => [ 1671, 618, 0- 3640, 0.0, 3640- 7270, 0.21, 7270-21800, 0.31, 21800-50870, 0.41, 50870, 0.5 ], 2002 => [ 1680, 620, 0- 3640, 0.0, 3640- 7270, 0.21, 7270-21800, 0.31, 21800-50870, 0.41, 50870, 0.5 ], 2003 => [ 1680, 620, 0- 3640, 0.0, 3640- 7270, 0.21, 7270-21800, 0.31, 21800-50870, 0.41, 50870, 0.5 ], 2004 => [ 1900, 620, 0- 3640, 0.0, 3640- 7270, 0.21, 7270-21800, 0.31, 21800-50870, 0.41, 50870, 0.5 ], 2005 => [ 2000, 620, 0-10000, 0.0, 10000-25000, 23/60, 25000-51000, 11335/26000, 51000, 0.5 ], 2006 => [ 2000, 620, 0-10000, 0.0, 10000-25000, 23/60, 25000-51000, 11335/26000, 51000, 0.5 ], 2007 => [ 2000, 620, 0-10000, 0.0, 10000-25000, 23/60, 25000-51000, 11335/26000, 51000, 0.5 ], 200801 => [ 2000, 620, 0-10000, 0.0, 10000-25000, 23/60, 25000-51000, 11335/26000, 51000, 0.5 ], 200802 => [ 2000, 620, 0-10000, 0.0, 10000-25000, 23/60, 25000-51000, 11335/26000, 51000, 0.5 ], 200803 => [ 2000, 620, 0-10000, 0.0, 10000-25000, 23/60, 25000-51000, 11335/26000, 51000, 0.5 ], 200804 => [ 2000, 620, 0-10000, 0.0, 10000-25000, 23/60, 25000-51000, 11335/26000, 51000, 0.5 ], 200805 => [ 2000, 620, 0-10000, 0.0, 10000-25000, 23/60, 25000-51000, 11335/26000, 51000, 0.5 ], 200806 => [ 2000, 620, 0-10000, 0.0, 10000-25000, 23/60, 25000-51000, 11335/26000, 51000, 0.5 ], 2008 => [ 2100, 620, 0-10000, 0.0, 10000-25000, 23/60, 25000-51000, 11335/26000, 51000, 0.5 ], 2009 => [ 2100, 620, 0-11000, 0.0, 11000-25000, 0.365, 25000-60000, 15125/35000, 60000, 0.5 ], 2010 => [ 2100, 620, 0-11000, 0.0, 11000-25000, 0.365, 25000-60000, 15125/35000, 60000, 0.5 ], 2011 => [ 2100, 620, 0-11000, 0.0, 11000-25000, 0.365, 25000-60000, 15125/35000, 60000, 0.5 ], 2012 => [ 2100, 620, 0-11000, 0.0, 11000-25000, 0.365, 25000-60000, 15125/35000, 60000, 0.5 ], 2013 => [ 2100, 620, 0-11000, 0.0, 11000-25000, 0.365, 25000-60000, 15125/35000, 60000, 0.5 ], 2014 => [ 2100, 620, 0-11000, 0.0, 11000-25000, 0.365, 25000-60000, 15125/35000, 60000, 0.5 ], 2015 => [ 2100, 620, 0-11000, 0.0, 11000-25000, 0.365, 25000-60000, 15125/35000, 60000, 0.5 ], 2016 => [ 2100, 620, 0-11000, 0.0, 11000-18000, 0.25, 18000-31000, 0.35, 31000-60000, 0.42, 60000-90000, 0.48, 90000-1000000, 0.5, 1000000, 0.55 ], 2017 => [ 2100, 620, 0-11000, 0.0, 11000-18000, 0.25, 18000-31000, 0.35, 31000-60000, 0.42, 60000-90000, 0.48, 90000-1000000, 0.5, 1000000, 0.55 ], 2018 => [ 2100, 620, 0-11000, 0.0, 11000-18000, 0.25, 18000-31000, 0.35, 31000-60000, 0.42, 60000-90000, 0.48, 90000-1000000, 0.5, 1000000, 0.55 ], 2019 => [ 2100, 620, 0-11000, 0.0, 11000-18000, 0.25, 18000-31000, 0.35, 31000-60000, 0.42, 60000-90000, 0.48, 90000-1000000, 0.5, 1000000, 0.55 ], 2020 => [ 2100, 620, 0-11000, 0.0, 11000-18000, 0.20, 18000-31000, 0.35, 31000-60000, 0.42, 60000-90000, 0.48, 90000-1000000, 0.5, 1000000, 0.55 ], 2021 => [ 2100, 620, 0-11000, 0.0, 11000-18000, 0.20, 18000-31000, 0.35, 31000-60000, 0.42, 60000-90000, 0.48, 90000-1000000, 0.5, 1000000, 0.55 ], #------------------------------------------------------------------------------------------------------------- # ÖkoStRefG 2022 Teil I) # 390. a) Die Senkung des Steuersatzes von 35% auf 30% gemäß § 33 Abs. 1 in der Fassung des Bundesgesetzes # BGBl. I Nr. xx/2022 tritt mit 1. Juli 2022 in Kraft und ist erstmalig anzuwenden, wenn # - die Einkommensteuer veranlagt oder durch Veranlagung festgesetzt wird, # bei der Veranlagung für das Kalenderjahr 2023, # - die Einkommensteuer (Lohnsteuer) durch Abzug eingehoben wird, für Lohnzahlungszeiträume, # die nach dem 31. Dezember 2022 enden. # b) Für das Kalenderjahr 2022 ist die Senkung des Steuersatzes von 35% auf 30% wie folgt zu berücksichtigen: # - Wenn die Einkommensteuer veranlagt oder durch Veranlagung festgesetzt wird, ist für das gesamte # Kalenderjahr ein Steuersatz von 32,5% anzuwenden. # - Wenn die Einkommensteuer (Lohnsteuer) durch Abzug eingehoben wird, ist für Lohnzahlungszeiträume, # die nach dem 31. Dezember 2021 enden, ein Steuersatz von 32,5% anzuwenden. Wurde für derartige # Lohnzahlungszeiträume der Steuersatz von 32,5% noch nicht berücksichtigt, hat der Arbeitgeber # für seine Arbeitnehmer eine Aufrollung gemäß § 77 Abs. 3 so bald wie möglich, jedoch spätestens bis # 31. Mai 2022 durchzuführen, sofern die technischen und organisatorischen Möglichkeiten dazu vorliegen. # # 391. a) Die Senkung des Steuersatzes von 42% auf 40% gemäß § 33 Abs. 1 in der Fassung des Bundesgesetzes # BGBl. I Nr. xx/2022 tritt mit 1. Juli 2023 in Kraft und ist erstmalig anzuwenden, wenn # - die Einkommensteuer veranlagt wird, bei der Veranlagung für das Kalenderjahr 2024, # - die Einkommensteuer (Lohnsteuer) durch Abzug eingehoben oder durch Veranlagung festgesetzt wird, # für Lohnzahlungszeiträume, die nach dem 31. Dezember 2023 enden. # b) Für das Kalenderjahr 2023 ist die Senkung des Steuersatzes von 42% auf 40% wie folgt zu berücksichtigen: # - Wenn die Einkommensteuer veranlagt oder durch Veranlagung festgesetzt wird, ist für das gesamte # Kalenderjahr ein Steuersatz von 41% anzuwenden. # - Wenn die Einkommensteuer (Lohnsteuer) durch Abzug eingehoben wird, ist für Lohnzahlungszeiträume, # die nach dem 31. Dezember 2022 enden, ein Steuersatz von 41% anzuwenden. 2022 => [ 2100, 620, 0-11000, 0.0, 11000-18000, 0.20, 18000-31000, 0.325, 31000-60000, 0.42, 60000-90000, 0.48, 90000-1000000, 0.5, 1000000, 0.55 ], #------------------------------------------------------------------------------------------------------------- # 163. Bundesgesetz, mit dem das Einkommensteuergesetz 1988, das Familienlastenausgleichsgesetz 1967 # und das Umsatzsteuergesetz 1994 geändert werden (Teuerungs-Entlastungspaket Teil II) # [...] # Das Einkommensteuergesetz 1988, BGBl. Nr. 400/1988, zuletzt geändert durch das Bundesgesetz BGBl. I Nr. 138/2022, # wird wie folgt geändert: # 1. In § 1 Abs. 4 wird der Betrag "11 000" durch den Betrag "11 693" ersetzt. [...] 2023 => [ 2100, 620, 0-11693, 0.0, 11693-19134, 0.20, 19134-32075, 0.30, 32075-62080, 0.41, 62080-93120, 0.48, 93120-1000000, 0.5, 1000000, 0.55 ], 2024 => [ 2100, 620, 0-11693, 0.0, 11693-19134, 0.20, 19134-32075, 0.30, 32075-62080, 0.40, 62080-93120, 0.48, 93120-1000000, 0.5, 1000000, 0.55 ], ); my($v,$year,$SZ,$pens,$b)=@_; $year||=100*(1900+(localtime(time))[5]) +1+(localtime(time))[6]; $year=~s/\d\d$// unless($Wert{$year}); return undef unless($Wert{$year}); return @{$Wert{$year}} if($v==-1); # Rückgabe der Wertetabelle return (2*$b<=$Wert{$year}[0])? 0 : ($SZ==1)? ( $v -$Wert{$year}[1])*0.06 : # Sonderregelung für Jahressechstel §41(4) EStG incl. Freibetrag ( $v )*0.06 if($SZ>0); # Sonderregelung für Jahressechstel §41(4) EStG excl. Freibetrag my $zvE= $v; $zvE= $zvE -60.00 if($year<2021); # Sonderausgabenpauschale (war öS 819,00); entfällt ab 2021 $zvE= $zvE -132.00 if(!$pens); # Webungskostenpauschale (war öS 1800,00) my($zv,$ESt,$i)=($zvE,0,2); while($zv>0) { my($p,$q)=@{$Wert{$year}}[$i++,$i++]; $p=-$p; $ESt+=($p<0 || $zv<$p)? $q*$zv:$q*$p; $zv-=$p; last if($p<0); } $ESt+= -allgAB($zvE,$year); # bis 2004: Allg. Steuerabsetzbetrag mit Einschleifregelung §33(3) EStG $ESt+= -verkAB($zvE,$year) if(!$pens); # ab 2004: Arbeitnehmer-, Verkehrsabsetzbetrag # ab 2020: SV-Bonus über AN-Veranlagung! $ESt+= -pensAB( $v, $year) if( $pens); # Pensionistenabsetzbetrag §33(6)Z3 EStG 1988 return $Wert{$year}[$i-1] if($SZ<0 && $i>3); return $ESt<0? 0:$ESt; } ########################################################################################################################### # ($Pendlerpauschale,$Pendlereuro)=PP($km,$year) # \ \_______ Jahr der Bemessung # \___________ km Wohnort => Dienstort # § 16 EStG 1988 # sub PP { return ($_[2] && $_[2]=~/^g/)? gPP(@_):kPP(@_); } sub kPP { my %Wert= ( # EUR/km km => EUR km => EUR km => EUR 2000 => [ 0, 20,31.98, 40, 63.95, 60, 95.93 ], # öS => EUR 2001 => [ 0, 20,31.98, 40, 63.95, 60, 95.93 ], 2002 => [ 0, 20,32.00, 40, 64.00, 60, 96.00 ], 2003 => [ 0, 20,32.00, 40, 64.00, 60, 96.00 ], 2004 => [ 0, 20,37.50, 40, 74.25, 60,111.00 ], 2005 => [ 0, 20,37.50, 40, 74.25, 60,111.00 ], 2006 => [ 0, 20,41.25, 40, 81.75, 60,122.25 ], 200701 => [ 0, 20,41.25, 40, 81.75, 60,122.25 ], 200702 => [ 0, 20,41.25, 40, 81.75, 60,122.25 ], 200703 => [ 0, 20,41.25, 40, 81.75, 60,122.25 ], 200704 => [ 0, 20,41.25, 40, 81.75, 60,122.25 ], 200705 => [ 0, 20,41.25, 40, 81.75, 60,122.25 ], 200706 => [ 0, 20,41.25, 40, 81.75, 60,122.25 ], 2007 => [ 0, 20,45.50, 40, 90.00, 60,134.50 ], 200801 => [ 0, 20,45.50, 40, 90.00, 60,134.50 ], 200802 => [ 0, 20,45.50, 40, 90.00, 60,134.50 ], 200803 => [ 0, 20,45.50, 40, 90.00, 60,134.50 ], 200804 => [ 0, 20,45.50, 40, 90.00, 60,134.50 ], 200805 => [ 0, 20,45.50, 40, 90.00, 60,134.50 ], 200806 => [ 0, 20,45.50, 40, 90.00, 60,134.50 ], 2008 => [ 0, 20,52.50, 40,103.50, 60,154.75 ], 2009 => [ 0, 20,52.50, 40,103.50, 60,154.75 ], 2010 => [ 0, 20,52.50, 40,103.50, 60,154.75 ], 2011 => [ 0, 20,58.00, 40,113.00, 60,168.00 ], 2012 => [ 0, 20,58.00, 40,113.00, 60,168.00 ], 2013 => [ 1, 20,58.00, 40,113.00, 60,168.00 ], 2014 => [ 1, 20,58.00, 40,113.00, 60,168.00 ], 2015 => [ 1, 20,58.00, 40,113.00, 60,168.00 ], 2016 => [ 1, 20,58.00, 40,113.00, 60,168.00 ], 2017 => [ 1, 20,58.00, 40,113.00, 60,168.00 ], 2018 => [ 1, 20,58.00, 40,113.00, 60,168.00 ], 2019 => [ 1, 20,58.00, 40,113.00, 60,168.00 ], 2020 => [ 1, 20,58.00, 40,113.00, 60,168.00 ], 2021 => [ 1, 20,58.00, 40,113.00, 60,168.00 ], 202201 => [ 1, 20,58.00, 40,113.00, 60,168.00 ], 202202 => [ 1, 20,58.00, 40,113.00, 60,168.00 ], 202203 => [ 1, 20,58.00, 40,113.00, 60,168.00 ], 202205 => [ 1, 20,58.00, 40,113.00, 60,168.00 ], 2022 => [ 4, 20,87.00, 40,169.50, 60,252.00 ], 2023 => [ 4, 20,87.00, 40,169.50, 60,252.00 ], 202307 => [ 1, 20,58.00, 40,113.00, 60,168.00 ], 202308 => [ 1, 20,58.00, 40,113.00, 60,168.00 ], 202309 => [ 1, 20,58.00, 40,113.00, 60,168.00 ], 202310 => [ 1, 20,58.00, 40,113.00, 60,168.00 ], 202311 => [ 1, 20,58.00, 40,113.00, 60,168.00 ], 202312 => [ 1, 20,58.00, 40,113.00, 60,168.00 ], 2024 => [ 1, 20,58.00, 40,113.00, 60,168.00 ], ); my($km,$year)=@_; $year||=100*(1900+(localtime(time))[5]) +1+(localtime(time))[6]; $year=~s/\d\d$// unless($Wert{$year}); return undef unless($Wert{$year}); my($pp, $pe, @pp)=(0,@{$Wert{$year}}); $pp=shift @pp while(@pp and $km>=shift @pp); return ($pp,$pp? 2*$km*$pe/12:0); } sub gPP { my %Wert= ( # EUR/km km => EUR km => EUR km => EUR 2000 => [ 0, 2,17.44, 20, 69.77, 40,122.09, 60,174.42 ], # öS => EUR 2001 => [ 0, 2,17.44, 20, 69.77, 40,122.09, 60,174.42 ], 2002 => [ 0, 2,17.50, 20, 70.00, 40,122.50, 60,175.00 ], 2003 => [ 0, 2,17.50, 20, 70.00, 40,122.50, 60,175.00 ], 2004 => [ 0, 2,20.25, 20, 81.00, 40,141.00, 60,201.75 ], 2005 => [ 0, 2,20.25, 20, 81.00, 40,141.00, 60,201.75 ], 2006 => [ 0, 2,22.50, 20, 89.25, 40,155.25, 60,222.00 ], 200701 => [ 0, 2,22.50, 20, 89.25, 40,155.25, 60,222.00 ], 200702 => [ 0, 2,22.50, 20, 89.25, 40,155.25, 60,222.00 ], 200703 => [ 0, 2,22.50, 20, 89.25, 40,155.25, 60,222.00 ], 200704 => [ 0, 2,22.50, 20, 89.25, 40,155.25, 60,222.00 ], 200705 => [ 0, 2,22.50, 20, 89.25, 40,155.25, 60,222.00 ], 200706 => [ 0, 2,22.50, 20, 89.25, 40,155.25, 60,222.00 ], 2007 => [ 0, 2,24.75, 20, 98.25, 40,171.00, 60,244.25 ], 200801 => [ 0, 2,24.75, 20, 98.25, 40,171.00, 60,244.25 ], 200802 => [ 0, 2,24.75, 20, 98.25, 40,171.00, 60,244.25 ], 200803 => [ 0, 2,24.75, 20, 98.25, 40,171.00, 60,244.25 ], 200804 => [ 0, 2,24.75, 20, 98.25, 40,171.00, 60,244.25 ], 200805 => [ 0, 2,24.75, 20, 98.25, 40,171.00, 60,244.25 ], 200806 => [ 0, 2,24.75, 20, 98.25, 40,171.00, 60,244.25 ], 2008 => [ 0, 2,28.50, 20,113.00, 40,196.75, 60,281.00 ], 2009 => [ 0, 2,28.50, 20,113.00, 40,196.75, 60,281.00 ], 2010 => [ 0, 2,28.50, 20,113.00, 40,196.75, 60,281.00 ], 2011 => [ 0, 2,31.00, 20,123.00, 40,214.00, 60,306.00 ], 2012 => [ 0, 2,31.00, 20,123.00, 40,214.00, 60,306.00 ], 2013 => [ 1, 2,31.00, 20,123.00, 40,214.00, 60,306.00 ], 2014 => [ 1, 2,31.00, 20,123.00, 40,214.00, 60,306.00 ], 2015 => [ 1, 2,31.00, 20,123.00, 40,214.00, 60,306.00 ], 2016 => [ 1, 2,31.00, 20,123.00, 40,214.00, 60,306.00 ], 2017 => [ 1, 2,31.00, 20,123.00, 40,214.00, 60,306.00 ], 2018 => [ 1, 2,31.00, 20,123.00, 40,214.00, 60,306.00 ], 2019 => [ 1, 2,31.00, 20,123.00, 40,214.00, 60,306.00 ], 2020 => [ 1, 2,31.00, 20,123.00, 40,214.00, 60,306.00 ], 2021 => [ 1, 2,31.00, 20,123.00, 40,214.00, 60,306.00 ], 202201 => [ 1, 2,31.00, 20,123.00, 40,214.00, 60,306.00 ], 202202 => [ 1, 2,31.00, 20,123.00, 40,214.00, 60,306.00 ], 202203 => [ 1, 2,31.00, 20,123.00, 40,214.00, 60,306.00 ], 202204 => [ 1, 2,31.00, 20,123.00, 40,214.00, 60,306.00 ], 2022 => [ 4, 2,46.50, 20,184.50, 40,321.00, 60,459.00 ], 2023 => [ 4, 2,46.50, 20,184.50, 40,321.00, 60,459.00 ], 202307 => [ 1, 2,31.00, 20,123.00, 40,214.00, 60,306.00 ], 202308 => [ 1, 2,31.00, 20,123.00, 40,214.00, 60,306.00 ], 202309 => [ 1, 2,31.00, 20,123.00, 40,214.00, 60,306.00 ], 202310 => [ 1, 2,31.00, 20,123.00, 40,214.00, 60,306.00 ], 202311 => [ 1, 2,31.00, 20,123.00, 40,214.00, 60,306.00 ], 202312 => [ 1, 2,31.00, 20,123.00, 40,214.00, 60,306.00 ], 2024 => [ 1, 2,31.00, 20,123.00, 40,214.00, 60,306.00 ], ); my($km,$year)=@_; $year||=100*(1900+(localtime(time))[5]) +1+(localtime(time))[6]; $year=~s/\d\d$// unless($Wert{$year}); return undef unless($Wert{$year}); my($pp, $pe, @pp)=(0,@{$Wert{$year}}); $pp=shift @pp while(@pp and $km>=shift @pp); return ($pp,$pp? 2*$km*$pe/12:0); } ########################################################################################################################### # $vekehrsAbsetzbetrag=verkAB($v,$year) # \ \________ Jahr der Bemessung # \__________ zu versteuerndes Einkommen (Brutto-SV-Absetzbeträge) sub verkAB { my($v,$year)=@_; return 54.00 # Arbeitnehmerabsetzbetrag (war öS 750,00) +291.00 if($year<2016); # Verkehrsabsetzbetrag (war öS 4000,00) return 400.00 if($year<2023); # Verkehrsabsetzbetrag ab 1.1.2016 return 421.00; # Verkehrsabsetzbetrag ab 1.1.2023 #-------------------------------------------------------------------- # EStG §33 vom 30.10.2019 # (5) Bei Einkünften aus einem bestehenden Dienstverhältnis stehen folgende Absetzbeträge zu: # 1. Ein Verkehrsabsetzbetrag von 400 Euro jährlich. # 2. Bei Anspruch auf ein Pendlerpauschale gemäß § 16 Abs. 1 Z 6 erhöht sich der Verkehrsabsetzbetrag auf 690 Euro, # wenn das Einkommen des Steuerpflichtigen 12 200 Euro im Kalenderjahr nicht übersteigt. Der erhöhte # Verkehrsabsetzbetrag vermindert sich zwischen Einkommen von 12 200 Euro und 13 000 Euro gleichmäßig # einschleifend auf 400 Euro. # 3. Der Verkehrsabsetzbetrag gemäß Z 1 oder 2 erhöht sich um 300 Euro (Zuschlag), wenn das Einkommen des # Steuerpflichtigen 15 500 Euro im Kalenderjahr nicht übersteigt. Der Zuschlag vermindert sich zwischen # Einkommen von 15 500 Euro und 21 500 Euro gleichmäßig einschleifend auf Null. # # ABER ... # # laut z.B. https://www.ketreuhand.at/Newsletter-1903/Steuerreform-2020/Steuerreform-2020.htm # "Der Zuschlag soll nur im Rahmen der Veranlagung berücksichtigt werden können." # # return 400.00 if($year<2020); # Verkehrsabsetzbetrag vor 2020 # # return 400.00+300.00 if(15500>$v); # voller Verkehrsabsetzbetrag unter 15.500,-/a # return 400.00 if(21500<$v); # kein Verkehrsabsetzbetrag über 21.500,-/a (§33(5)Z3 EStG vom 30.10.2019) # # return 400.00+300.00 * (21500-$v) # / (21500-15500); # Einschleifregelung zw. 15.500,- und 21.500,- #-------------------------------------------------------------------- # | bis Veranlagung 2020 | ab Veranlagung 2021 # Verkehrsabsetzbetrag | 400 Euro | 400 Euro # Zuschlag | 400 Euro | 650 Euro # Einkommensgrenze/a | # für vollen Zuschlag | 15.500 Euro | 16.000 Euro # # laut https://www.szabo.at/steuerreform-steuerzuckerl-fuer-niedrigverdiener-gelten-grossteils-ab-2021/ } ########################################################################################################################### # $pensionistenAbsetzbetrag=penskAB($v,$year) # \ \________ Jahr der Bemessung # \__________ Bemessungsgrundlage (Monatsbrutto-SV) sub pensAB { my %Wert= ( #----------------------------------------------------- # §33 EStG vom 30.12.2000 (ab 1.1.2001) # (6) Soweit einem Steuerpflichtigen die Absetzbeträge nach Abs. 5 nicht zustehen, hat er Anspruch auf einen # Pensionistenabsetzbetrag bis zu 5 500 S jährlich [...]. Der Pensionistenabsetzbetrag vermindert sich # gleichmäßig einschleifend zwischen zu versteuernden Pensionsbezügen von 230 000 S und 300 000 S auf Null. 2001 => [ 400, 16715, 21800 ], #----------------------------------------------------- # §33 EStG vom 1.1.2002 (ab 1.1.2002) # (6) Soweit einem Steuerpflichtigen die Absetzbeträge nach Abs. 5 nicht zustehen, hat er Anspruch auf einen # Pensionistenabsetzbetrag bis zu 400 Euro jährlich [...]. Der Pensionistenabsetzbetrag vermindert sich # gleichmäßig einschleifend zwischen zu versteuernden Pensionsbezügen von 16 715 Euro und 21 800 Euro auf Null. 2002 => [ 400, 16715, 28000 ], 2003 => [ 400, 16715, 28000 ], 2004 => [ 400, 16715, 28000 ], #----------------------------------------------------- # §33 EStG vom 30.12.2004 (ab 1.1.2005) # (6) Stehen einem Steuerpflichtigen die Absetzbeträge nach Abs. 5 nicht zu, hat er Anspruch auf einen # Pensionistenabsetzbetrag bis zu 400 Euro jährlich [...]. Der Pensionistenabsetzbetrag vermindert sich # gleichmäßig einschleifend zwischen zu versteuernden Pensionsbezügen von 17.000 Euro und 25.000 Euro auf Null. 2005 => [ 400, 17000, 25000 ], 2006 => [ 400, 17000, 25000 ], 2007 => [ 400, 17000, 25000 ], 2008 => [ 400, 17000, 25000 ], 2009 => [ 400, 17000, 25000 ], 2010 => [ 400, 17000, 25000 ], 2011 => [ 400, 17000, 25000 ], 2012 => [ 400, 17000, 25000 ], 2013 => [ 400, 17000, 25000 ], 2014 => [ 400, 17000, 25000 ], 2015 => [ 400, 17000, 25000 ], 2016 => [ 400, 17000, 25000 ], 2017 => [ 400, 17000, 25000 ], 2018 => [ 400, 17000, 25000 ], 2019 => [ 400, 17000, 25000 ], #----------------------------------------------------- # §33 EStG vom 30.10.2019 (ab 1.1.2020) # (6) # 3. Liegen die Voraussetzungen für einen erhöhten Pensionistenabsetzbetrag nach der Z 1 nicht vor, beträgt der # Pensionistenabsetzbetrag 600 Euro. Dieser Absetzbetrag vermindert sich gleichmäßig einschleifend zwischen # zu versteuernden laufenden Pensionseinkünften von 17 000 Euro und 25 000 Euro auf Null. 2020 => [ 600, 17000, 25000 ], 2021 => [ 600, 17000, 25000 ], #-------------------------------------------------------------------- # ÖkoStRefG 2022 Teil I) 18. # § 33 EStG Abs. 6 Z 2 und Z 3 lauten: # 2. Der erhöhte Pensionistenabsetzbetrag beträgt 1 214 Euro, wenn die laufenden Pensionseinkünfte des Steuerpflichtigen # 19 930 Euro im Kalenderjahr nicht übersteigen. Dieser Absetzbetrag vermindert sich gleichmäßig einschleifend # zwischen zu versteuernden laufenden Pensionseinkünften von 19 930 Euro und 25 250 Euro auf null. # 3. Liegen die Voraussetzungen für einen erhöhten Pensionistenabsetzbetrag nach der Z 1 nicht vor, beträgt der # Pensionistenabsetzbetrag 825 Euro. Dieser Absetzbetrag vermindert sich gleichmäßig einschleifend zwischen zu # versteuernden laufenden Pensionseinkünften von 17 500 Euro und 25 500 Euro auf null. 2022 => [ 825, 17500, 25500 ], 2023 => [ 868, 18410, 26826 ], 2024 => [ 868, 18410, 26826 ], ); my($v,$year)=@_; my($ab,$u,$o)=@{$Wert{$year}}; return $ab if($v<=$u); # voller Pensionistenabsetzbetrag unter ... return 0.00 if($v>=$o); # kein Pensionistenabsetzbetrag über ... return $ab * ($o-$v) / ($o-$u); # Einschleifregelung dazwischen ... } ########################################################################################################################### sub allgAB { my %Wert= ( # §33 EStG # # (3) Ein allgemeiner Steuerabsetzbetrag von 8 840 S jährlich steht jedem Steuerpflichtigen zu. # Übersteigt das Einkommen 200 000 S, so vermindert sich der Absetzbetrag gleichmäßig in einem # solchen Ausmaß, dass sich bei einem Einkommen von 500 000 S kein Absetzbetrag mehr ergibt. 1999 => [ 1758, 642, 36337, -642 ], # (3) Ein allgemeiner Steuerabsetzbetrag von 12 200 S jährlich steht jedem Steuerpflichtigen zu. # Der allgemeine Steuerabsetzbetrag verändert sich nach Maßgabe der folgenden Bestimmungen: # von 122.000 öS bis 135.000 öS um .......... -1600 öS # von 135.000 öS bis 150.000 öS um .......... +1300 öS # von 150.000 öS bis 200.000 öS um .......... -500 öS. # von 200.000 öS bis 250.000 öS um .......... -2000 öS # von 250.000 öS bis 400.000 öS um .......... -2900 öS # von 400.000 öS bis 500.000 öS um .......... -4000 öS # von 500.000 öS bis 700.000 öS um .......... -2000 öS. 2000 => [ 8866, 887, 9811, -116, 10901, 94, 14535, -36, 18168, -146, 21800, -221, 29070, -291, 36337, -146 ], # Für Arbeitnehmer oder Pensionisten ohne Alleinverdiener- oder # Alleinerzieherabsetzbetrag verändert sich der allgemeine # Steuerabsetzbetrag gleichmäßig einschleifend für Einkommensteile # von 122.000 öS bis 135.000 öS um .......... -1600 öS # von 135.000 öS bis 150.000 öS um .......... +1300 öS # von 150.000 öS bis 200.000 öS um .......... -500 öS # von 200.000 öS bis 250.000 öS um .......... -2000 öS # von 250.000 öS bis 300.000 öS um .......... -967 öS # von 300.000 öS bis 487.400 öS um .......... -8433 öS 2001 => [ 8866, 887, 9811, -116, 10901, 94, 14535, -36, 18168, -146, 21800, -70, 35421, -613 ], # (3) Ein allgemeiner Steuerabsetzbetrag von 887 Euro jährlich steht jedem Steuerpflichtigen zu. # Der allgemeine Steuerabsetzbetrag verändert sich nach Maßgabe der folgenden Bestimmungen: # von 8.866 Euro bis 9.811 Euro um ........ -116 Euro # von 9.811 Euro bis 10.901 Euro um ........ +94 Euro # von 10.901 Euro bis 14.535 Euro um ........ -36 Euro # von 14.535 Euro bis 18.168 Euro um ........ -146 Euro # von 18.168 Euro bis 21.800 Euro um ........ -70 Euro # von 21.800 Euro bis 35.421 Euro um ........ -613 Euro 2002 => [ 8866, 887, 9811, -116, 10901, 94, 14535, -36, 18168, -146, 21800, -70, 35421, -613 ], 2003 => [ 8866, 887, 9811, -116, 10901, 94, 14535, -36, 18168, -146, 21800, -70, 35421, -613 ], # (3) Ein allgemeiner Steuerabsetzbetrag von 1 264 Euro jährlich # steht jedem Steuerpflichtigen zu. Der allgemeine Steuerabsetzbetrag # vermindert sich gleichmäßig einschleifend für die Einkommensteile # von 10.000 Euro bis 15.000 Euro um ........ 375 Euro # von 15.000 Euro bis 21.800 Euro um ........ 272 Euro # von 21.800 Euro bis 35.511 Euro um ........ 617 Euro 2004 => [ 10000, 1264, 15000, -375, 21800, -272, 35511, -617 ], ); my($v,$year)=@_; if($Wert{$year}) { my($i,$m)=(0,$Wert{$year}[1]); return $m if($v<$Wert{$year}[0]); while($Wert{$year}[$i+3]) { return $m+ $Wert{$year}[$i+3]*($v-$Wert{$year}[$i])/ ($Wert{$year}[$i+2] -$Wert{$year}[$i]) if($v<$Wert{$year}[$i+2]); $m+=$Wert{$year}[$i+3]; $i+=2; } } return 0 } ########################################################################################################################### 1;
Vereinfachte Berechnung des Nettogehalts für Angestellte und Pensionisten von 2001 bis 2024 (inkl. ÖkoStRefG 2022; perl-Modul)(35.3kB)
Download