15
16:- module(fr_bareme_km,
17 [ bareme_km/5, 18 classe_puissance/3, 19 frais_km/5, 20 frais_km/6, 21 annee_revenus/2, 22 source_bareme/2 23 ]).
48classe_puissance(automobile, CV, Classe) :-
49 integer(CV), CV >= 1,
50 ( CV =< 3 -> Classe = cv3_et_moins
51 ; CV =:= 4 -> Classe = cv4
52 ; CV =:= 5 -> Classe = cv5
53 ; CV =:= 6 -> Classe = cv6
54 ; Classe = cv7_et_plus
55 ).
56classe_puissance(motocyclette, CV, Classe) :-
57 integer(CV), CV >= 1,
58 ( CV =< 2 -> Classe = cv1_2
59 ; CV =< 5 -> Classe = cv3_4_5
60 ; Classe = cv_plus_de_5
61 ).
62classe_puissance(cyclomoteur, _, toutes).
69frais_km(Annee, Vehicule, CV, Km, Montant) :-
70 frais_km(Annee, Vehicule, CV, Km, [], Montant).
77frais_km(Annee, Vehicule, CV, Km, Options, Montant) :-
78 number(Km), Km >= 0,
79 classe_puissance(Vehicule, CV, Classe),
80 bareme_km(Annee, Vehicule, Classe, Tranche, formule(Coef, Constante)),
81 dans_tranche(Km, Tranche),
82 !,
83 Brut is Km * Coef + Constante,
84 ( memberchk(electrique(true), Options)
85 -> Total is Brut * 1.2
86 ; Total = Brut
87 ),
88 Montant is round(Total * 100) / 100.
89
90dans_tranche(Km, tranche(0, Max)) :-
91 !,
92 Km =< Max.
93dans_tranche(Km, tranche(Min, Max)) :-
94 Km > Min,
95 ( Max == inf -> true ; Km =< Max ).
101annee_revenus(Decl, Rev) :-
102 source_bareme(Decl, _),
103 Rev is Decl - 1.
109source_bareme(2022, 'BOFIP BOI-BAREME-000001-20230720, II-B and III (revenus 2021)').
110source_bareme(2023, 'BOFIP BOI-BAREME-000001-20230720, II-A and III (revenus 2022)').
111source_bareme(2024, 'DGFiP, brochure pratique IR 2024, traitements et salaires').
112source_bareme(2025, 'DGFiP, brochure pratique IR 2025, traitements et salaires').
113source_bareme(2026, 'service-public.gouv.fr actualite A14686 (09/04/2026) and DGFiP brochure pratique IR 2026').
119bareme_km(2022, automobile, cv3_et_moins, tranche(0, 5000), formule(0.502, 0)).
120bareme_km(2022, automobile, cv3_et_moins, tranche(5000, 20000), formule(0.300, 1007)).
121bareme_km(2022, automobile, cv3_et_moins, tranche(20000, inf), formule(0.350, 0)).
122bareme_km(2022, automobile, cv4, tranche(0, 5000), formule(0.575, 0)).
123bareme_km(2022, automobile, cv4, tranche(5000, 20000), formule(0.323, 1262)).
124bareme_km(2022, automobile, cv4, tranche(20000, inf), formule(0.387, 0)).
125bareme_km(2022, automobile, cv5, tranche(0, 5000), formule(0.603, 0)).
126bareme_km(2022, automobile, cv5, tranche(5000, 20000), formule(0.339, 1320)).
127bareme_km(2022, automobile, cv5, tranche(20000, inf), formule(0.405, 0)).
128bareme_km(2022, automobile, cv6, tranche(0, 5000), formule(0.631, 0)).
129bareme_km(2022, automobile, cv6, tranche(5000, 20000), formule(0.355, 1382)).
130bareme_km(2022, automobile, cv6, tranche(20000, inf), formule(0.425, 0)).
131bareme_km(2022, automobile, cv7_et_plus, tranche(0, 5000), formule(0.661, 0)).
132bareme_km(2022, automobile, cv7_et_plus, tranche(5000, 20000), formule(0.374, 1435)).
133bareme_km(2022, automobile, cv7_et_plus, tranche(20000, inf), formule(0.446, 0)).
134
135bareme_km(2022, motocyclette, cv1_2, tranche(0, 3000), formule(0.375, 0)).
136bareme_km(2022, motocyclette, cv1_2, tranche(3000, 6000), formule(0.094, 845)).
137bareme_km(2022, motocyclette, cv1_2, tranche(6000, inf), formule(0.234, 0)).
138bareme_km(2022, motocyclette, cv3_4_5, tranche(0, 3000), formule(0.444, 0)).
139bareme_km(2022, motocyclette, cv3_4_5, tranche(3000, 6000), formule(0.078, 1099)).
140bareme_km(2022, motocyclette, cv3_4_5, tranche(6000, inf), formule(0.261, 0)).
141bareme_km(2022, motocyclette, cv_plus_de_5, tranche(0, 3000), formule(0.575, 0)).
142bareme_km(2022, motocyclette, cv_plus_de_5, tranche(3000, 6000), formule(0.075, 1502)).
143bareme_km(2022, motocyclette, cv_plus_de_5, tranche(6000, inf), formule(0.325, 0)).
144
145bareme_km(2022, cyclomoteur, toutes, tranche(0, 3000), formule(0.299, 0)).
146bareme_km(2022, cyclomoteur, toutes, tranche(3000, 6000), formule(0.070, 458)).
147bareme_km(2022, cyclomoteur, toutes, tranche(6000, inf), formule(0.162, 0)).
148
149bareme_km(2023, automobile, cv3_et_moins, tranche(0, 5000), formule(0.529, 0)).
150bareme_km(2023, automobile, cv3_et_moins, tranche(5000, 20000), formule(0.316, 1065)).
151bareme_km(2023, automobile, cv3_et_moins, tranche(20000, inf), formule(0.370, 0)).
152bareme_km(2023, automobile, cv4, tranche(0, 5000), formule(0.606, 0)).
153bareme_km(2023, automobile, cv4, tranche(5000, 20000), formule(0.340, 1330)).
154bareme_km(2023, automobile, cv4, tranche(20000, inf), formule(0.407, 0)).
155bareme_km(2023, automobile, cv5, tranche(0, 5000), formule(0.636, 0)).
156bareme_km(2023, automobile, cv5, tranche(5000, 20000), formule(0.357, 1395)).
157bareme_km(2023, automobile, cv5, tranche(20000, inf), formule(0.427, 0)).
158bareme_km(2023, automobile, cv6, tranche(0, 5000), formule(0.665, 0)).
159bareme_km(2023, automobile, cv6, tranche(5000, 20000), formule(0.374, 1457)).
160bareme_km(2023, automobile, cv6, tranche(20000, inf), formule(0.447, 0)).
161bareme_km(2023, automobile, cv7_et_plus, tranche(0, 5000), formule(0.697, 0)).
162bareme_km(2023, automobile, cv7_et_plus, tranche(5000, 20000), formule(0.394, 1515)).
163bareme_km(2023, automobile, cv7_et_plus, tranche(20000, inf), formule(0.470, 0)).
164
165bareme_km(2023, motocyclette, cv1_2, tranche(0, 3000), formule(0.395, 0)).
166bareme_km(2023, motocyclette, cv1_2, tranche(3000, 6000), formule(0.099, 891)).
167bareme_km(2023, motocyclette, cv1_2, tranche(6000, inf), formule(0.248, 0)).
168bareme_km(2023, motocyclette, cv3_4_5, tranche(0, 3000), formule(0.468, 0)).
169bareme_km(2023, motocyclette, cv3_4_5, tranche(3000, 6000), formule(0.082, 1158)).
170bareme_km(2023, motocyclette, cv3_4_5, tranche(6000, inf), formule(0.275, 0)).
171bareme_km(2023, motocyclette, cv_plus_de_5, tranche(0, 3000), formule(0.606, 0)).
172bareme_km(2023, motocyclette, cv_plus_de_5, tranche(3000, 6000), formule(0.079, 1583)).
173bareme_km(2023, motocyclette, cv_plus_de_5, tranche(6000, inf), formule(0.343, 0)).
174
175bareme_km(2023, cyclomoteur, toutes, tranche(0, 3000), formule(0.315, 0)).
176bareme_km(2023, cyclomoteur, toutes, tranche(3000, 6000), formule(0.079, 711)).
177bareme_km(2023, cyclomoteur, toutes, tranche(6000, inf), formule(0.198, 0)).
178
179bareme_km(2024, automobile, cv3_et_moins, tranche(0, 5000), formule(0.529, 0)).
180bareme_km(2024, automobile, cv3_et_moins, tranche(5000, 20000), formule(0.316, 1065)).
181bareme_km(2024, automobile, cv3_et_moins, tranche(20000, inf), formule(0.370, 0)).
182bareme_km(2024, automobile, cv4, tranche(0, 5000), formule(0.606, 0)).
183bareme_km(2024, automobile, cv4, tranche(5000, 20000), formule(0.340, 1330)).
184bareme_km(2024, automobile, cv4, tranche(20000, inf), formule(0.407, 0)).
185bareme_km(2024, automobile, cv5, tranche(0, 5000), formule(0.636, 0)).
186bareme_km(2024, automobile, cv5, tranche(5000, 20000), formule(0.357, 1395)).
187bareme_km(2024, automobile, cv5, tranche(20000, inf), formule(0.427, 0)).
188bareme_km(2024, automobile, cv6, tranche(0, 5000), formule(0.665, 0)).
189bareme_km(2024, automobile, cv6, tranche(5000, 20000), formule(0.374, 1457)).
190bareme_km(2024, automobile, cv6, tranche(20000, inf), formule(0.447, 0)).
191bareme_km(2024, automobile, cv7_et_plus, tranche(0, 5000), formule(0.697, 0)).
192bareme_km(2024, automobile, cv7_et_plus, tranche(5000, 20000), formule(0.394, 1515)).
193bareme_km(2024, automobile, cv7_et_plus, tranche(20000, inf), formule(0.470, 0)).
194
195bareme_km(2024, motocyclette, cv1_2, tranche(0, 3000), formule(0.395, 0)).
196bareme_km(2024, motocyclette, cv1_2, tranche(3000, 6000), formule(0.099, 891)).
197bareme_km(2024, motocyclette, cv1_2, tranche(6000, inf), formule(0.248, 0)).
198bareme_km(2024, motocyclette, cv3_4_5, tranche(0, 3000), formule(0.468, 0)).
199bareme_km(2024, motocyclette, cv3_4_5, tranche(3000, 6000), formule(0.082, 1158)).
200bareme_km(2024, motocyclette, cv3_4_5, tranche(6000, inf), formule(0.275, 0)).
201bareme_km(2024, motocyclette, cv_plus_de_5, tranche(0, 3000), formule(0.606, 0)).
202bareme_km(2024, motocyclette, cv_plus_de_5, tranche(3000, 6000), formule(0.079, 1583)).
203bareme_km(2024, motocyclette, cv_plus_de_5, tranche(6000, inf), formule(0.343, 0)).
204
205bareme_km(2024, cyclomoteur, toutes, tranche(0, 3000), formule(0.315, 0)).
206bareme_km(2024, cyclomoteur, toutes, tranche(3000, 6000), formule(0.079, 711)).
207bareme_km(2024, cyclomoteur, toutes, tranche(6000, inf), formule(0.198, 0)).
208
209bareme_km(2025, automobile, cv3_et_moins, tranche(0, 5000), formule(0.529, 0)).
210bareme_km(2025, automobile, cv3_et_moins, tranche(5000, 20000), formule(0.316, 1065)).
211bareme_km(2025, automobile, cv3_et_moins, tranche(20000, inf), formule(0.370, 0)).
212bareme_km(2025, automobile, cv4, tranche(0, 5000), formule(0.606, 0)).
213bareme_km(2025, automobile, cv4, tranche(5000, 20000), formule(0.340, 1330)).
214bareme_km(2025, automobile, cv4, tranche(20000, inf), formule(0.407, 0)).
215bareme_km(2025, automobile, cv5, tranche(0, 5000), formule(0.636, 0)).
216bareme_km(2025, automobile, cv5, tranche(5000, 20000), formule(0.357, 1395)).
217bareme_km(2025, automobile, cv5, tranche(20000, inf), formule(0.427, 0)).
218bareme_km(2025, automobile, cv6, tranche(0, 5000), formule(0.665, 0)).
219bareme_km(2025, automobile, cv6, tranche(5000, 20000), formule(0.374, 1457)).
220bareme_km(2025, automobile, cv6, tranche(20000, inf), formule(0.447, 0)).
221bareme_km(2025, automobile, cv7_et_plus, tranche(0, 5000), formule(0.697, 0)).
222bareme_km(2025, automobile, cv7_et_plus, tranche(5000, 20000), formule(0.394, 1515)).
223bareme_km(2025, automobile, cv7_et_plus, tranche(20000, inf), formule(0.470, 0)).
224
225bareme_km(2025, motocyclette, cv1_2, tranche(0, 3000), formule(0.395, 0)).
226bareme_km(2025, motocyclette, cv1_2, tranche(3000, 6000), formule(0.099, 891)).
227bareme_km(2025, motocyclette, cv1_2, tranche(6000, inf), formule(0.248, 0)).
228bareme_km(2025, motocyclette, cv3_4_5, tranche(0, 3000), formule(0.468, 0)).
229bareme_km(2025, motocyclette, cv3_4_5, tranche(3000, 6000), formule(0.082, 1158)).
230bareme_km(2025, motocyclette, cv3_4_5, tranche(6000, inf), formule(0.275, 0)).
231bareme_km(2025, motocyclette, cv_plus_de_5, tranche(0, 3000), formule(0.606, 0)).
232bareme_km(2025, motocyclette, cv_plus_de_5, tranche(3000, 6000), formule(0.079, 1583)).
233bareme_km(2025, motocyclette, cv_plus_de_5, tranche(6000, inf), formule(0.343, 0)).
234
235bareme_km(2025, cyclomoteur, toutes, tranche(0, 3000), formule(0.315, 0)).
236bareme_km(2025, cyclomoteur, toutes, tranche(3000, 6000), formule(0.079, 711)).
237bareme_km(2025, cyclomoteur, toutes, tranche(6000, inf), formule(0.198, 0)).
238
239bareme_km(2026, automobile, cv3_et_moins, tranche(0, 5000), formule(0.529, 0)).
240bareme_km(2026, automobile, cv3_et_moins, tranche(5000, 20000), formule(0.316, 1065)).
241bareme_km(2026, automobile, cv3_et_moins, tranche(20000, inf), formule(0.370, 0)).
242bareme_km(2026, automobile, cv4, tranche(0, 5000), formule(0.606, 0)).
243bareme_km(2026, automobile, cv4, tranche(5000, 20000), formule(0.340, 1330)).
244bareme_km(2026, automobile, cv4, tranche(20000, inf), formule(0.407, 0)).
245bareme_km(2026, automobile, cv5, tranche(0, 5000), formule(0.636, 0)).
246bareme_km(2026, automobile, cv5, tranche(5000, 20000), formule(0.357, 1395)).
247bareme_km(2026, automobile, cv5, tranche(20000, inf), formule(0.427, 0)).
248bareme_km(2026, automobile, cv6, tranche(0, 5000), formule(0.665, 0)).
249bareme_km(2026, automobile, cv6, tranche(5000, 20000), formule(0.374, 1457)).
250bareme_km(2026, automobile, cv6, tranche(20000, inf), formule(0.447, 0)).
251bareme_km(2026, automobile, cv7_et_plus, tranche(0, 5000), formule(0.697, 0)).
252bareme_km(2026, automobile, cv7_et_plus, tranche(5000, 20000), formule(0.394, 1515)).
253bareme_km(2026, automobile, cv7_et_plus, tranche(20000, inf), formule(0.470, 0)).
254
255bareme_km(2026, motocyclette, cv1_2, tranche(0, 3000), formule(0.395, 0)).
256bareme_km(2026, motocyclette, cv1_2, tranche(3000, 6000), formule(0.099, 891)).
257bareme_km(2026, motocyclette, cv1_2, tranche(6000, inf), formule(0.248, 0)).
258bareme_km(2026, motocyclette, cv3_4_5, tranche(0, 3000), formule(0.468, 0)).
259bareme_km(2026, motocyclette, cv3_4_5, tranche(3000, 6000), formule(0.082, 1158)).
260bareme_km(2026, motocyclette, cv3_4_5, tranche(6000, inf), formule(0.275, 0)).
261bareme_km(2026, motocyclette, cv_plus_de_5, tranche(0, 3000), formule(0.606, 0)).
262bareme_km(2026, motocyclette, cv_plus_de_5, tranche(3000, 6000), formule(0.079, 1583)).
263bareme_km(2026, motocyclette, cv_plus_de_5, tranche(6000, inf), formule(0.343, 0)).
264
265bareme_km(2026, cyclomoteur, toutes, tranche(0, 3000), formule(0.315, 0)).
266bareme_km(2026, cyclomoteur, toutes, tranche(3000, 6000), formule(0.079, 711)).
267bareme_km(2026, cyclomoteur, toutes, tranche(6000, inf), formule(0.198, 0))
French tax mileage allowance scale (bareme kilometrique)
Schema of the facts:
tranche(Min, Max): the band applies when Min < Km =< Max (first band: 0 =< Km =< Max). Max = inf for the last band.formule(Coef, Constante): Montant = Km * Coef + Constante (euros).Electric vehicles: +20 % on the amount (CGI, annexe IV, art. 6 B, II), option
electrique(true)of frais_km/6.