Oblicz ratę kredytu w programie
„Mieszkanie na start”

Dzięki dopłatom, całkowity koszt kredytu w programie „Mieszkanie na start” będzie znacząco niższy. Jeżeli chcesz wiedzieć ile możesz zyskać kupując mieszkanie, przedstawiamy kalkulator do obliczania rat kredytu 0%.

i
Min. 90 tys. | Max. 600 tys.
i
Min. 15 lat | Max. 35 lat
i
Wpisz miesięczne zarobki brutto
i
Wpisz powierzchnię użytkową kupowanej nieruchomości
i
Wybierz z listy rozwijanej
i
Wybierz z listy rozwijanej

Kredyt bez dopłat

Cały okres spłaty

Oprocentowanie zmienne
Raty stałe
Pierwsza rata:
Oprocentowanie:
Kwota do spłaty:

Program "Na start"

Pierwsze 10 lat

Oprocentowanie stałe
Raty malejące
Pierwsza rata:
Oprocentowanie:

Oprocentowanie zmienne
Raty stałe
Rata:
Oprocentowanie:
Kwota do spłaty:
Oszczędności:

* zasady programu stanowią, że w przypadku wyliczania dopłaty należy przyjąć, że marża wynosi 10% średniego oprocentowania na rynku. Jeśli więc np. średnie oprocentowanie wynosi np. 8%, to marża 0,8%.

Kalkulator porównuje standardowy kredyt hipoteczny spłacany w systemie rat stałych z kredytem udzielanym w ramach programu „Na start”. Przyjęte oprocentowanie (7,14%) to średnia dla nowo udzielanych kredytów według najnowszych dostępnych danych NBP. Wartości rat i kwoty do spłaty dla „Kredytu na start” zostały wyliczone przy założeniu, że oprocentowania tego kredytu jak i średnia ważona na rynku są sobie równe.

Kwota do spłaty, to suma odsetek i spłaconego kapitału. Zarówno wysokość tych kwot jak i rat wyliczono przy założeniu, że oprocentowanie przez cały okres spłaty będzie na założonym poziomie. W rzeczywistości może się ono jednak zmienić. Wysokość rat „Kredytu na start” wyliczono zgodnie z założeniami tego programu, czyli przez 10 lat spłata odbywa się w ratach malejących i raty są pomniejszane o dopłaty. Od 11 roku spłata odbywa się w ratach stałych i nie są już wypłacane dopłaty. Pole „Oszczędności”, to różnica między kwotą do spłaty w przypadku standardowego kredytu, a kwotą dla „Bezpiecznego kredytu 2%”.

Materiał dotyczy rządowego programu dopłat do kredytu mieszkaniowego „Pierwsze mieszkanie” w ramach rozwiązania „Bezpieczny kredyt 2%”, regulowanego ustawą z dnia 26 maja 2023 r. o pomocy państwa w oszczędzaniu na cele mieszkaniowe (Dz.U.2023 poz.1114) zmieniającą ustawę z dnia 1 października 2021 r. o rodzinnym kredycie mieszkaniowym (Dz. U. z 2023 r. poz. 859). Symulacja nie stanowi oferty w rozumieniu ustawy z dnia 23 kwietnia 1964 r. – Kodeks cywilny.

Expander jest powiązanym pośrednikiem kredytu hipotecznego i nie świadczy usługi doradczej w rozumieniu ustawy z dnia 23 marca 2017 r. o kredycie hipotecznym oraz o nadzorze nad pośrednikami kredytu hipotecznego i agentami. Expander wykonuje czynności pośrednictwa kredytowego (kredyty hipoteczne) w zakresie wynikającym z umów agencyjnych zawartych z następującymi bankami: Alior Bank S.A. z siedzibą w Warszawie, Bank Ochrony Środowiska S.A. z siedzibą w Warszawie, Bank Polska Kasa Opieki S.A. z siedzibą w Warszawie, Bank Pocztowy S.A. z siedzibą w Bydgoszczy [zawieszona możliwość składania wniosków], Powszechna Kasa Oszczędności Bank Polski S.A. z siedzibą w Warszawie, Bank BNP Paribas S.A. z siedzibą w Warszawie, Santander Bank Polska S.A. z siedzibą w Warszawie, ING Bank Śląski S.A. z siedzibą w Katowicach, mBank S.A. z siedzibą w Warszawie, Bank Millennium S.A. z siedzibą w Warszawie, Bank Handlowy S.A. z siedzibą w Warszawie, Bank Polskiej Spółdzielczości SA z siedzibą w Warszawie, Spółdzielczy Bank Rozwoju z siedzibą w Szpietowie (stan na dzień 29.06.2023r.).

const totalAmountInput = document.getElementById("amount-input"); // const contributionInput = document.getElementById("contribution-input"); const monthsInput = document.getElementById("length-of-loan-input"); const familySelectInput = document.getElementById("family-status-input"); const incomeInput = document.getElementById("income-input"); const areaInput = document.getElementById("area-input"); const calculateBtn = document.getElementById("calculate-btn"); const appoitmentBox = document.getElementById("appoitment-btn"); const resultsBox = document.getElementById("results-all"); const errorBox = document.getElementById("error-box"); const resutlFirstMns = document.getElementById("resutl-first-mns"); const resutlMortgageMns = document.getElementById("resutl-interest-mns"); const resutlInstallment121 = document.getElementById("resutl-121-mns"); const resutlMortgageMnsAfter = document.getElementById( "resutl-mortgage-mns-after" ); const wyslijBox = document.getElementById("wyslij-button"); const myForm = document.getElementById("#myForm"); const kowtaSplatyInput = document.getElementById("kwotaDoSplaty"); const oszczednosciInput = document.getElementById("oszczednosci"); const headingOrange = document.getElementById("headingMns-years"); const resutlCostMns = document.getElementById("resutl-cost-mns"); const resutlSavings = document.getElementById("resutl-savings"); const resutlCost = document.getElementById("resutl-cost"); const resutlFirst = document.getElementById("resutl-first"); const resutlMortgage = document.getElementById("resutl-mortgage"); const resutlSummary = document.getElementById("mortgage-summary"); const wrapper = document.getElementById("general_wrapper"); document.getElementsByClassName // const interestRateBK = 2.869; const interestRate = 7.14; const errorMessage = "Błąd w formularzu!"; let totalAmount = 400000; let years = 30; let income = 6000; let area = 45; let mnsFullCost; let ordinaryCost; let installment121 = []; let installemnt1; let doplataZarobki = 0; let doplataMetraz = 0; let aktualnaRataDoplata =0; //Wyświetlanie wartości startowych window.addEventListener("load", (event) => { monthsInput.value = "30 lat"; totalAmountInput.value = "400 000 zł"; incomeInput.value = "6 000" areaInput.value = "45 m2" // contributionInput.value = "50 000 zł"; }); // function deleteErrorBox() { // timeout = setTimeout(alertFunc, 3000); // } let kwota_objeta_doplata = 0; let oprocentowanie_skorygowane = 0; let limit_dochodu = 0; let limit_metraz = 0; let przekroczony_dochod_doplata = 0; let przekroczony_metraz_doplata = 0; if (familySelectInput.value == "singiel") { kwota_objeta_doplata = 200000; oprocentowanie_skorygowane = 1.5; limit_dochodu = 10000; limit_metraz = 50; } else if (familySelectInput.value == "para") { kwota_objeta_doplata = 400000; oprocentowanie_skorygowane = 1.5; limit_dochodu = 18000; limit_metraz = 75; } else if (familySelectInput.value == "para_1_dziecko") { kwota_objeta_doplata = 450000; oprocentowanie_skorygowane = 1; limit_dochodu = 23000; limit_metraz = 100; } else if (familySelectInput.value == "para_2_dzieci") { kwota_objeta_doplata = 500000; oprocentowanie_skorygowane = 0.5; limit_dochodu = 28000; limit_metraz = 125; } else if (familySelectInput.value == "para_3_dzieci") { kwota_objeta_doplata = 600000; oprocentowanie_skorygowane = 0; limit_dochodu = 33000; limit_metraz = 150; } else if (familySelectInput.value == "para_4_dzieci") { kwota_objeta_doplata = 700000; oprocentowanie_skorygowane = 0; limit_dochodu = 33000; limit_metraz = 175; } else if (familySelectInput.value == "para_5_dzieci") { kwota_objeta_doplata = 800000; oprocentowanie_skorygowane = 0; limit_dochodu = 33000; limit_metraz = 200; } przekroczony_metraz_doplata = (limit_metraz - area) < 0 ? 0 : (limit_metraz - area) * 50; if (familySelectInput.value == "singiel"){ przekroczony_dochod_doplata = (limit_dochodu - income) < 0 ? 0 : (limit_dochodu - income) * 0.5; } else{ przekroczony_dochod_doplata = (limit_dochodu - income) < 0 ? 0 : (limit_dochodu - income) * 0.25; }//to można wywalić // if (kwota_objeta_doplata < totalAmount){ // const Amount = totalAmount + kwota_objeta_doplata; // const weightedRate1 = totalAmount / Amount * oprocentowanie_skorygowane; // const weightedRate2 = kwota_objeta_doplata / Amount * interestRate; // const averageRate = weightedRate1 + weightedRate2; // oprocentowanie_skorygowane = averageRate; // } // const zadluzenie_bez_doplaty = totalAmount - kwota_objeta_doplata // const kapital_bez_doplaty = setTimeout(function () { errorBox.style.display = "none"; }, 3000); function calculateDecreasingLoan(months, totalAmount, interestRate) { // Obliczanie miesięcznej stopy oprocentowania const monthlyInterestRate = interestRate / 12 / 100; let remainingAmount = totalAmount; let amortizationSchedule = []; let payed_ = 0; // let lastElementPayed; for (let i = 0; i < months; i++) { // Obliczanie odsetek dla danego miesiąca const interestAmount = remainingAmount * monthlyInterestRate; // Obliczanie kapitału spłacanego w danym miesiącu const principalAmount = totalAmount / months; remainingAmount -= principalAmount; const installment = parseFloat(principalAmount.toFixed(2)) + parseFloat(interestAmount.toFixed(2)); payed_ += installment; amortizationSchedule.push({ month: i + 1, principal: principalAmount.toFixed(2), interest: interestAmount.toFixed(2), remainingAmount: remainingAmount.toFixed(2), installment: installment, payed_: payed_, }); // if (i === 119) { // const newMonths = months - 120; // const since120 = calculateFixedInstallmentsLoan( // newMonths, // remainingAmount, // interestRate, // false // ); // lastElementPayed = since120.slice(-1)[0].payed; // mnsFullCost = lastElementPayed + amortizationSchedule[119].payed_; // installment121 = since120[0].installment; // console.log(mnsFullCost) // } } // console.log(amortizationSchedule) return amortizationSchedule; } function calculateFixedInstallmentsLoan(months, totalAmount, interestRate, ifOrdinary) { // Obliczanie miesięcznej stopy oprocentowania const monthlyInterestRate = interestRate / 12 / 100; // Obliczanie współczynnika dla równych rat const coefficient = (monthlyInterestRate * Math.pow(1 + monthlyInterestRate, months)) / (Math.pow(1 + monthlyInterestRate, months) - 1); // Obliczanie stałej raty const monthlyPayment = totalAmount * coefficient; let remainingAmount = totalAmount; let amortizationSchedule = []; let payed = 0; for (let i = 0; i < months; i++) { // Obliczanie odsetek dla danego miesiąca const interestAmount = remainingAmount * monthlyInterestRate; // Obliczanie kapitału spłacanego w danym miesiącu const principalAmount = monthlyPayment - interestAmount; remainingAmount -= principalAmount; const installment = parseFloat(principalAmount.toFixed(2)) + parseFloat(interestAmount.toFixed(2)); payed += installment; amortizationSchedule.push({ month: i + 1, principal: principalAmount.toFixed(2), interest: interestAmount.toFixed(2), remainingAmount: remainingAmount.toFixed(2), installment: parseFloat(principalAmount.toFixed(2)) + parseFloat(interestAmount.toFixed(2)), payed: payed, }); } if (ifOrdinary == true){ ordinaryCost = amortizationSchedule.slice(-1)[0].payed; } return amortizationSchedule; } function numberWithSpaces(x) { return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, " "); } totalAmountInput.addEventListener("focus", function (e) { totalAmountInput.value = totalAmount; }); totalAmountInput.addEventListener("focusout", function (e) { totalAmount = parseInt(totalAmountInput.value); if (!totalAmount) { totalAmount = 400000; // } // else if (totalAmount > 600000) { // // totalAmount = 1000000 - contribution; // totalAmount = 600000; // totalAmountInput.value = totalAmount; // errorBox.textContent = // "Kwota kredytu zmieniona! Maksymalna kwota to 600 tys."; // errorBox.style.display = "block"; // setTimeout(function () { // errorBox.style.display = "none"; // }, 3000); } else if (totalAmount < 90000) { totalAmount = 90000; errorBox.textContent = "Kwota kredytu zmieniona! Minimalna kwota to 90 tys."; errorBox.style.display = "block"; setTimeout(function () { errorBox.style.display = "none"; }, 3000); } // else if (totalAmount > 600000 && contribution < totalAmount - 600000) { // totalAmount = 600000 + contribution; // errorBox.textContent = // "Wartość nieruchomości zmieniona! Maksymalna wartość to 600 tys + wkład"; // errorBox.style.display = "block"; // setTimeout(function () { // errorBox.style.display = "none"; // }, 3000); // } // else if (totalAmount <= contribution) { // totalAmount = 600000 - contribution; // errorBox.textContent = // "Kwota kredytu zmieniona! Wkład własny większy od wartości nieruchomości"; // errorBox.style.display = "block"; // setTimeout(function () { // errorBox.style.display = "none"; // }, 3000); // } else { errorBox.style.display = "none"; } totalAmountInput.value = numberWithSpaces(parseInt(totalAmount)) + " zł"; }); // contributionInput.addEventListener("focus", function (e) { // contributionInput.value = contribution; // }); // contributionInput.addEventListener("focusout", function (e) { // contribution = parseInt(contributionInput.value); // if (!contribution) { // contribution = 0; // } // else if (totalAmount + contribution > 1000000) { // contribution = 200000; // errorBox.textContent = // "Wielkość wkładu zmieniona! Maksymalna wartość to 200 tys."; // errorBox.style.display = "block"; // setTimeout(function () { // errorBox.style.display = "none"; // }, 3000); // } else if (totalAmount > 600000 && contribution < totalAmount - 600000) { // contribution = 200000 - (800000 - totalAmount); // errorBox.textContent = // "Wielkość wkładu zmieniona! Za duża wartość nieruchomości"; // errorBox.style.display = "block"; // setTimeout(function () { // errorBox.style.display = "none"; // }, 3000); // } // else if (contribution > 200000) { // contribution = 200000; // errorBox.textContent = // "Wielkość wkładu zmieniona! Maksymalna wartość to 200 tys."; // errorBox.style.display = "block"; // setTimeout(function () { // errorBox.style.display = "none"; // }, 3000); // } // else if (contribution >= totalAmount) { // contribution = 50000; // errorBox.textContent = // "Wielkość wkładu zmieniona! Wkład własny większy od wartości nieruchomości"; // errorBox.style.display = "block"; // setTimeout(function () { // errorBox.style.display = "none"; // }, 3000); // } // else { // errorBox.style.display = "none"; // } // contributionInput.value = numberWithSpaces(parseInt(contribution)) + " zł"; // }); monthsInput.addEventListener("focus", function (e) { monthsInput.value = years; }); monthsInput.addEventListener("focusout", function (e) { years = parseInt(monthsInput.value); if (!years) { years = 30; } else if (years > 35) { years = 35; errorBox.textContent = "Okres spłaty zmieniony! Maksymalny to 35 lat"; errorBox.style.display = "block"; setTimeout(function () { errorBox.style.display = "none"; }, 3000); } else if (years < 15) { years = 15; errorBox.textContent = "Okres spłaty zmieniony! Minimalny to 15 lat"; errorBox.style.display = "block"; setTimeout(function () { errorBox.style.display = "none"; }, 3000); } else { errorBox.style.display = "none"; } monthsInput.value = years + " lat"; }); incomeInput.addEventListener("focus", function (e) { incomeInput.value = income; }); incomeInput.addEventListener("focusout", function (e) { income = parseInt(incomeInput.value); if (!income) { income = 6000; } else { errorBox.style.display = "none"; } incomeInput.value = income + " zł"; }); areaInput.addEventListener("focus", function (e) { areaInput.value = area; }); areaInput.addEventListener("focusout", function (e) { area = parseInt(areaInput.value); if (!area) { area = 45; } else { errorBox.style.display = "none"; } areaInput.value = area + " m2"; }); // familySelectInput.addEventListener("focus", function (e) { // familySelectInput.value = years; // }); // var form = document.getElementById("myForm_"); // function handleForm(event) { event.preventDefault(); } // form.addEventListener('submit', handleForm); document.getElementById('myForm_').addEventListener('submit', function(e){ e.preventDefault(); myForm.style.display="none"; resultsBox.classList.remove("blur_on") console.log("test") }) familySelectInput.addEventListener("focusout", function (e) { if (familySelectInput.value == "singiel") { kwota_objeta_doplata = 200000; oprocentowanie_skorygowane = 1.5; limit_dochodu = 10000; limit_metraz = 50; } else if (familySelectInput.value == "para") { kwota_objeta_doplata = 400000; oprocentowanie_skorygowane = 1.5; limit_dochodu = 18000; limit_metraz = 75; } else if (familySelectInput.value == "para_1_dziecko") { kwota_objeta_doplata = 450000; oprocentowanie_skorygowane = 1; limit_dochodu = 23000; limit_metraz = 100; } else if (familySelectInput.value == "para_2_dzieci") { kwota_objeta_doplata = 500000; oprocentowanie_skorygowane = 0.5; limit_dochodu = 28000; limit_metraz = 125; } else if (familySelectInput.value == "para_3_dzieci") { kwota_objeta_doplata = 600000; oprocentowanie_skorygowane = 0; limit_dochodu = 33000; limit_metraz = 150; } else if (familySelectInput.value == "para_4_dzieci") { kwota_objeta_doplata = 700000; oprocentowanie_skorygowane = 0; limit_dochodu = 33000; limit_metraz = 175; } else if (familySelectInput.value == "para_5_dzieci") { kwota_objeta_doplata = 800000; oprocentowanie_skorygowane = 0; limit_dochodu = 33000; limit_metraz = 200; } przekroczony_metraz_doplata = (limit_metraz - area) > 0 ? 0 : -(limit_metraz - area) * 50; if (familySelectInput.value == "singiel"){ przekroczony_dochod_doplata = (limit_dochodu - income) > 0 ? 0 : -(limit_dochodu - income) * 0.5; } else{ przekroczony_dochod_doplata = (limit_dochodu - income) > 0 ? 0 : -(limit_dochodu - income) * 0.25; }// DLACZEGOTUTAJ ---- minus // if (kwota_objeta_doplata < totalAmount){ // const Amount = totalAmount + kwota_objeta_doplata; // const weightedRate1 = totalAmount / Amount * oprocentowanie_skorygowane; // const weightedRate2 = kwota_objeta_doplata / Amount * interestRate; // const averageRate = weightedRate1 + weightedRate2; // oprocentowanie_skorygowane = averageRate; // } }); let first_use = true; calculateBtn.addEventListener("click", function (e) { if (years <= 35 && years >= 15 && totalAmount >= 90000) { calculateMortgagePayment(); if (first_use == true){ resultsBox.classList.add("blur_on") } } else { errorBox.style.display = "block"; } let first_use = false; }); scrollFrom.addEventListener("click", function (e) { scrollTo.scrollIntoView({ behavior: "smooth", block: "start", }); }); function calculateMortgagePayment() { const czescZDoplata = calculateDecreasingLoan( years * 12, kwota_objeta_doplata >= totalAmount ? totalAmount : kwota_objeta_doplata, oprocentowanie_skorygowane ); console.log(czescZDoplata) let czescBezDoplaty; if ((totalAmount - kwota_objeta_doplata) > 0){ czescBezDoplaty = calculateDecreasingLoan( years * 12, totalAmount - kwota_objeta_doplata, 7.14 ); } else czescBezDoplaty = 0; const schedule1 = calculateFixedInstallmentsLoan( years * 12, totalAmount, 7.14, true // interestRate ); const rataZwyklegoMalejaca = calculateDecreasingLoan( years * 12, totalAmount, 7.14, ); let testyears = (years - 10) * 12; let testamount = parseFloat(czescZDoplata[119].remainingAmount) + (czescBezDoplaty ? parseFloat(czescBezDoplaty[119].remainingAmount) : 0); const schedule2 = calculateFixedInstallmentsLoan( testyears, testamount, 7.14 ); let doplata_do_pierwszej_raty = 0; przekroczony_metraz_doplata = (limit_metraz - area) > 0 ? 0 : -(limit_metraz - area) * 50; if (familySelectInput.value == "singiel"){ przekroczony_dochod_doplata = (limit_dochodu - income) > 0 ? 0 : -(limit_dochodu - income) * 0.5; } else{ przekroczony_dochod_doplata = (limit_dochodu - income) > 0 ? 0 : -(limit_dochodu - income) * 0.25; } for (let i=0; i<120; i++){ aktualnaRataDoplata = rataZwyklegoMalejaca[i].installment - (czescZDoplata[i].installment + (czescBezDoplaty ? (czescBezDoplaty[i].installment) : 0)) przekroczony_dochod_doplata < aktualnaRataDoplata ? (doplataZarobki += przekroczony_dochod_doplata) : doplataZarobki += aktualnaRataDoplata; przekroczony_metraz_doplata < aktualnaRataDoplata ? (doplataMetraz += przekroczony_metraz_doplata) : doplataMetraz += aktualnaRataDoplata; if (i==0){ doplata_do_pierwszej_raty = doplataZarobki + doplataMetraz } } console.log(doplataMetraz) console.log(doplataZarobki) //kredyt z dopłatami installemnt1 = Math.round(czescZDoplata[0].installment + (czescBezDoplaty ? (czescBezDoplaty[0].installment) : 0) + doplata_do_pierwszej_raty); // wyliczanie kosztu kredytu z dopłatami let costMsnFull = (czescBezDoplaty ? (czescBezDoplaty[119].payed_) : 0) + czescZDoplata[119].payed_ + schedule2.slice(-1)[0].payed + doplataZarobki + doplataMetraz; resutlFirstMns.innerHTML = `${installemnt1} zł -${ Math.round(schedule1[0].installment) - Math.round(czescZDoplata[0].installment + (czescBezDoplaty ? (czescBezDoplaty[0].installment) : 0)) } zł`; resutlMortgageMns.textContent = oprocentowanie_skorygowane + "% + marża banku*"; resutlMortgageMnsAfter.textContent = interestRate + "%"; resutlCostMns.textContent = numberWithSpaces(Math.round(costMsnFull)) + " zł"; resutlSavings.textContent = numberWithSpaces(Math.round(ordinaryCost - costMsnFull)) + " zł"; //zwykły kredyt resutlCost.textContent = numberWithSpaces(Math.round(ordinaryCost)) + " zł"; resutlFirst.textContent = Math.round(schedule1[0].installment) + " zł"; resutlInstallment121.textContent = Math.round(schedule2[0].installment) + " zł"; resutlMortgage.textContent = interestRate + "%"; headingOrange.textContent = `Następne ${years - 10} lat`; calculateBtn.classList.add("form-success"); resutlSummary.textContent = `Kredyt ${ numberWithSpaces(parseInt(totalAmount)) + " zł" } na ${years} lat`; resultsBox.style.display = "flex"; // appoitmentBox.style.display = "flex"; resutlSummary.style.display = "block"; doplataZarobki = 0; doplataMetraz = 0; myForm.style.display = "block" monthsInput.scrollIntoView({ behavior: "smooth", block: "start", }); } totalAmountInput.value = numberWithSpaces(parseInt(totalAmount)) + " zł"; wyslijBox.addEventListener("click", function (e) { kowtaSplatyInput.setAttribute('value', ` Kwota kredytu = ${totalAmount} zł, Okres kredytowania = ${years} lat, Dochód = ${income} zł brutto, Kto zaciąga kredyt = ${familySelectInput.value}, Kwota do spłaty bez dopłat = ${resutlCost.textContent}, - TEGO NIE WIDZI KLIENT - Kwota do spłaty Mieszkanie na start = ${resutlCostMns.textContent}, - TEGO NIE WIDZI KLIENT - Suma oszczędności Mieszkanie na start = ${resutlSavings.textContent} `); // oszczednosciInput.setAttribute('value', `Suma oszczędności z dopłatami Mieszkanie na start = ${resutlCostMns}`); });