Comparateur de prêts
Emprunter 25 000 à 5,5 % sur 36 mois coûte 2 176,4 d'intérêts ; à 7,9 % sur 48 mois, cela coûte 4 239,2, même si la mensualité est plus basse de 145,75. Comparez deux offres sur les intérêts totaux, pas sur le taux affiché. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Capital A
- 25 000
- Taux annuel A
- 5,5
- Durée en mois A
- 36
- Capital B
- 25 000
- Taux annuel B
- 7,9
- Durée en mois B
- 48
- Mensualité A
- 754,9
- Remboursement total A
- 27 176,4
- Total des intérêts A
- 2 176,4
- Mensualité B
- 609,15
Deux offres de prêt ne se classent pas en regardant le seul taux annuel affiché. Un pourcentage plus bas sur une durée plus longue peut coûter plus d'intérêts qu'un pourcentage un peu plus élevé remboursé plus tôt, et une mensualité plus faible peut masquer un coût total du crédit plus élevé. Ce comparateur de prêts accepte un principal, un taux d'intérêt nominal annuel en pourcentage et une durée comme nombre entier de mois pour chacun de deux prêts, applique aux deux la formule standard d'échéance sur capital restant dû et renvoie la mensualité et les intérêts totaux de chacun, ainsi que lequel coûte moins cher en intérêts totaux.
Ce que signifie comparer deux prêts et comment se calculent la mensualité et les intérêts totaux
Une comparaison de prêts part de deux billets amortissables indépendants, pas d'un pourcentage d'affiche. Le nombre de paiements n est la durée en mois entiers. Cette identité est l'échéance sur capital restant dû que les prêteurs publient : chaque échéance couvre d'abord les intérêts du capital restant, puis réduit le solde, si bien que la part d'intérêts baisse alors que le cash de la mensualité ne change pas.
Les champs monétaires sont arrondis à deux décimales pour coller à la devise. Le prêt le moins cher est celui aux intérêts totaux les plus bas, vrai surcoût du crédit ; si les deux totaux arrondis coïncident, le résultat est une égalité. Une mensualité plus faible ne l'emporte pas à elle seule : allonger le billet peut couper l'échéance tout en haussant les intérêts versés sur la vie du prêt.
Les frais de dossier, points d'escompte et assurances ne sont pas inventés : ajoutez-les à principal s'ils sont financés, sinon laissez-les hors de la comparaison.
Où un comparateur de prêts apporte de la valeur
Les feuilles de solvabilité connaissent déjà deux montants financés ; envoyer les deux principaux, taux et durées remplit une carte avec mensualité, intérêts totaux et quel prêt coûte moins, afin qu'un conseiller voie si un billet plus long à taux plus bas coûte vraiment plus d'intérêts qu'un plus court. Les enseignants qui opposent le crédit amortissable aux intérêts seuls peuvent semer des exemples de cours qui échouent bruyamment lorsqu'une des durées n'est pas un entier positif, au lieu de traiter en silence un mois fractionnaire comme un prêt valide.
Une validation en échec, y compris une durée qui n'est pas un entier positif, ne consomme pas de solde. Conservez les deux principaux strictement positifs et les deux durées comme nombres entiers de mois, figez les champs monétaires arrondis dans les tests, et vous obtiendrez des comparaisons reproductibles pour widgets, modules LMS et workers en bordure sans pile d'octroi à vous.
Cas d’usage
Mettre en regard deux offres de prêt personnel
Transformez deux principaux, taux annuels et durées en mois en mensualités, intérêts totaux et lequel des prêts coûte moins cher avant de signer.
Pages de prêteurs et places de marché
Laissez les visiteurs saisir deux produits annoncés et voir la mensualité, les intérêts totaux et le prêt le moins cher à côté de chaque fiche.
Questions fréquentes
Comment le comparateur de prêts décide-t-il lequel coûte moins cher ?
Une mensualité plus faible ne l'emporte pas à elle seule.
Que se passe-t-il si une durée n'est pas un entier positif ?
Fractions, zéro, booléens et valeurs non numériques sont rejetés et non facturés.
Les deux prêts peuvent-ils avoir des principaux ou des durées différents ?
Oui. Chaque prêt est amorti indépendamment. Montants et durées distincts sont valides ; cheaper suit toujours les intérêts totaux, donc un principal plus petit ou une durée plus courte peut l'emporter même à un taux plus élevé.
Un taux 0 % sur l'un des prêts ou les deux fonctionne-t-il ?
Les intérêts totaux de ce côté sont alors nuls hormis l'arrondi.
Pourquoi le prêt à la mensualité la plus basse peut-il coûter plus cher ?
Parce qu'une durée plus longue étale la dette sur davantage d'échéances, chacune plus petite, pendant que les intérêts continuent de courir. Dans l'exemple, le prêt sur 48 mois économise 145,75 par mois mais coûte 2 062,8 d'intérêts en plus.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/fin/loan-comparison \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"principal_a":25000,"annual_rate_a":5.5,"term_months_a":36,"principal_b":25000,"annual_rate_b":7.9,"term_months_b":48}'const res = await fetch("https://api.kit.forhosting.com/fin/loan-comparison", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"principal_a": 25000,
"annual_rate_a": 5.5,
"term_months_a": 36,
"principal_b": 25000,
"annual_rate_b": 7.9,
"term_months_b": 48
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/fin/loan-comparison",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"principal_a": 25000,
"annual_rate_a": 5.5,
"term_months_a": 36,
"principal_b": 25000,
"annual_rate_b": 7.9,
"term_months_b": 48
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/fin/loan-comparison", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"principal_a":25000,"annual_rate_a":5.5,"term_months_a":36,"principal_b":25000,"annual_rate_b":7.9,"term_months_b":48}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"principal_a":25000,"annual_rate_a":5.5,"term_months_a":36,"principal_b":25000,"annual_rate_b":7.9,"term_months_b":48}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/fin/loan-comparison", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"principal_a": 25000,
"annual_rate_a": 5.5,
"term_months_a": 36,
"principal_b": 25000,
"annual_rate_b": 7.9,
"term_months_b": 48
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "fin.loan_comparison",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Limites
max_term_months | 600 |
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
Une durée qui n'est pas un entier positif échoue avec invalid_input au lieu d'inventer un échéancier.
Ce que signifie comparer deux prêts et comment se calculent la mensualité et les intérêts totaux
Pour chaque prêt le taux mensuel r est le pourcentage nominal annuel divisé par mille deux cents : r égale annual_rate divisé par douze et par cent. Lorsque r est supérieur à zéro, la forme fermée est monthly_payment égale P fois r fois (1 plus r) à la puissance n, divisé par (1 plus r) à la puissance n moins un. Lorsque le taux annuel est zéro le dénominateur serait zéro, aussi le calculateur bascule vers le cas spécial honnête monthly_payment égale P divisé par n. Le remboursement total est monthly_payment multipliée par n, et les intérêts totaux sont ce total moins le principal.
Contrat d'entrée, règle de la durée entière positive et forme de la réponse
Zéro, une fraction telle que trente-six virgule cinq, un booléen ou une chaîne non numérique ne produisent jamais d'échéancier fictif, car une durée qui n'est pas un nombre entier de mois n'est pas une entrée de comparaison valide. Envoyez par POST un corps JSON avec six champs obligatoires. Pour le prêt A : principal_a, le montant financé comme nombre fini strictement supérieur à zéro (alias amount_a et loan_amount_a) ; annual_rate_a, l'intérêt nominal annuel en pourcentage — 5.5 pour cinq et demi pour cent l'an —, fini et au moins zéro (alias rate_a et interest_rate_a) ; et term_months_a, la durée comme entier positif de mois de un à six cents (alias term_a et months_a). Pour le prêt B les trois champs analogues sont principal_b, annual_rate_b et term_months_b, avec les alias correspondants. Chaque champ numérique peut arriver comme nombre JSON ou comme chaîne numérique. Champs manquants, chaînes vides, valeurs non finies, un principal non positif et un taux annuel négatif échouent avec invalid_input en nommant le champ et ne sont pas facturés. La règle distinctive du produit est la durée : term_months_a et term_months_b doivent chacun être un entier positif. En cas de succès le corps répète les deux principaux, taux et durées, et ajoute monthly_payment, total_repayment et total_interest de chaque côté, plus cheaper (loan_a, loan_b ou tie), interest_difference, monthly_difference et une chaîne de formule qui reformule l'identité d'amortissement. Exemple : principal vingt-cinq mille des deux côtés, annual_rate_a 5.5 avec term_months_a 36 contre annual_rate_b 7.9 avec term_months_b 48 produit deux mensualités arrondies et un indicateur cheaper du côté aux intérêts totaux les plus bas.
Où un comparateur de prêts apporte de la valeur
Les outils de devis et les CRM d'octroi peuvent appeler le même module pur depuis le navigateur pour des aperçus gratuits et depuis l'API lors de l'enregistrement d'un scénario, garantissant que l'indicateur du moins cher vu par un visiteur correspond à celui stocké après sauvegarde d'une paire d'offres. Les équipes de contenu peuvent illustrer un financement vendeur à zéro pour cent d'un côté avec annual_rate zéro, où monthly_payment se réduit à principal sur term_months sans division par zéro. Parce que l'implémentation est parse pure de niveau A, chaque appel réussi coûte le prix de base publié $0.002 sans jetons de modèle ni réseau sortant.
Cas d'intégration
Flux de devis et CRM
Enregistrez deux billets dans un outil de devis dont l'indicateur du moins cher via l'API coïncide octet pour octet avec l'aperçu gratuit du navigateur.
Questions techniques
Combien coûte le comparateur de prêts ?
L'outil du navigateur est gratuit. Les requêtes API utilisent le solde KIT prépayé à $0.002 par appel réussi ; une entrée invalide, y compris une durée qui n'est pas un entier positif, n'est pas facturée.