
{"id":33729,"date":"2026-01-16T19:41:26","date_gmt":"2026-01-16T19:41:26","guid":{"rendered":"https:\/\/lisbonproperty.com\/es\/?post_type=portugal&#038;p=33729"},"modified":"2026-01-16T19:43:04","modified_gmt":"2026-01-16T19:43:04","slug":"calculadora-del-impuesto","status":"publish","type":"portugal","link":"https:\/\/lisbonproperty.com\/es\/portugal\/calculadora-del-impuesto\/","title":{"rendered":"IMT &#8211; Calculadora del Impuesto"},"content":{"rendered":"<h2>Calculadora IMT &#8211; Calculadora del Impuesto de Transmisiones de Propiedad de Portugal 2026<br \/>\n<\/h2>\n\n    <div class=\"tax-calculator-widget\" style=\"max-width: 600px; margin: 20px auto; padding: 20px; background: #f8f9fa; border-radius: 8px;\">\n        <h3 style=\"margin-top: 0;\">Calculadora de Impuestos 2026<\/h3>\n\n        <form id=\"standalone-tax-form\" style=\"display: flex; flex-direction: column; gap: 15px;\">\n\n            <!-- Property Price Input -->\n            <div>\n                <label for=\"calc_price\" style=\"display: block; font-weight: 600; margin-bottom: 5px;\">\n                    Precio Solicitado                <\/label>\n                <input type=\"number\"\n                    id=\"calc_price\"\n                    name=\"calc_price\"\n                    placeholder=\"e.g. 250000\"\n                    min=\"0\"\n                    step=\"500000\"\n                    style=\"width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 4px; font-size: 16px;\">\n            <\/div>\n\n            <!-- Location -->\n            <div>\n                <label for=\"calc_location\" style=\"display: block; font-weight: 600; margin-bottom: 5px;\">\n                    Location:\n                <\/label>\n                <select id=\"calc_location\"\n                    name=\"calc_location\"\n                    style=\"width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 4px; font-size: 14px;\">\n                    <option value=\"0\"  selected='selected'>Portugal Continental<\/option>\n                    <option value=\"1\" >Madeira\/Azores<\/option>\n                <\/select>\n            <\/div>\n\n            <!-- Property Usage -->\n            <div>\n                <label for=\"calc_usage\" style=\"display: block; font-weight: 600; margin-bottom: 5px;\">\n                    Uso de la Propiedad:                <\/label>\n                <select id=\"calc_usage\"\n                    name=\"calc_usage\"\n                    onchange=\"toggleCalcYouthBonus();\"\n                    style=\"width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 4px; font-size: 14px;\">\n                    <option value=\"primary_residence\">Residencia Principal (Habita\u00e7\u00e3o Pr\u00f3pria)<\/option>\n                    <option value=\"secondary_residence\">Secundaria\/Alquiler (Habita\u00e7\u00e3o Secund\u00e1ria)<\/option>\n                    <option value=\"touristic\">Explotaci\u00f3n Tur\u00edstica<\/option>\n                <\/select>\n            <\/div>\n\n            <!-- Youth Bonus -->\n            <div id=\"calc-youth-section\" style=\"padding: 10px; background: #fff9e6; border: 1px solid #ffc107; border-radius: 4px;\">\n                <label style=\"display: flex; align-items: center; cursor: pointer; margin: 0;\">\n                    <input type=\"checkbox\"\n                        id=\"calc_youth_bonus\"\n                        name=\"calc_youth_bonus\"\n                        style=\"width: 18px; height: 18px; margin-right: 8px; cursor: pointer;\">\n                    <span style=\"font-weight: 600;\">Exclusivo para menores de 35 a\u00f1os (Bono Juvenil)<\/span>\n                <\/label>\n            <\/div>\n\n            <!-- Calculate Button -->\n            <button type=\"button\"\n                onclick=\"calculateStandaloneTax()\"\n                style=\"padding: 12px 24px; background: #0073aa; color: white; border: none; border-radius: 4px; font-size: 16px; font-weight: 600; cursor: pointer;\">\n                Calculate Taxes\n            <\/button>\n        <\/form>\n\n        <!-- Results Container -->\n        <div id=\"calc-results\" style=\"margin-top: 20px;\"><\/div>\n    <\/div>\n\n    <script>\n        function toggleCalcYouthBonus() {\n            const usage = document.getElementById('calc_usage');\n            const youthSection = document.getElementById('calc-youth-section');\n            const checkbox = document.getElementById('calc_youth_bonus');\n\n            if (usage.value === 'primary_residence') {\n                youthSection.style.background = '#fff9e6';\n                youthSection.style.borderColor = '#ffc107';\n                youthSection.style.opacity = '1';\n                checkbox.disabled = false;\n            } else {\n                youthSection.style.background = '#f5f5f5';\n                youthSection.style.borderColor = '#ddd';\n                youthSection.style.opacity = '0.5';\n                checkbox.disabled = true;\n                checkbox.checked = false;\n            }\n        }\n\n        function calculateStandaloneTax() {\n            const price = parseFloat(document.getElementById('calc_price').value);\n            const isIsland = document.getElementById('calc_location').value;\n            const usageType = document.getElementById('calc_usage').value;\n            const applyYouthBonus = document.getElementById('calc_youth_bonus').checked;\n            const resultsDiv = document.getElementById('calc-results');\n\n            if (!price || price <= 0) {\n                resultsDiv.innerHTML = '<div style=\"padding: 15px; background: #f8d7da; color: #721c24; border-radius: 4px;\">Please enter a valid price<\/div>';\n                return;\n            }\n\n            resultsDiv.innerHTML = '<div style=\"padding: 15px; text-align: center;\">' + taxCalculatorData.TEXT_CALCULATING + '<\/div>';\n\n            fetch(taxCalculatorData.restUrl, {\n                    method: 'POST',\n                    headers: {\n                        'Content-Type': 'application\/json',\n                        'X-WP-Nonce': taxCalculatorData.nonce\n                    },\n                    body: JSON.stringify({\n                        price: price,\n                        is_island: isIsland,\n                        usage_type: usageType,\n                        apply_youth_bonus: applyYouthBonus,\n                        is_touristic: (usageType === 'touristic') ? '1' : '0',\n                        is_rustic: '0',\n                        property_type: 'apartment'\n                    })\n                })\n                .then(res => res.json())\n                .then(data => {\n                    if (data.type) {\n                        displayCalcResults(data);\n                    } else {\n                        resultsDiv.innerHTML = '<div style=\"padding: 15px; background: #f8d7da; color: #721c24; border-radius: 4px;\">' + taxCalculatorData.TEXT_ERROR_CALCULATING + '<\/div>';\n                    }\n                })\n                .catch(() => {\n                    resultsDiv.innerHTML = '<div style=\"padding: 15px; background: #f8d7da; color: #721c24; border-radius: 4px;\">' + taxCalculatorData.TEXT_CONNECTION_ERROR + '<\/div>';\n                });\n        }\n\n        function displayCalcResults(data) {\n            let usageText = taxCalculatorData.TEXT_IMT_TAX_FOR;\n\n            if (data.usage_label === \"youth_bonus\") {\n                usageText += \" \" + taxCalculatorData.TEXT_SUFFIX_YOUTH_BONUS;\n            } else if (data.usage_label === \"youth_not_applicable\") {\n                usageText += \" \" + taxCalculatorData.TEXT_SUFFIX_YOUTH_BONUS_NOT_APPLICABLE;\n            } else if (data.usage_label === \"touristic_flat\") {\n                usageText += \" \" + taxCalculatorData.TEXT_SUFFIX_TOURISTIC_FLAT;\n            } else if (data.usage_label === \"primary_mainland\") {\n                usageText += \" \" + taxCalculatorData.TEXT_SUFFIX_PRIMARY_MAINLAND;\n            } else if (data.usage_label === \"primary_islands\") {\n                usageText += \" \" + taxCalculatorData.TEXT_SUFFIX_PRIMARY_ISLANDS;\n            } else if (data.usage_label === \"secondary_mainland\") {\n                usageText += \" \" + taxCalculatorData.TEXT_SUFFIX_SECONDARY_MAINLAND;\n            } else if (data.usage_label === \"secondary_islands\") {\n                usageText += \" \" + taxCalculatorData.TEXT_SUFFIX_SECONDARY_ISLANDS;\n            }\n\n            let html = '<table style=\"width: 100%; border-collapse: collapse; background: white; border-radius: 4px; overflow: hidden;\">';\n            html += '<tr style=\"background: #f8f9fa;\"><td style=\"padding: 12px; font-weight: 600; border-bottom: 1px solid #dee2e6;\">' + usageText + '<\/td><td style=\"padding: 12px; text-align: right; border-bottom: 1px solid #dee2e6;\">' + data.imt_tax + ' \u20ac<\/td><\/tr>';\n            html += '<tr><td style=\"padding: 12px; border-bottom: 1px solid #dee2e6;\">' + taxCalculatorData.TEXT_STAMP_DUTY + '<\/td><td style=\"padding: 12px; text-align: right; border-bottom: 1px solid #dee2e6;\">' + data.stamp_duty + ' \u20ac<\/td><\/tr>';\n\n            if (data.savings) {\n                html += '<tr style=\"background: #d4edda; color: #155724; font-weight: 600;\"><td style=\"padding: 12px;\">' + taxCalculatorData.TEXT_YOUTH_SAVINGS + '<\/td><td style=\"padding: 12px; text-align: right;\">- ' + data.savings + ' \u20ac<\/td><\/tr>';\n            }\n\n            html += '<tr style=\"background: #e7f3ff; font-weight: 600; font-size: 16px;\"><td style=\"padding: 12px;\">Total<\/td><td style=\"padding: 12px; text-align: right;\">' + data.total_tax + ' \u20ac<\/td><\/tr>';\n            html += '<\/table>';\n\n            document.getElementById('calc-results').innerHTML = html;\n        }\n\n        \/\/ Initialize on load\n        document.addEventListener('DOMContentLoaded', toggleCalcYouthBonus);\n    <\/script>\n\n\n","protected":false},"featured_media":0,"parent":0,"menu_order":0,"template":"","meta":[],"class_list":["post-33729","portugal","type-portugal","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/lisbonproperty.com\/es\/wp-json\/wp\/v2\/portugal\/33729","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lisbonproperty.com\/es\/wp-json\/wp\/v2\/portugal"}],"about":[{"href":"https:\/\/lisbonproperty.com\/es\/wp-json\/wp\/v2\/types\/portugal"}],"wp:attachment":[{"href":"https:\/\/lisbonproperty.com\/es\/wp-json\/wp\/v2\/media?parent=33729"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}