Skip to content

Commit 98a52fc

Browse files
author
benoit-cty
committed
CDHR 2026
1 parent 41126e8 commit 98a52fc

File tree

4 files changed

+234
-0
lines changed

4 files changed

+234
-0
lines changed

openfisca_france/model/prelevements_obligatoires/impot_revenu/contribution_differentielle_hauts_revenus.py

Lines changed: 212 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,40 @@ def formula_2025_01_01(foyer_fiscal, period, parameters):
4343
# pour chaque année, le revenu mentionné au présent II.
4444

4545
return rfr
46+
def formula_2026_01_01(foyer_fiscal, period, parameters):
47+
# LF 2026 : Modifications de l'article 224 CGI
48+
# II. – Le revenu mentionné au I s'entend du revenu fiscal de référence défini au 1° du IV de l'article 1417,
49+
# sans qu'il soit fait application des règles de quotient définies au I de l'article 163-0 A,
50+
rfr = foyer_fiscal('rfr', period)
51+
52+
# [leximpact : TODO - exclure le système du quotient (art. 163-0 A) du RFR]
53+
# Le RFR doit être calculé sans application des règles de quotient pour revenus exceptionnels
54+
55+
# diminué du montant :
56+
# 1° Des abattements mentionnés au a bis du même 1° autres que ceux mentionnés aux 1 ter ou 1 quater de l'article 150-0 D ;
57+
# 2° Des bénéfices exonérés mentionnés au b du 1° du IV de l'article 1417 ;
58+
# 3° Des produits et revenus exonérés en application de l'article 155 B ;
59+
# 4° Du résultat net bénéficiaire déterminé en application de l'article 238 effectivement imposé au taux de 10 % ;
60+
# 5° Des produits imposés au taux de 10 % mentionnés au second alinéa du I de l'article 93 quater ;
61+
# 6° Des plus-values mentionnées au I de l'article 150-0 B ter pour lesquelles le report d'imposition expire ;
62+
# 7° Des produits et revenus exonérés en application d'une convention internationale relative aux doubles impositions.
63+
64+
# [leximpact : condition revenus exceptionnels - inchangée]
65+
# Pour la détermination du revenu mentionné au présent II,
66+
# les revenus qui, par leur nature, ne sont pas susceptibles d'être recueillis annuellement
67+
# et dont le montant dépasse la moyenne des revenus nets d'après lesquels le contribuable
68+
# a été soumis à l'impôt sur le revenu au titre des trois dernières années,
69+
# sont retenus pour le quart de leur montant.
4670

71+
# [leximpact : nouvelles règles de changement de situation familiale (LF 2026)]
72+
# En cas de modification de la situation de famille du contribuable au cours de l'année d'imposition
73+
# ou des trois années précédentes (et non plus deux), les revenus nets sont ceux :
74+
# a) Du couple passible de la contribution et des foyers fiscaux auxquels les conjoints ou les partenaires
75+
# de ce couple ont appartenu au cours de l'année d'imposition, ou des trois années précédentes en cas d'union.
76+
# b) Du contribuable passible de la contribution et des foyers fiscaux auxquels il a appartenu au cours
77+
# de l'année d'imposition, ou des trois années précédentes en cas de divorce, de séparation ou de décès.
78+
79+
return rfr
4780

4881
class contribution_differentielle_hauts_revenus_eligible(Variable):
4982
value_type = float
@@ -140,6 +173,40 @@ def formula_2025_01_01(foyer_fiscal, period, parameters):
140173
+ f7ik + f7il + f7gq + f7gr + f7fq + f7ft + f7fm + f7fl + f7fy)
141174
return reduction_d_impot_majorantes
142175

176+
def formula_2026_01_01(foyer_fiscal, period, parameters):
177+
# LF 2026 : IV.A.2° - Ajout de l'article 200 (dons aux oeuvres) aux réductions majorantes
178+
# « à l'article 200 » est inséré après « I, »
179+
f8wt = foyer_fiscal('f8wt', period)
180+
f8tb = foyer_fiscal('f8tb', period)
181+
f8tl = foyer_fiscal('f8tl', period)
182+
f8tp = foyer_fiscal('f8tp', period)
183+
f8uz = foyer_fiscal('f8uz', period)
184+
f8wa = foyer_fiscal('f8wa', period)
185+
f8wd = foyer_fiscal('f8wd', period)
186+
f8wr = foyer_fiscal('f8wr', period)
187+
f8wc = foyer_fiscal('f8wc', period)
188+
f8te = foyer_fiscal('f8te', period)
189+
interets_emprunt_reprise_societe = foyer_fiscal('interets_emprunt_reprise_societe', period)
190+
f7ik = foyer_fiscal('f7ik', period)
191+
f7il = foyer_fiscal('f7il', period)
192+
f7gq = foyer_fiscal('f7gq', period)
193+
f7gr = foyer_fiscal('f7gr', period)
194+
f7fq = foyer_fiscal('f7fq', period)
195+
f7ft = foyer_fiscal('f7ft', period)
196+
f7fm = foyer_fiscal('f7fm', period)
197+
f7fl = foyer_fiscal('f7fl', period)
198+
f7fy = foyer_fiscal('f7fy', period)
199+
200+
# LF 2026 : Ajout de l'article 200 (réduction d'impôt pour dons)
201+
# Les dons aux oeuvres (art. 200) sont maintenant inclus dans les réductions majorantes
202+
reductions_dons = foyer_fiscal('reductions_dons', period)
203+
204+
reduction_d_impot_majorantes = (f8wt + f8tb + f8tl + f8tp + f8uz
205+
+ f8wa + f8wd + f8wr + f8wc + f8te + interets_emprunt_reprise_societe
206+
+ f7ik + f7il + f7gq + f7gr + f7fq + f7ft + f7fm + f7fl + f7fy
207+
+ reductions_dons)
208+
return reduction_d_impot_majorantes
209+
143210

144211
class contribution_differentielle_hauts_revenus_decote(Variable):
145212
value_type = float
@@ -328,3 +395,148 @@ def formula_2025_01_01(foyer_fiscal, period, parameters): # Sur revenus 2025
328395
contribution_differentielle_hauts_revenus_eligible
329396
* contribution_differentielle_hauts_revenus_montant
330397
)
398+
def formula_2026_01_01(foyer_fiscal, period, parameters):
399+
# LF 2026 : Modifications de l'article 224 CGI
400+
contribution_differentielle_hauts_revenus_eligible = foyer_fiscal(
401+
'contribution_differentielle_hauts_revenus_eligible', period
402+
)
403+
404+
# III. – La contribution mentionnée au I est égale à la différence, lorsqu'elle est positive, entre :
405+
# 1° Le montant résultant de l'application d'un taux de 20 % au revenu défini au II ;
406+
taux = parameters(
407+
period
408+
).impot_revenu.contributions_exceptionnelles.contribution_differentielle_hauts_revenus.taux_cdhr
409+
contribution_differentielle_hauts_revenus_ressources = foyer_fiscal(
410+
'contribution_differentielle_hauts_revenus_ressources', period
411+
)
412+
413+
# [on soustrait la décote définie en V]
414+
contribution_differentielle_hauts_revenus_decote = foyer_fiscal(
415+
'contribution_differentielle_hauts_revenus_decote', period
416+
)
417+
impot_cible_apres_decote = (
418+
contribution_differentielle_hauts_revenus_ressources * taux
419+
) - contribution_differentielle_hauts_revenus_decote
420+
421+
# 2° Et le montant résultant de la somme de l'impôt sur le revenu et de la contribution prévue à l'article
422+
# 223 sexies définis au IV ainsi que des prélèvements libératoires de l'impôt sur le revenu
423+
# mentionnés au c du 1° du IV de l'article 1417,
424+
contribution_exceptionnelle_hauts_revenus = foyer_fiscal(
425+
'contribution_exceptionnelle_hauts_revenus', period
426+
)
427+
pfu = foyer_fiscal('prelevement_forfaitaire_unique_ir', period)
428+
prelevement_forfaitaire_liberatoire = -1 * foyer_fiscal(
429+
'prelevement_forfaitaire_liberatoire', period
430+
)
431+
ip_net = foyer_fiscal('ip_net', period)
432+
433+
# LF 2026 IV.A dernier alinéa : L'impôt sur le revenu est minoré du montant de l'imposition
434+
# se rapportant aux plus-values mentionnées au I de l'article 150-0 B ter pour lesquelles le report d'imposition expire.
435+
# [leximpact : TODO - implémenter la minoration pour PV en report 150-0 B ter]
436+
minoration_pv_report = 0 # À implémenter si variable disponible
437+
438+
impot_avant_creation_cdhr = (
439+
ip_net
440+
+ pfu
441+
+ prelevement_forfaitaire_liberatoire
442+
+ contribution_exceptionnelle_hauts_revenus
443+
+ foyer_fiscal(
444+
'contribution_differentielle_hauts_revenus_majoration', period
445+
)
446+
+ foyer_fiscal(
447+
'contribution_differentielle_hauts_revenus_majoration_impot', period
448+
)
449+
- minoration_pv_report
450+
)
451+
contribution_differentielle_hauts_revenus_montant = max_(
452+
impot_cible_apres_decote - impot_avant_creation_cdhr, 0
453+
)
454+
455+
# LF 2026 : IV.B - Nouvelles règles pour la CEHR
456+
# B. – Pour la détermination de la contribution mentionnée au 2° du III du présent article :
457+
# 1° Il n'est pas fait application du 1 du II de l'article 223 sexies ; (inchangé)
458+
# 2° La contribution est minorée de la part de son montant se rapportant aux éléments mentionnés aux 1° à 7° du II ;
459+
# 3° La contribution se rapportant aux revenus remplissant les conditions prévues au neuvième alinéa du même II
460+
# est retenue pour le quart de son montant.
461+
# [leximpact : TODO - implémenter les minorations de la CEHR pour éléments du II et revenus exceptionnels]
462+
463+
return (
464+
contribution_differentielle_hauts_revenus_eligible
465+
* contribution_differentielle_hauts_revenus_montant
466+
)
467+
468+
469+
class contribution_differentielle_hauts_revenus_acompte(Variable):
470+
value_type = float
471+
entity = FoyerFiscal
472+
label = "Acompte de la contribution différentielle sur les hauts revenus (CDHR)"
473+
reference = 'https://www.legifrance.gouv.fr/loda/article_lc/LEGIARTI000051200465'
474+
definition_period = YEAR
475+
calculate_output = calculate_output_divide
476+
documentation = '''
477+
LF 2026 : III bis. – A. – 1. La contribution mentionnée au I de l'article 224 du code
478+
général des impôts donne lieu au versement d'un acompte entre le 1er et le 15 décembre
479+
de l'année d'imposition.
480+
Cet acompte est égal à 95 % du montant de la contribution estimé par le contribuable.
481+
'''
482+
483+
def formula_2026_01_01(foyer_fiscal, period, parameters):
484+
# L'acompte est égal à 95 % du montant de la contribution estimée par le contribuable
485+
cdhr_parameters = parameters(
486+
period
487+
).impot_revenu.contributions_exceptionnelles.contribution_differentielle_hauts_revenus
488+
taux_acompte = cdhr_parameters.taux_acompte # 0.95
489+
490+
cdhr = foyer_fiscal('contribution_differentielle_hauts_revenus', period)
491+
return cdhr * taux_acompte
492+
493+
494+
class contribution_differentielle_hauts_revenus_penalite_acompte(Variable):
495+
value_type = float
496+
entity = FoyerFiscal
497+
label = "Pénalité sur l'acompte de la CDHR en cas de défaut, retard ou sous-estimation"
498+
reference = 'https://www.legifrance.gouv.fr/loda/article_lc/LEGIARTI000051200465'
499+
definition_period = YEAR
500+
calculate_output = calculate_output_divide
501+
documentation = '''
502+
LF 2026 : III bis. – C. – 1. Par dérogation au chapitre II du livre II du code général des impôts,
503+
une pénalité prenant la forme d'une majoration de 20 % s'applique :
504+
a) En cas de défaut ou de retard de paiement de l'acompte ;
505+
b) Lorsque le montant de l'acompte versé s'avère inférieur, de plus de 20 %,
506+
à 95 % du montant de la contribution prévue à l'article 224 du code général des impôts.
507+
508+
Cette variable calcule le montant de la pénalité potentielle.
509+
'''
510+
511+
def formula_2026_01_01(foyer_fiscal, period, parameters):
512+
# Pénalité de 20% si acompte versé < 95% * CDHR - 20% (soit < 76% de la CDHR)
513+
cdhr_parameters = parameters(
514+
period
515+
).impot_revenu.contributions_exceptionnelles.contribution_differentielle_hauts_revenus
516+
taux_penalite = cdhr_parameters.taux_penalite_acompte # 0.20
517+
taux_acompte = cdhr_parameters.taux_acompte # 0.95
518+
519+
cdhr = foyer_fiscal('contribution_differentielle_hauts_revenus', period)
520+
acompte_verse = foyer_fiscal('contribution_differentielle_hauts_revenus_acompte_verse', period)
521+
522+
# Seuil de sous-estimation toléré = 20% de marge
523+
seuil_acompte_minimum = cdhr * taux_acompte * (1 - 0.20)
524+
525+
# Pénalité si acompte insuffisant
526+
assiette_penalite = max_(cdhr * taux_acompte - acompte_verse, 0)
527+
penalite = (acompte_verse < seuil_acompte_minimum) * assiette_penalite * taux_penalite
528+
529+
return penalite
530+
531+
532+
class contribution_differentielle_hauts_revenus_acompte_verse(Variable):
533+
value_type = float
534+
entity = FoyerFiscal
535+
label = "Acompte versé pour la contribution différentielle sur les hauts revenus (CDHR)"
536+
reference = 'https://www.legifrance.gouv.fr/loda/article_lc/LEGIARTI000051200465'
537+
definition_period = YEAR
538+
default_value = 0
539+
documentation = '''
540+
Montant de l'acompte effectivement versé par le contribuable entre le 1er et le 15 décembre.
541+
Variable d'entrée à renseigner par l'utilisateur.
542+
'''

openfisca_france/parameters/impot_revenu/contributions_exceptionnelles/contribution_differentielle_hauts_revenus/index.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ metadata:
99
- taux_decote
1010
- plafond_revenus_decote_celibataire
1111
- plafond_revenus_decote_couple
12+
- taux_acompte
13+
- taux_penalite_acompte
1214
notes:
1315
2025-01-01:
1416
- title: Dispositif applicable à partir de l'imposition des revenus de l'année 2025.
17+
2026-01-01:
18+
- title: LF 2026 - Modifications et ajout du mécanisme d'acompte (III bis).
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
description: Taux de l'acompte de la contribution différentielle sur les hauts revenus
2+
metadata:
3+
unit: /1
4+
reference:
5+
2026-01-01:
6+
title: LF 2026 - Art. 10 - III bis A
7+
values:
8+
2026-01-01:
9+
value: 0.95
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
description: Taux de pénalité sur l'acompte de la contribution différentielle sur les hauts revenus
2+
metadata:
3+
unit: /1
4+
reference:
5+
2026-01-01:
6+
title: LF 2026 - Art. 10 - III bis C
7+
values:
8+
2026-01-01:
9+
value: 0.20

0 commit comments

Comments
 (0)