🔄 Credito al Consumo & Ristrutturazione Debito

Calcolatore Consolidamento Debiti

Accorpa prestiti personali, finanziamenti auto e carte revolving in un'unica rata mensile sostenibile: calcola l'alleggerimento immediato del cashflow mensile, il tasso TAEG e il costo complessivo degli interessi nel tempo.

📋 Finanziamenti in Corso da Consolidare FINO A 4 PRESTITI
Attivo
€
€
%
Attivo
€
€
%
Attivo
€
€
%
Disattivato
€
€
%
Debito Totale Oggi 24.000 €
Rata Mensile Attuale 700 € / mese
TAN Ponderato 9,73 %
⚙️ Nuove Condizioni Richieste
%
Tipico tra 6,5% e 8,5%
€
Costi fissi apertura pratica
€

Necessario per determinare il rapporto rata/reddito (sostenibilità DTI max 33-35%).

📊 Esito Rata Unica RISPARMIO CASHFLOW
Nuova Rata Unica Mensile
410 € /mese
Risparmio mensile immediato: +290 € / mese rispetto a prima
Nuovo Capitale Erogato 27.000 € +3.000 € extra
TAEG Stimato 7,76 % compreso di spese
Interessi Totali Nuovo Piano 7.440 € su 7 anni
Totale Rimborso Complessivo 34.890 € Capitale + Interessi + Spese
Sostenibilità Reddituale (Rata / Reddito): 19,5% (Ottimo)
0% Soglia max banche 33% 60%

Composizione del Debito Consolidato

⚖️
Allungando la durata dell'ammortamento si alleggerisce la rata mensile, ma il monte interessi complessivo può aumentare. Valuta sempre l'equilibrio tra cashflow immediato e costo complessivo.

Confronto Analitico: Debiti Frammentati vs Nuova Rata Unica

Parametro Situazione Precedente Nuovo Consolidamento Differenza / Beneficio
Numero Scadenze Mensili 3 finanziamenti attivi 1 unico addebito bancario Zero frammentazione contabile
Esborso Mensile Totale 700,00 € 410,25 € -289,75 € / mese
Tasso di Interesse Annuo (TAN) 9,73% (ponderato) 7,20% fisso -2,53% tasso medio
Debito Complessivo Finanziato 24.000,00 € 27.000,00 € +3.000 € (liquidità nuova)
Incidenza sul Reddito (DTI) 33,3% 19,5% -13,8% margine di sicurezza

Domande Frequenti sul Consolidamento Debiti

La nuova banca erogatrice richiede i conteggi di estinzione anticipata aggiornati ai rispettivi creditori. All'approvazione del finanziamento, provvede direttamente a bonificare l'importo residuo agli istituti terzi estinguendo i contratti in corso, ed accredita l'eventuale liquidità extra sul tuo conto corrente.
Dipende dalla tua priorità finanziaria: se le rate attuali soffocano il budget familiare mensile e rischi insoluti, allungare la durata consente di dimezzare la rata e riacquistare serenità. Tuttavia, allungando gli anni si maturano interessi per più tempo; l'ideale è consolidare a una rata sostenibile e successivamente effettuare rimborsi anticipati parziali quando si dispone di risparmi.
In base al D.Lgs. 141/2010 (recepimento Direttiva Europea Credito al Consumo), l'indennizzo per estinzione anticipata è pari a zero se il debito residuo è inferiore a 10.000 €; oltre tale soglia, non può superare l'1% dell'importo rimborsato (o lo 0,5% se la durata residua è inferiore a un anno).
Avvertenza di Trasparenza: Il calcolatore elabora una simulazione finanziaria teorica secondo il piano di ammortamento alla francese a rata costante. La concessione del finanziamento di consolidamento e le relative condizioni economiche (TAN, TAEG, commissioni di istruttoria e polizze accessorie) sono soggette alla discrezionale valutazione del merito creditizio da parte dell'istituto finanziatore. Prima della sottoscrizione richiedere sempre il documento informativo SECCI (Informazioni Europee di Base sul Credito ai Consumatori).
function setExtraLiquidity(val) { document.getElementById('extra_liquidity').value = val; updateExtraChips(val); const event = new Event('input', { bubbles: true }); document.getElementById('extra_liquidity').dispatchEvent(event); } function updateExtraChips(val) { const target = parseFloat(val) || 0; const chips = document.querySelectorAll('.quick-chips-row .chip-btn'); chips.forEach(c => { const raw = parseInt(c.textContent.replace(/\D/g, ''), 10); c.classList.toggle('active', raw === target || raw === Math.round(target / 1000)); }); } document.addEventListener('DOMContentLoaded', () => { // Elementi Input const loanInputs = [ { active: document.getElementById('loan1_active'), card: document.getElementById('loan1_card'), residuo: document.getElementById('loan1_residuo'), rata: document.getElementById('loan1_rata'), tan: document.getElementById('loan1_tan'), badge: document.getElementById('loan1_badge'), name: 'Debito 1: Prestito Auto', color: '#3B82F6' }, { active: document.getElementById('loan2_active'), card: document.getElementById('loan2_card'), residuo: document.getElementById('loan2_residuo'), rata: document.getElementById('loan2_rata'), tan: document.getElementById('loan2_tan'), badge: document.getElementById('loan2_badge'), name: 'Debito 2: Prestito Personale', color: '#6366F1' }, { active: document.getElementById('loan3_active'), card: document.getElementById('loan3_card'), residuo: document.getElementById('loan3_residuo'), rata: document.getElementById('loan3_rata'), tan: document.getElementById('loan3_tan'), badge: document.getElementById('loan3_badge'), name: 'Debito 3: Carta Revolving', color: '#F43F5E' }, { active: document.getElementById('loan4_active'), card: document.getElementById('loan4_card'), residuo: document.getElementById('loan4_residuo'), rata: document.getElementById('loan4_rata'), tan: document.getElementById('loan4_tan'), badge: document.getElementById('loan4_badge'), name: 'Debito 4: Altro Finanziamento', color: '#10B981' } ]; const extraLiquidityInput = document.getElementById('extra_liquidity'); const extraLiquidityDisplay = document.getElementById('extra_liquidity_display'); const newDurationInput = document.getElementById('new_duration'); const newDurationDisplay = document.getElementById('new_duration_display'); const newTanInput = document.getElementById('new_tan'); const istruttoriaInput = document.getElementById('istruttoria_cost'); const userIncomeInput = document.getElementById('user_income'); // Subtotali const subtotalDebito = document.getElementById('subtotal_debito'); const subtotalRate = document.getElementById('subtotal_rate'); const subtotalTan = document.getElementById('subtotal_tan'); // Output const resNewRata = document.getElementById('res_new_rata'); const resRisparmioMese = document.getElementById('res_risparmio_mese'); const resTotErogato = document.getElementById('res_tot_erogato'); const resExtraCash = document.getElementById('res_extra_cash'); const resTaeg = document.getElementById('res_taeg'); const resNewInteressi = document.getElementById('res_new_interessi'); const resTotRimborso = document.getElementById('res_tot_rimborso'); const dtiBadge = document.getElementById('dti_badge'); const dtiBar = document.getElementById('dti_bar'); const breakdownBars = document.getElementById('breakdown_bars'); const tradeoffBox = document.getElementById('tradeoff_box'); const tradeoffText = document.getElementById('tradeoff_text'); // Tabella const tabNumRatePrima = document.getElementById('tab_num_rate_prima'); const tabRataPrima = document.getElementById('tab_rata_prima'); const tabRataDopo = document.getElementById('tab_rata_dopo'); const tabDeltaRata = document.getElementById('tab_delta_rata'); const tabTanPrima = document.getElementById('tab_tan_prima'); const tabTanDopo = document.getElementById('tab_tan_dopo'); const tabDeltaTan = document.getElementById('tab_delta_tan'); const tabDebitoPrima = document.getElementById('tab_debito_prima'); const tabDebitoDopo = document.getElementById('tab_debito_dopo'); const tabDeltaDebito = document.getElementById('tab_delta_debito'); const tabDtiPrima = document.getElementById('tab_dti_prima'); const tabDtiDopo = document.getElementById('tab_dti_dopo'); const tabDeltaDti = document.getElementById('tab_delta_dti'); function fmtEur(v) { return Math.round(v).toLocaleString('it-IT') + ' €'; } function fmtEurDec(v) { return v.toLocaleString('it-IT', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) + ' €'; } function fmtPct(v) { return v.toLocaleString('it-IT', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) + ' %'; } // Formula rata ammortamento alla francese function calculateFrenchRate(principal, annualRatePct, months) { if (principal <= 0 || months <= 0) return 0; const monthlyRate = (annualRatePct / 100) / 12; if (monthlyRate === 0) return principal / months; return principal * (monthlyRate * Math.pow(1 + monthlyRate, months)) / (Math.pow(1 + monthlyRate, months) - 1); } function updateCalculation() { let totDebitoAttuale = 0; let totRateAttuali = 0; let totPonderatoTan = 0; let numAttivi = 0; const activeLoansList = []; loanInputs.forEach((loan) => { const isActive = loan.active.checked; if (loan.card) { if (isActive) { loan.card.classList.remove('disabled'); loan.badge.textContent = 'Attivo'; loan.badge.style.background = 'var(--contrast-forest-light)'; loan.badge.style.color = 'var(--contrast-forest)'; } else { loan.card.classList.add('disabled'); loan.badge.textContent = 'Disattivato'; loan.badge.style.background = '#E8E4DA'; loan.badge.style.color = 'var(--text-muted)'; } } if (isActive) { numAttivi++; const residuo = parseFloat(loan.residuo.value) || 0; const rata = parseFloat(loan.rata.value) || 0; const tan = parseFloat(loan.tan.value) || 0; totDebitoAttuale += residuo; totRateAttuali += rata; totPonderatoTan += (residuo * tan); activeLoansList.push({ name: loan.name, residuo: residuo, rata: rata, tan: tan, color: loan.color }); } }); const tanMedioPonderato = totDebitoAttuale > 0 ? (totPonderatoTan / totDebitoAttuale) : 0; subtotalDebito.textContent = fmtEur(totDebitoAttuale); subtotalRate.textContent = `${fmtEur(totRateAttuali)} / mese`; subtotalTan.textContent = fmtPct(tanMedioPonderato); // Nuovo finanziamento const extraLiquidity = parseFloat(extraLiquidityInput.value) || 0; extraLiquidityDisplay.textContent = extraLiquidity > 0 ? `+${fmtEur(extraLiquidity)}` : '0 €'; const durationYears = parseInt(newDurationInput.value, 10) || 1; const durationMonths = durationYears * 12; newDurationDisplay.textContent = `${durationYears} anni (${durationMonths} rate)`; const newTan = parseFloat(newTanInput.value) || 0; const istruttoria = parseFloat(istruttoriaInput.value) || 0; const reddito = parseFloat(userIncomeInput.value) || 1; // Importo finanziato totale const totFinanziato = totDebitoAttuale + extraLiquidity; // Calcolo nuova rata mensile (ammortamento alla francese) const nuovaRata = calculateFrenchRate(totFinanziato, newTan, durationMonths); const montanteRimborso = nuovaRata * durationMonths; const interessiNuovoPiano = Math.max(0, montanteRimborso - totFinanziato); const totCostoComplessivo = montanteRimborso + istruttoria; // Risparmio mensile cashflow const risparmioMese = totRateAttuali - nuovaRata; // Stima TAEG semplificato const taegStimato = newTan + (istruttoria / (totFinanziato || 1) / durationYears * 100); // Output UI resNewRata.innerHTML = `${fmtEur(Math.round(nuovaRata))} /mese`; if (risparmioMese >= 0) { resRisparmioMese.innerHTML = `+${fmtEur(Math.round(risparmioMese))} / mese rispetto a prima`; resRisparmioMese.style.color = '#A3E635'; } else { resRisparmioMese.innerHTML = `${fmtEur(Math.round(risparmioMese))} / mese (rata più alta)`; resRisparmioMese.style.color = '#FCA5A5'; } resTotErogato.textContent = fmtEur(totFinanziato); resExtraCash.textContent = extraLiquidity > 0 ? `+${fmtEur(extraLiquidity)} liquidità extra` : 'Solo estinzione debiti'; resTaeg.textContent = fmtPct(taegStimato); resNewInteressi.textContent = fmtEur(Math.round(interessiNuovoPiano)); resTotRimborso.textContent = fmtEur(Math.round(totCostoComplessivo)); // Rapporto DTI (Debt-to-Income) const dtiNuovo = reddito > 0 ? (nuovaRata / reddito) * 100 : 0; const dtiVecchio = reddito > 0 ? (totRateAttuali / reddito) * 100 : 0; let dtiStatus = 'Ottimo (entro 25%)'; let dtiColor = 'var(--contrast-forest)'; if (dtiNuovo > 40) { dtiStatus = 'Critico (> 40%)'; dtiColor = 'var(--primary-red)'; } else if (dtiNuovo > 33) { dtiStatus = 'Attenzione (> 33% soglia banche)'; dtiColor = '#D97706'; } else if (dtiNuovo > 25) { dtiStatus = 'Accettabile (25-33%)'; dtiColor = 'var(--contrast-forest)'; } dtiBadge.textContent = `${fmtPct(dtiNuovo)} (${dtiStatus})`; dtiBadge.style.color = dtiColor; dtiBar.style.width = Math.min(100, (dtiNuovo / 60) * 100) + '%'; dtiBar.style.backgroundColor = dtiColor; // Trade-off spiegazione if (risparmioMese > 0) { tradeoffBox.className = 'alert-box info'; tradeoffText.innerHTML = `Con questa soluzione liberi ${fmtEur(Math.round(risparmioMese))} ogni mese sul conto. In cambio, il nuovo finanziamento su ${durationYears} anni comporta ${fmtEur(Math.round(interessiNuovoPiano))} di interessi totali. Se in futuro avrai liquidità, potrai estinguere anticipatamente senza penali.`; } else { tradeoffBox.className = 'alert-box warning'; tradeoffText.innerHTML = `La nuova rata risulta superiore o simile alla somma attuale a fronte della breve durata o della liquidità aggiuntiva richiesta.`; } // Breakdown bars breakdownBars.innerHTML = ''; if (activeLoansList.length === 0) { breakdownBars.innerHTML = '
Nessun prestito selezionato
'; } else { activeLoansList.forEach(l => { const pct = totDebitoAttuale > 0 ? (l.residuo / totDebitoAttuale) * 100 : 0; const barHtml = `
${l.name} (${fmtEur(l.residuo)}) ${fmtPct(pct)}
`; breakdownBars.insertAdjacentHTML('beforeend', barHtml); }); } // Tabella tabNumRatePrima.textContent = `${numAttivi} scadenze / rate`; tabRataPrima.textContent = fmtEurDec(totRateAttuali); tabRataDopo.textContent = fmtEurDec(nuovaRata); tabDeltaRata.textContent = `${fmtEurDec(nuovaRata - totRateAttuali)} / mese`; tabDeltaRata.style.color = (nuovaRata <= totRateAttuali) ? 'var(--contrast-forest)' : 'var(--primary-red)'; tabTanPrima.textContent = `${fmtPct(tanMedioPonderato)} (medio)`; tabTanDopo.textContent = `${fmtPct(newTan)} fisso`; const deltaTan = newTan - tanMedioPonderato; tabDeltaTan.textContent = `${deltaTan > 0 ? '+' : ''}${fmtPct(deltaTan)} spread`; tabDebitoPrima.textContent = fmtEurDec(totDebitoAttuale); tabDebitoDopo.textContent = fmtEurDec(totFinanziato); tabDeltaDebito.textContent = extraLiquidity > 0 ? `+${fmtEurDec(extraLiquidity)} (liquidità)` : '0,00 €'; tabDtiPrima.textContent = fmtPct(dtiVecchio); tabDtiDopo.textContent = fmtPct(dtiNuovo); tabDeltaDti.textContent = `${(dtiNuovo - dtiVecchio) > 0 ? '+' : ''}${fmtPct(dtiNuovo - dtiVecchio)}`; } // Event listeners loanInputs.forEach(loan => { loan.active.addEventListener('change', updateCalculation); loan.residuo.addEventListener('input', updateCalculation); loan.rata.addEventListener('input', updateCalculation); loan.tan.addEventListener('input', updateCalculation); }); extraLiquidityInput.addEventListener('input', () => { updateExtraChips(extraLiquidityInput.value); updateCalculation(); }); newDurationInput.addEventListener('input', updateCalculation); newTanInput.addEventListener('input', updateCalculation); istruttoriaInput.addEventListener('input', updateCalculation); userIncomeInput.addEventListener('input', updateCalculation); // Calcolo iniziale updateCalculation(); });