Chargement...
Chargement...
Ajoutez le widget à votre site ou utilisez les calculs immobiliers de l’API REST depuis votre application.
10 pays · Widget et API · Par Tevaxia
Ajoutez les fichiers JavaScript et CSS fournis à votre page. Le widget inclut son moteur d’affichage ; aucun framework à installer sur votre site.
<link rel="stylesheet"
href="https://www.tevaxia.lu/propcalc/propcalc.min.css">
<script src="https://www.tevaxia.lu/propcalc/propcalc.min.js"></script>
<div data-propcalc data-country="lu" data-lang="fr"></div>data-countryCodes du widget : lu, fr, de, uk, be, es, pt, it, nl, us. Utilisez uk pour le Royaume-Uni.data-langLangues du widget : fr, en, de, es, pt, it, nl. Exemple en français sur cette page luxembourgeoise.data-moduleModules : fees, borrowing, rental, cashflow, comparator, prequalify, amortization, buyvsrent, scenarios, stampdutydata-themeThème visuel : light (défaut) ou darkdata-accent-colorCouleur d'accentuation CSS valide (#1a365d, rgb(...), hsl(...))Crédit Tevaxia affiché
Base URL : https://www.tevaxia.lu/api/v1/propcalc
JSON et CORS. Aucun quota mensuel garanti n’est publié par ce service. Les taux d’entrée sont des ratios décimaux (0.035 = 3,5 %). Les champs inconnus et les types incorrects sont refusés.
| Méthode | Endpoint |
|---|---|
| POST | /fees |
| POST | /mortgage |
| POST | /yield |
| POST | /cashflow |
| GET | /countries |
France : price est le prix TTC lorsque la vente est soumise à TVA. Avec isNew=true, renseignez frenchVatOnFullPrice (vente neuve soumise à TVA sur le prix total, hors TVA sur marge). Si true, frenchVatRate est obligatoire : 0.055, 0.1 ou 0.2. Si false, les droits ordinaires sont simulés. loanGuaranteeCost est un coût de garantie issu du devis, accepté uniquement avec un prêt ; absent, il reste non chiffré. acquisitionCoverage indique les frais exclus : totalFees est un sous-total, pas un décompte notarial complet.
Fiscalité locative française (/yield) : taxYear vaut 2025 ou 2026 (2026 par défaut). Le défaut est reel_foncier, location nue au réel simplifié. Les régimes micro exigent frenchMicroEligible=true pour confirmer l’éligibilité et les recettes agrégées du foyer/de l’activité ; le micro-BIC dépend aussi des années antérieures. Le meublé exige frenchNonProfessional=true. micro_bic désigne la longue durée, micro_bic_tourism le tourisme classé et micro_bic_tourism_unclassified le non-classé. annualTaxReceipts permet d’indiquer les recettes fiscales agrégées, charges taxables comprises ; sinon, on retient le loyer simulé après vacance. frenchSocialRegime=solidarity_only suppose une affiliation ouvrant droit au seul prélèvement de solidarité ; standard est le défaut. Le calcul au taux marginal n’est pas une liquidation de l’impôt du foyer. Cotisations d’activité, déficits reportables et régimes spéciaux sont exclus.
Italie (/yield) : seule la cedolare_secca à 21 % pour un bail résidentiel ordinaire à loyer libre est calculée. italianCedolareEligible=true confirme un bailleur personne physique éligible hors activité professionnelle et une option valide pour ce régime. italianAnnualContractRent est obligatoire : loyer contractuel brut correspondant à la quote-part et à la période louée, sans déduire les charges. La vacance simulée réduit les recettes économiques mais ne modifie pas automatiquement cette base fiscale. Un résultat locatif négatif ne supprime pas cet impôt. IRPEF, courte durée, contrats à taux réduit, impayés et situations cadastrales particulières nécessitent une évaluation distincte.
Portugal (/yield) : portugueseCategoryFConfirmed=true confirme une location ordinaire de catégorie F et des dépenses payées fiscalement admissibles. portugueseRentalUse vaut housing ou other. portugueseAnnualTaxReceipts et portugueseDeductibleExpenses sont obligatoires, même à zéro : les dépenses économiques simulées ne constituent pas automatiquement des déductions fiscales. Intérêts, amortissement, mobilier, équipements, décoration et AIMI sont exclus des déductions. taxYear vaut 2025 ou 2026. Taux autonome : habitation 25 %, autre location 28 %, pour les résidents comme les non-résidents. Pour housing en 2026, portugueseModerateRentEligible doit être explicitement true ou false : true confirme toutes les conditions et les plafonds mensuels de l’article 45-C EBF / DL 97/2026 art. 2, pour appliquer 10 %. Ne pas déduire cette éligibilité du loyer annuel après vacance. Les taux plus favorables de longue durée, exonérations et régimes spéciaux nécessitent un autre calcul. progressive_resident utilise le taux marginal saisi, sans comparaison automatique ni liquidation de l’impôt du foyer.
Royaume-Uni (/fees, country=uk) : region accepte ENG, NIR, SCT ou WLS ; sans région, ENG est une hypothèse explicite. ukAdditionalProperty confirme l’application des taux majorés, indépendamment de isPrimary ; ukNonResident qualifie la surcharge SDLT de non-résident en Angleterre/Irlande du Nord. Les deux valent false par défaut. isFirstTime et isPrimary doivent être vrais pour l’avantage primo-accédant, avec tous les acquéreurs éligibles ; aucun avantage spécifique au pays de Galles. Achat résidentiel simple par des particuliers uniquement, sans régimes transitoires, personnes morales, opérations liées ni loyers d’un nouveau bail. acquisitionCoverage précise le sous-total et les frais exclus. /cashflow suppose un achat supplémentaire en Angleterre, sans surcharge non-résident.
curl -X POST https://www.tevaxia.lu/api/v1/propcalc/fees \
-H "Content-Type: application/json" \
-d '{
"country": "lu",
"price": 700000,
"isNew": false
}'Cet exemple appelle l’API avec fetch, contrôle les erreurs et lit les données et hypothèses renvoyées. Les estimations dépendent du scénario ; aucun résultat chiffré n’est garanti.
const response = await fetch('https://www.tevaxia.lu/api/v1/propcalc/fees', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ country: 'lu', price: 700000, isNew: false }),
});
const result = await response.json();
if (!response.ok || !result.success) {
throw new Error(result.error || 'Calculation failed');
}
console.log(result.data);
console.log(result.assumptions);
console.log(result.acquisitionCoverage);Choisissez le widget pour une interface intégrée ou l’API REST pour vos propres écrans.