France offers one of Europe's most comprehensive renovation subsidy systems. Four main schemes work together: MaPrimeRenov' (income-based grants), CEE energy savings certificates (flat-rate bonuses), Eco-PTZ (zero-interest loans up to 50,000 EUR), and reduced VAT at 5.5% instead of 20%. These can be combined, meaning a modest-income household renovating a poorly-insulated home could cover 60-80% of costs through public support.
Eligibility depends on household income (four categories: very modest, modest, intermediate, high), property age (must be the primary residence, built 2+ years ago), and the type of works planned. Climate zone (H1/H2/H3) affects income thresholds. Owner-occupiers, landlords, and co-owner associations can apply.
Update frequency: Thresholds updated every January. CEE rates revised quarterly.
Provider: ANAH (Agence Nationale de l'Habitat)
MaPrimeRenov' is France's flagship renovation subsidy, replacing the old CITE tax credit in 2020. It provides direct grants based on household income and the type of renovation wor...
Amounts: From 2,000 EUR (high income, minor work) to 11,000 EUR (very modest income, heat pump installation). Maximum ceiling of ...
Provider: Energy suppliers (EDF, Engie, TotalEnergies)
The CEE (Certificats d'Economies d'Energie) system requires energy suppliers to fund renovation works. This creates a market where homeowners receive bonuses — often 2,000-5,000 EU...
Amounts: Typically 10-20 EUR/m2 for insulation works. A 100m2 roof insulation project can receive 1,000-2,000 EUR in CEE bonuses....
Provider: Partner banks (via Societe Generale de Financement)
The Eco-PTZ (Eco-Pret a Taux Zero) is a government-subsidized loan where the state pays the interest. Homeowners can borrow up to 50,000 EUR at 0% interest over 20 years for energy...
Amounts: Up to 15,000 EUR for a single type of work, 25,000 EUR for two types, and 50,000 EUR for a comprehensive renovation (3+ ...
Use the sandbox API to test eligibility for France:
Calculate subsidy eligibility for any EU renovation project with a single API call.
Read the Docs