Déclaration d'impôt allemande
Avertissement : ceci est un modèle, pas un conseil fiscal. C'est une structure de départ pour votre propre déclaration, construite à partir de l'expérience d'un foyer et vérifiée par rapport aux textes légaux liés dans
references/thresholds.jsonà la date qui y est indiquée. Le droit fiscal change chaque année et chaque cas est différent. La compétence peut être erronée, incomplète ou obsolète. Vous êtes responsable de ce que vous déclarez. Vérifiez chaque montant vous-même et consultez un Steuerberater (conseiller fiscal) ou un Lohnsteuerhilfeverein (association d'aide à l'impôt sur le salaire) pour les cas complexes. Aucune garantie (voir LICENSE). Adaptez les règles, les questions et les plafonds à votre propre situation avant de vous y fier.
Le modèle propose et explique. Les scripts vérifient ce qu'ils peuvent vérifier. Un humain signe et envoie.
Aucun montant n'entre dans la déclaration parce que le modèle le croit. Il entre lorsque scripts/check_receipts.py le trouve dans son document source et que scripts/limits.py a appliqué les limites qu'il couvre. Les scripts couvrent un ensemble de règles courantes, pas l'ensemble du droit fiscal ; tout ce qui est en dehors de leur champ est une question pour l'utilisateur. Les jugements (ce travail est-il un abonnement ?) sont formulés comme une question pour l'humain, jamais tranchés en silence.
Périmètre et limites (à lire en premier)
- Pour la déclaration de l'utilisateur lui-même, ou une déclaration conjointe avec son conjoint. Aider des tiers avec leurs impôts à titre professionnel est réservé aux professionnels agréés en Allemagne (§§ 2, 5 StBerG ; § 6 énumère les exceptions étroites, comme l'aide non rémunérée pour les proches). Ne le proposez pas.
- Ceci est un modèle, pas un conseil fiscal. Dites-le une fois, clairement, lorsque l'utilisateur commence, avant l'entretien.
- Les chiffres spécifiques à une année proviennent de
references/thresholds.json, chacun avec une source officielle. Si l'année n'y figure pas, arrêtez-vous et vérifiez-la à partir d'une source officielle (voirreferences/official-sources.md) avant de l'ajouter. - Ne soumettez jamais. L'agent peut remplir les formulaires dans ELSTER ou un logiciel fiscal si l'utilisateur le demande, mais l'envoi est toujours le clic de l'utilisateur.
Modes
- Déclaration annuelle : le flux de travail complet ci-dessous.
- Scan mensuel : voir
references/monthly.md. À exécuter les premiers jours de chaque mois sur les paiements, factures et e-mails du mois précédent. - Vérification de l'avis d'imposition : comparer le Steuerbescheid avec ce qui a été déclaré, lister chaque différence, et le délai pour former une opposition (Einspruch : un mois après que l'avis est réputé délivré, § 355 AO). Voir
references/workflow.md, étape 6.
Flux de travail annuel (étapes séquentielles, dans l'ordre)
Chaque étape a une validation. Ne franchissez pas une validation sur le seul jugement du modèle.
- Entretien. Posez les 12 questions de sélection dans
references/interview.json, une ou deux à la fois, en mots simples. Les réponses sont oui, non ou incertain (incertain compte comme oui). Exécutez ensuitepython3 scripts/interview.py --answers answers.json(ou--askdans un terminal). La sortie liste, par domaine ouvert, les questions complémentaires, les documents à rassembler, les catégories de grand livre pour ses coûts et les formulaires probables. Ne sautez pas un domaine parce que l'utilisateur ne l'a pas mentionné. Validation : les 12 réponses fournies. - Rassembler. Demandez d'abord l'année fiscale. Rassemblez la déclaration et l'avis de l'année précédente, tous les certificats, factures, relevés bancaires et lettres de l'administration fiscale dans un seul dossier local. Utilisez
references/intake-checklist.md. Validation : chaque section de la liste de contrôle a une réponse explicite (valeur, oui/non, aucun). - Sécuriser. Travaillez dans le dossier local de l'utilisateur. Ne demandez ni ne stockez jamais de mots de passe ; l'utilisateur se connecte. Gardez les numéros d'identification fiscale, les IBAN et les noms hors de tout fichier qui se synchronise ou est partagé. Validation : l'utilisateur a confirmé où se trouvent les données et qui peut les voir.
- Test (embaucher l'agent). Avant la nouvelle année, lisez l'avis d'imposition de l'année précédente et trouvez ce qui a été oublié ou réduit. Signalez-le avec la page et la ligne. Validation : l'utilisateur vérifie la constatation par rapport au document papier.
- Construire le grand livre. Une ligne par coût déclaré dans
ledger-YYYY.csv(colonnes dansscripts/limits.py --help). Triez les lignes avecreferences/deduction-guide.md. Les éléments à usage mixte reçoivent unwork_shareet une raison écrite. - Vérifier (scripts, pas opinion).
python3 scripts/check_receipts.py ledger-YYYY.csv --root DOSSIERChaque montant doit se trouver dans son document. Les scans sont lus avec OCR lorsque tesseract est installé. Une ligne qui échoue est soit corrigée, soit marquée comme un chiffre dérivé avec son calcul écrit à côté.python3 scripts/limits.py ledger-YYYY.csv --year AAAAApplique les parts, les plafonds, le forfait, la limite des actifs de faible valeur et la règle de l'année de paiement. Les lignes signalées sont remontées à l'utilisateur comme questions.- Appartement locatif :
python3 scripts/afa.py split|eligible|schedule ...Validation : les deux scripts se terminent par 0 (danslimits.pyseules les lignes avec le statutapprovedpassent), ou chaque indicateur restant a une réponse écrite.
- Remplir, vérifier, envoyer. Reporter les totaux vérifiés dans les formulaires (
references/output-template.md). L'utilisateur vérifie chaque champ et envoie. Après réception de l'avis, exécutez la vérification de l'avis.
Règles de sortie
- Commencez par le résultat : remboursement ou montant dû, et ce qui le bloque encore.
- Montrez la sortie du script, pas une paraphrase.
- Marquez chaque estimation comme une estimation.
- Pour les termes allemands, donnez l'anglais entre parenthèses la première fois.
Fichiers
scripts/interview.py+references/interview.json: 12 questions de sélection -> liste de collectescripts/check_receipts.py: le montant doit apparaître dans son document sourcescripts/limits.py: plafonds légaux par année, par personnescripts/afa.py: part du bâtiment, éligibilité à 5 % dégressive, plan d'amortissementscripts/monthly_scan.py: CSV bancaire + factures + .eml -> rapport mensuelreferences/thresholds.json: valeurs annuelles avec sources officiellesreferences/deduction-guide.md: ce qui compte et comment déciderreferences/workflow.md: les validations en détail, la vérification de l'avisreferences/monthly.md: la routine mensuelle et comment la planifierreferences/intake-checklist.md,references/output-template.mdreferences/official-sources.mdexamples/: grand livre et reçus fictifs pour essayer les deux vérifications en une minutetests/:python3 -m unittest discover -s tests