Steuererklärung (Deutschland)
Haftungsausschluss: Dies ist eine Vorlage, keine Steuerberatung. Es handelt sich um eine Ausgangsstruktur für Ihre eigene Steuererklärung, die aus den Erfahrungen eines Haushalts erstellt und mit den in
references/thresholds.jsonverlinkten Gesetzestexten (Stand des dort angegebenen Datums) abgeglichen wurde. Das Steuerrecht ändert sich jedes Jahr, und jeder Fall ist anders. Die Fähigkeit kann fehlerhaft, unvollständig oder veraltet sein. Sie sind für das, was Sie einreichen, verantwortlich. Prüfen Sie jeden Betrag selbst und ziehen Sie bei komplexen Fällen einen Steuerberater oder einen Lohnsteuerhilfeverein hinzu. Keine Gewährleistung (siehe LICENSE). Passen Sie die Regeln, Fragen und Grenzen an Ihre eigene Situation an, bevor Sie sich darauf verlassen.
Das Modell schlägt vor und erklärt. Skripte prüfen, was sie prüfen können. Ein Mensch gibt frei und sendet ab.
Kein Betrag gelangt aufgrund der Überzeugung des Modells in die Steuererklärung. Er wird aufgenommen, wenn scripts/check_receipts.py ihn in seinem Quelldokument findet und scripts/limits.py die von ihm abgedeckten Grenzen angewendet hat. Die Skripte decken eine Reihe gängiger Regeln ab, nicht das gesamte Steuerrecht; alles, was außerhalb liegt, ist eine Frage an den Benutzer. Ermessensentscheidungen (z. B. handelt es sich bei diesem Abonnement um berufliche Aufwendungen?) werden als Frage an den Menschen festgehalten, niemals stillschweigend entschieden.
Umfang und Grenzen (zuerst lesen)
- Für die eigene Steuererklärung des Benutzers oder eine gemeinsame Veranlagung mit dem Ehepartner. Die steuerliche Hilfeleistung für Dritte als Geschäft ist in Deutschland Lizenzpflichtigen vorbehalten (§§ 2, 5 StBerG; § 6 listet die engen Ausnahmen auf, z. B. unentgeltliche Hilfe für Angehörige). Bieten Sie dies nicht an.
- Dies ist eine Vorlage, keine Steuerberatung. Sagen Sie dies einmal, klar und deutlich, wenn der Benutzer beginnt, vor dem Interview.
- Jahresspezifische Zahlen stammen aus
references/thresholds.json, jeweils mit einer offiziellen Quelle. Fehlt das Jahr dort, stoppen Sie und überprüfen Sie es anhand einer offiziellen Quelle (siehereferences/official-sources.md), bevor Sie es hinzufügen. - Niemals absenden. Der Agent kann auf Anfrage des Benutzers Formulare in ELSTER oder in Steuersoftware ausfüllen, aber das Absenden erfolgt immer durch den Klick des Benutzers.
Modi
- Jahreserklärung: Der vollständige Workflow unten.
- Monatsscan: Siehe
references/monthly.md. Führen Sie dies an den ersten Tagen jedes Monats über die Zahlungen, Rechnungen und E-Mails des Vormonats aus. - Bescheidprüfung: Vergleichen Sie den Steuerbescheid mit dem, was eingereicht wurde, listen Sie jede Abweichung auf sowie die Frist für einen Einspruch (Einspruch: einen Monat nachdem der Bescheid als zugestellt gilt, § 355 AO). Siehe
references/workflow.md, Schritt 6.
Jahresarbeitsablauf (Tore, in Reihenfolge)
Jeder Schritt hat ein Tor. Überschreiten Sie kein Tor allein aufgrund der Beurteilung des Modells.
- Interview. Stellen Sie die 12 Screening-Fragen aus
references/interview.json, jeweils ein oder zwei auf einmal, in einfachen Worten. Antworten sind Ja, Nein oder Unsicher (Unsicher zählt als Ja). Führen Sie dannpython3 scripts/interview.py --answers answers.jsonaus (oder--askin einem Terminal). Die Ausgabe listet pro offenem Bereich die Folgefragen, die zu sammelnden Dokumente, die Ledger-Kategorien für dessen Kosten und die wahrscheinlichen Formulare auf. Überspringen Sie keinen Bereich, nur weil der Benutzer ihn nicht erwähnt hat. Tor: Alle 12 beantwortet. - Sammeln. Fragen Sie zuerst nach dem Steuerjahr. Sammeln Sie die letztjährige Steuererklärung und den Bescheid, alle Bescheinigungen, Rechnungen, Kontoauszüge und Briefe des Finanzamts in einem lokalen Ordner. Verwenden Sie
references/intake-checklist.md. Tor: Jeder Checklistenabschnitt hat eine explizite Antwort (Wert, Ja/Nein, Keine). - Sichern. Arbeiten Sie im lokalen Ordner des Benutzers. Fragen Sie niemals nach Passwörtern und speichern Sie keine; der Benutzer meldet sich an. Halten Sie Steuer-IDs, IBANs und Namen aus Dateien, die synchronisiert oder geteilt werden, fern. Tor: Der Benutzer hat bestätigt, wo die Daten gespeichert sind und wer sie sehen kann.
- Testaufgabe (Agent einstellen). Lesen Sie vor dem neuen Jahr den letztjährigen Bescheid und finden Sie, was übersehen oder gekürzt wurde. Berichten Sie dies mit Seite und Zeile. Tor: Der Benutzer überprüft den Fund gegen das Papier.
- Ledger erstellen. Eine Zeile pro geltend gemachter Kosten in
ledger-YYYY.csv(Spalten inscripts/limits.py --help). Sortieren Sie Zeilen mitreferences/deduction-guide.md. Gemischt genutzte Gegenstände erhalten einenwork_shareund einen schriftlichen Grund. - Prüfen (Skripte, nicht Meinung).
python3 scripts/check_receipts.py ledger-YYYY.csv --root ORDNERJeder Betrag muss in seinem Dokument gefunden werden. Scans werden mit OCR gelesen, wenn Tesseract installiert ist. Eine fehlgeschlagene Zeile wird entweder korrigiert oder als abgeleiteter Wert mit danebenstehender Berechnung markiert.python3 scripts/limits.py ledger-YYYY.csv --year YYYYWendet Anteile, Höchstgrenzen, den Pauschbetrag, die GWG-Grenze und die Regel des Zahlungsjahrs an. Markierte Zeilen werden als Fragen an den Benutzer weitergeleitet.- Mietwohnung:
python3 scripts/afa.py split|eligible|schedule ...Tor: Beide Skripte beenden mit exit 0 (beilimits.pybestehen nur Zeilen mit Statusapproved), oder jede verbleibende Markierung hat eine schriftliche Antwort.
- Ausfüllen, prüfen, absenden. Ordnen Sie die geprüften Summen den Formularen zu (
references/output-template.md). Der Benutzer prüft jedes Feld und sendet ab. Nach Eingang des Bescheids führen Sie die Bescheidprüfung durch.
Ausgaberegeln
- Beginnen Sie mit dem Ergebnis: Erstattung oder Zahlungsbetrag und was noch dagegen spricht.
- Zeigen Sie die Skriptausgabe, keine Paraphrase davon.
- Kennzeichnen Sie jede Schätzung als Schätzung.
- Geben Sie bei deutschen Begriffen bei der ersten Verwendung den englischen Begriff in Klammern an.
Dateien
scripts/interview.py+references/interview.json: 12 Screening-Fragen -> Sammellistescripts/check_receipts.py: Betrag muss im Quelldokument erscheinenscripts/limits.py: Gesetzliche Grenzen pro Jahr, pro Personscripts/afa.py: Gebäudeanteil, 5 % degressive AfA, Abschreibungsplanscripts/monthly_scan.py: Konto-CSV + Rechnungen + .eml -> Monatsberichtreferences/thresholds.json: Jahreswerte mit offiziellen Quellenreferences/deduction-guide.md: Was zählt und wie zu entscheiden istreferences/workflow.md: Die Tore im Detail, die Bescheidprüfungreferences/monthly.md: Die monatliche Routine und wie man sie einplantreferences/intake-checklist.md,references/output-template.mdreferences/official-sources.mdexamples/: Erfundener Ledger und Rechnungen, um beide Prüfungen in einer Minute auszuprobierentests/:python3 -m unittest discover -s tests