{"id":51113,"date":"2026-07-23T15:32:14","date_gmt":"2026-07-23T15:32:14","guid":{"rendered":"https:\/\/zeas.immo\/?page_id=51113"},"modified":"2026-07-23T22:53:00","modified_gmt":"2026-07-23T22:53:00","slug":"calculateur-de-cout-de-vente-au-luxembourg","status":"publish","type":"page","link":"https:\/\/zeas.immo\/fr\/luxembourg-selling-cost-calculator\/","title":{"rendered":"Calculateur de co\u00fbt de vente au Luxembourg"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"51113\" class=\"elementor elementor-51113\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f4abbc8 e-flex e-con-boxed e-con e-parent\" data-id=\"f4abbc8\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4924aa5a elementor-widget elementor-widget-text-editor\" data-id=\"4924aa5a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-ac8b503 e-flex e-con-boxed e-con e-parent\" data-id=\"ac8b503\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-166cc27 elementor-widget elementor-widget-html\" data-id=\"166cc27\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>Selling Cost Calculator Luxembourg \u2014 zeas.immo<\/title>\n<meta name=\"description\" content=\"Free Luxembourg selling cost calculator: agency commission, capital gains tax, notary fees and mortgage payoff \u2014 see your real net proceeds fast.\">\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Poppins:wght@300;400;500;600;700&display=swap\" rel=\"stylesheet\">\n<style>\n\/* ============================================================\n   ZEAS CALCULATOR DESIGN SYSTEM  v2  (shared: buy + sell)\n   Extract this block to a single CSS file and load it in both\n   calculators once approved.\n============================================================ *\/\n:root{\n  color-scheme: light;\n\n  \/* brand *\/\n  --orange:#FF5C0B;\n  --orange-dk:#e04e00;\n  --orange-tint:rgba(255,92,11,.08);\n  --orange-ring:rgba(255,92,11,.18);\n  --ink:#111110;\n  --ink-2:#1c1c1a;\n  --ink-3:#2e2e2b;\n  --cream:#ffffff;\n  --white:#ffffff;\n  --line:#E4E0DA;\n  --line-dk:rgba(255,255,255,.13);\n  --grey:#777470;\n  --grey-lt:#9b9894;\n  --body:#2A2A28;\n  --green:#1a7a42;\n  --red:#c0341a;\n\n  \/* type *\/\n  --display:'Poppins',-apple-system,sans-serif;\n  --font:'Poppins',-apple-system,sans-serif;\n  --charcoal:#4a4642;\n\n  \/* metrics *\/\n  --max:1240px;\n  --pad:56px;\n  --gap:20px;\n}\n@media(max-width:1080px){:root{--pad:32px;}}\n@media(max-width:600px){:root{--pad:18px;}}\n\n*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}\nhtml{-webkit-text-size-adjust:100%;}\nbody{font-family:var(--font);font-size:15px;font-weight:400;line-height:1.55;\n  background:var(--cream);color:var(--body);}\n:focus-visible{outline:2px solid var(--orange);outline-offset:2px;}\n@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;}}\n\n\/* --- shared atoms ------------------------------------------------ *\/\n.eyebrow{font-size:10px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--grey);}\n.num{font-family:var(--display);font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums;}\n.wrap{max-width:var(--max);margin:0 auto;padding:0 var(--pad);}\n\n\/* ============================================================\n   HERO \u2014 the thesis: a price becomes proceeds\n============================================================ *\/\n.hero{background:var(--ink);color:var(--white);padding:56px 0 52px;}\n.hero h1{font-family:var(--display);font-weight:700;letter-spacing:-.035em;line-height:1.02;\n  font-size:clamp(34px,7.4vw,96px);color:var(--white);margin:0;max-width:none;}\n.hero h1 em{font-style:normal;color:var(--orange);}\n.hero h1 .ln{display:block;white-space:nowrap;}\n.hero h1 .ln-title{margin-bottom:.30em;}\n.hero h1 .ln-a{text-align:left;}\n.hero h1 .ln-b{text-align:center;margin:.16em 0;}\n.hero h1 .ln-c{text-align:right;}\n.hero .lede{font-size:17px;font-weight:300;color:#a9a6a1;max-width:none;margin-top:26px;line-height:1.65;}\n.hero-meta{display:flex;gap:36px;flex-wrap:wrap;margin-top:34px;padding-top:26px;border-top:1px solid var(--line-dk);}\n.hero-meta div{min-width:0;}\n.hero-meta .k{font-family:var(--display);font-size:22px;font-weight:700;color:var(--white);letter-spacing:-.02em;}\n.hero-meta .v{font-size:13.5px;color:#a9a6a1;margin-top:4px;letter-spacing:.01em;}\n@media(max-width:700px){\n  .hero h1 .ln{white-space:normal;}\n  .hero h1 .ln-b,.hero h1 .ln-c{text-align:left;}\n  .hero h1 .ln-title{margin-bottom:.22em;}\n  .hero .lede{font-size:15px;}\n}\n\n\/* ============================================================\n   STEPS\n============================================================ *\/\n.steps{display:flex;gap:2px;background:var(--line);border:1px solid var(--line);margin:34px 0 26px;}\n.stp{flex:1;background:var(--cream);padding:11px 14px;display:flex;align-items:center;gap:9px;min-width:0;}\n.stp .n{font-family:var(--display);font-size:12px;font-weight:700;color:var(--grey-lt);}\n.stp .t{font-size:10.5px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--grey);\n  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}\n.stp.on{background:var(--ink);} .stp.on .n{color:var(--orange);} .stp.on .t{color:var(--white);}\n.stp.ok{background:var(--white);} .stp.ok .n,.stp.ok .t{color:var(--ink);}\n@media(max-width:700px){.stp .t{display:none;} .stp{justify-content:center;}}\n\n\/* ============================================================\n   TWO-COLUMN SHELL \u2014 inputs left, live ledger right\n============================================================ *\/\n.shell{display:grid;grid-template-columns:minmax(0,1fr) 400px;gap:var(--gap);padding-bottom:64px;}\n.shell > aside{height:100%;}\n@media(max-width:1080px){.shell{grid-template-columns:1fr;} .shell > aside{order:-1;height:auto;} .ledger{margin-bottom:var(--gap);}}\n\n\/* --- panels --- *\/\n.panel{background:var(--white);border:1px solid var(--line);margin-bottom:var(--gap);}\n.panel-hd{display:flex;align-items:baseline;gap:12px;padding:18px 24px;border-bottom:1px solid var(--line);}\n.panel-hd .idx{font-family:var(--display);font-size:11px;font-weight:700;color:var(--orange);letter-spacing:.04em;}\n.panel-hd h2{font-family:var(--display);font-size:18px;font-weight:700;color:var(--ink);letter-spacing:-.02em;}\n.panel-hd p{font-size:12px;color:var(--grey);font-weight:300;margin-left:auto;text-align:right;}\n@media(max-width:600px){.panel-hd{flex-wrap:wrap;padding:16px;} .panel-hd p{margin-left:0;text-align:left;width:100%;}}\n.panel-bd{padding:24px;}\n@media(max-width:600px){.panel-bd{padding:16px;}}\n\n\/* --- fields --- *\/\n.row{display:grid;gap:16px;margin-bottom:20px;}\n.row.c2{grid-template-columns:1fr 1fr;}\n.row.c3{grid-template-columns:1fr 1fr 1fr;}\n.row:last-child{margin-bottom:0;}\n@media(max-width:640px){.row.c2,.row.c3{grid-template-columns:1fr;}}\n\n.f{display:flex;flex-direction:column;gap:7px;min-width:0;}\n.f > label{font-size:10.5px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--ink);\n  display:flex;align-items:center;gap:6px;}\n.hint{font-size:11.5px;font-weight:300;color:var(--grey);line-height:1.45;}\n\n.tip{position:relative;display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;\n  border:1px solid var(--line);color:var(--grey-lt);font-size:9px;font-weight:700;cursor:help;flex-shrink:0;font-style:normal;}\n.tip::after{content:attr(data-t);position:absolute;bottom:calc(100% + 8px);left:0;background:var(--ink);color:#fff;\n  font-size:11.5px;font-weight:300;letter-spacing:0;text-transform:none;padding:9px 12px;width:250px;line-height:1.5;\n  z-index:300;pointer-events:none;opacity:0;transition:opacity .15s;}\n.tip:hover::after,.tip:focus::after{opacity:1;}\n@media(max-width:560px){.tip::after{width:min(250px,72vw);}}\n\n.inp,.sel{font-family:var(--font);font-size:15px;font-weight:400;color:var(--ink);background:var(--white);\n  border:1px solid var(--line);padding:12px 14px;width:100%;outline:none;border-radius:0;-webkit-appearance:none;appearance:none;\n  transition:border-color .15s,box-shadow .15s;}\n.inp:focus,.sel:focus{border-color:var(--orange);box-shadow:0 0 0 3px var(--orange-ring);}\n.inp::placeholder{color:#bcb9b4;}\n.sel{padding-right:38px;cursor:pointer;\n  background-image:url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='12' height='8' fill='none'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23777470' stroke-width='1.5'\/%3E%3C\/svg%3E\");\n  background-repeat:no-repeat;background-position:right 14px center;}\n.iw{position:relative;}\n.iw .pre{position:absolute;left:14px;top:50%;transform:translateY(-50%);font-size:14px;color:var(--grey-lt);pointer-events:none;}\n.iw .suf{position:absolute;right:14px;top:50%;transform:translateY(-50%);font-size:13px;color:var(--grey-lt);pointer-events:none;}\n.iw .inp{padding-left:28px;}\n.iw .inp.rs{padding-right:36px;}\n.iw .inp.nopre{padding-left:14px;}\n.big .inp{font-family:var(--display);font-size:26px;font-weight:700;letter-spacing:-.02em;padding:14px 14px 14px 34px;}\n.big .pre{font-family:var(--display);font-size:22px;font-weight:700;color:var(--ink);left:14px;}\n.err{font-size:11.5px;color:var(--red);display:none;}\n.err.on{display:block;}\n\n\/* segmented control *\/\n.seg{display:flex;border:1px solid var(--line);}\n.seg > div{flex:1;min-width:0;}\n.seg input{position:absolute;opacity:0;width:0;height:0;}\n.seg label{display:flex;align-items:center;justify-content:center;text-align:center;padding:11px 8px;min-height:44px;\n  font-size:12.5px;font-weight:400;color:var(--body);cursor:pointer;line-height:1.25;user-select:none;\n  border-right:1px solid var(--line);transition:background .15s,color .15s;height:100%;}\n.seg > div:last-child label{border-right:none;}\n.seg label:hover{background:var(--orange-tint);}\n.seg input:checked + label{background:var(--ink);color:var(--white);font-weight:500;}\n.seg input:focus-visible + label{outline:2px solid var(--orange);outline-offset:-2px;}\n@media(max-width:520px){.seg{flex-direction:column;} .seg label{border-right:none;border-bottom:1px solid var(--line);}}\n\n.cond{display:none;} .cond.on{display:block;}\n.note{background:var(--orange-tint);border-left:2px solid var(--orange);padding:12px 14px;font-size:12.5px;\n  font-weight:300;line-height:1.6;color:var(--ink-3);}\n.note strong{font-weight:500;}\n.note.good{background:rgba(26,122,66,.07);border-left-color:var(--green);}\n.rule{border:none;border-top:1px solid var(--line);margin:22px 0;}\n\n\/* ============================================================\n   LEDGER \u2014 the signature element (sticky, ink, live)\n============================================================ *\/\n.ledger{position:sticky;top:16px;background:var(--ink);color:var(--white);border:1px solid var(--ink);}\n@media(max-width:1080px){.ledger{position:static;}}\n.led-hd{padding:20px 22px 16px;border-bottom:1px solid var(--line-dk);}\n.led-hd .eyebrow{color:var(--orange);}\n.led-hd h3{font-family:var(--display);font-size:17px;font-weight:700;color:var(--white);letter-spacing:-.02em;margin-top:7px;}\n.led-bd{padding:6px 22px 18px;}\n.lr{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:11px 0;\n  border-bottom:1px solid var(--line-dk);font-size:13px;}\n.lr:last-child{border-bottom:none;}\n.lr .l{color:#a9a6a1;font-weight:300;}\n.lr .l b{display:block;font-size:10.5px;color:#6f6b66;font-weight:400;margin-top:2px;letter-spacing:.02em;}\n.lr .v{font-family:var(--display);font-weight:700;font-size:15px;color:var(--white);white-space:nowrap;font-variant-numeric:tabular-nums;}\n.lr.minus .v{color:#e8a084;}\n.lr.head .l{color:var(--white);font-weight:500;}\n.lr.zero{opacity:.42;}\n\n\/* total block *\/\n.led-tot{background:var(--orange);padding:20px 22px;}\n.led-tot .k{font-size:10.5px;font-weight:600;letter-spacing:.13em;text-transform:uppercase;color:rgba(255,255,255,.85);}\n.led-tot .n{font-family:var(--display);font-size:clamp(32px,4.4vw,44px);font-weight:700;letter-spacing:-.035em;\n  color:var(--white);line-height:1.05;margin-top:6px;font-variant-numeric:tabular-nums;}\n.led-tot .s{font-size:11.5px;color:rgba(255,255,255,.86);margin-top:6px;font-weight:300;}\n\n\/* proceeds bar *\/\n.bar-wrap{padding:20px 22px 22px;border-top:1px solid var(--line-dk);}\n.bar{display:flex;height:34px;width:100%;overflow:hidden;background:#2a2a27;}\n.bar span{transition:width .5s cubic-bezier(.4,0,.2,1);min-width:0;}\n.bar .s-net{background:var(--orange);}\n.bar .s-loan{background:#5b5751;}\n.bar .s-com{background:#8d8781;}\n.bar .s-tax{background:#c25a2e;}\n.bar .s-oth{background:#3d3a36;}\n.bar-key{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:13px;}\n.bar-key i{display:flex;align-items:center;gap:6px;font-size:11px;font-style:normal;color:#a9a6a1;}\n.bar-key i::before{content:'';width:9px;height:9px;flex-shrink:0;}\n.bar-key i.k-net::before{background:var(--orange);}\n.bar-key i.k-loan::before{background:#5b5751;}\n.bar-key i.k-com::before{background:#8d8781;}\n.bar-key i.k-tax::before{background:#c25a2e;}\n.bar-key i.k-oth::before{background:#3d3a36;}\n\n\/* lock overlay *\/\n.lock{position:relative;}\n.lock.shut > .lock-body{filter:blur(7px);opacity:.55;user-select:none;pointer-events:none;}\n.lock-ov{position:absolute;inset:0;display:none;flex-direction:column;align-items:center;justify-content:center;\n  gap:10px;padding:20px;text-align:center;background:rgba(17,17,16,.55);}\n.lock.shut .lock-ov{display:flex;}\n.lock-ov p{font-size:12.5px;color:var(--white);font-weight:300;line-height:1.5;}\n.lock-ov p strong{font-weight:600;display:block;font-size:13.5px;margin-bottom:2px;}\n\n\/* ============================================================\n   BUTTONS\n============================================================ *\/\n.btn{font-family:var(--font);font-size:13.5px;font-weight:500;letter-spacing:.02em;padding:14px 26px;cursor:pointer;\n  border:1px solid transparent;border-radius:0;transition:background .15s,color .15s,border-color .15s;\n  display:inline-flex;align-items:center;justify-content:center;gap:8px;}\n.btn-p{background:var(--orange);color:var(--white);border-color:var(--orange);}\n.btn-p:hover{background:var(--orange-dk);border-color:var(--orange-dk);}\n.btn-s{background:transparent;color:var(--ink);border-color:var(--line);}\n.btn-s:hover{border-color:var(--ink);}\n.btn-g{background:transparent;color:var(--white);border-color:rgba(255,255,255,.35);}\n.btn-g:hover{background:var(--white);color:var(--ink);}\n.btn-full{width:100%;}\n.btn-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:22px;}\n.btn-row .btn-p{flex:1;}\n\n\/* ============================================================\n   BREAKDOWN (step 3)\n============================================================ *\/\n.sp{display:none;} .sp.on{display:block;}\n.br{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;padding:13px 0;\n  border-bottom:1px solid var(--line);font-size:14px;}\n.br:last-child{border-bottom:none;}\n.br .l{font-weight:300;color:var(--body);}\n.br .l small{display:block;font-size:11.5px;color:var(--grey);margin-top:3px;line-height:1.45;}\n.br .v{font-family:var(--display);font-weight:700;font-size:15px;color:var(--ink);white-space:nowrap;font-variant-numeric:tabular-nums;}\n.br.sub{background:var(--cream);padding:13px 14px;margin:4px 0;}\n.br.sub .l{font-weight:500;color:var(--ink);}\n.br.neg .v{color:var(--red);}\n.br.pos .v{color:var(--green);}\n.br.tot{background:var(--ink);padding:20px 18px;margin-top:12px;border:none;}\n.br.tot .l{color:var(--white);font-weight:500;font-size:15px;}\n.br.tot .v{color:var(--orange);font-size:26px;}\n\n\/* ============================================================\n   CTA + EXPLAINER\n============================================================ *\/\n.cta{background:var(--charcoal);color:var(--white);padding:38px var(--pad);margin-top:8px;\n  display:flex;gap:26px;align-items:center;justify-content:space-between;flex-wrap:wrap;}\n.cta h3{font-family:var(--display);font-size:24px;font-weight:700;letter-spacing:-.025em;color:var(--white);}\n.cta p{font-size:13.5px;font-weight:300;color:#d8d5d0;margin-top:7px;max-width:46ch;line-height:1.65;}\n.cta .acts{display:flex;gap:10px;flex-wrap:wrap;}\n.cta .btn-g{border-color:rgba(255,255,255,.75);color:var(--white);}\n.cta .btn-g:hover{background:var(--white);color:var(--charcoal);border-color:var(--white);}\n\n.explain{border-top:1px solid var(--line);padding:52px 0 72px;}\n.explain h2{font-family:var(--display);font-size:26px;font-weight:700;letter-spacing:-.028em;color:var(--ink);margin-bottom:24px;}\n.explain h4{font-family:var(--display);font-size:15px;font-weight:700;color:var(--ink);margin:26px 0 8px;}\n.explain p{font-size:14.5px;font-weight:300;line-height:1.8;margin-bottom:12px;max-width:74ch;}\n.explain strong{font-weight:500;color:var(--ink);}\n.explain a{color:var(--orange);text-decoration:none;border-bottom:1px solid var(--orange-ring);}\n.explain .cols{display:grid;grid-template-columns:1fr 1fr;gap:34px;}\n@media(max-width:800px){.explain .cols{grid-template-columns:1fr;gap:0;}}\n.explain p.disc{font-size:10.5px;color:var(--grey);line-height:1.65;padding-top:16px;border-top:1px solid var(--line);margin-top:30px;max-width:none;}\n\n@media print{\n  .steps,.btn,.btn-row,.cta,.lock-ov,.explain,.sp:not(.on){display:none!important;}\n  body{background:#fff;}\n  .ledger{position:static;}\n}\n<\/style>\n<\/head>\n<body>\n\n<!-- ==================== HERO ==================== -->\n<header class=\"hero\">\n  <div class=\"wrap\">\n    <h1><span class=\"ln ln-title\"><span class=\"ln-i\">Luxembourg selling cost calculator:<\/span><\/span><span class=\"ln ln-a\"><em>what you ask for<\/em><\/span><span class=\"ln ln-b\"><em>is not<\/em><\/span><span class=\"ln ln-c\"><em>what you keep.<\/em><\/span><\/h1>\n    <p class=\"lede\">Work out your agency commission, Luxembourg capital gains tax on property (plus-value immobili\u00e8re) and mortgage settlement in one pass \u2014 including who pays the notary fees when you sell \u2014 and see the figure that actually lands in your account on the day of the deed.<\/p>\n    <div class=\"hero-meta\">\n      <div><div class=\"k\">3\u20135%<\/div><div class=\"v\">Typical seller costs<\/div><\/div>\n      <div><div class=\"k\">0%<\/div><div class=\"v\">Tax on your main home<\/div><\/div>\n      <div><div class=\"k\">\u20ac100k<\/div><div class=\"v\">Allowance for a couple<\/div><\/div>\n      <div><div class=\"k\">2 min<\/div><div class=\"v\">To a full estimate<\/div><\/div>\n      <div><div class=\"k\">Buyer<\/div><div class=\"v\">Pays the notary fees<\/div><\/div>\n    <\/div>\n  <\/div>\n<\/header>\n\n<div class=\"wrap\">\n\n  <div class=\"steps\">\n    <div class=\"stp on\" data-s=\"1\"><span class=\"n\">01<\/span><span class=\"t\">Your sale<\/span><\/div>\n    <div class=\"stp\" data-s=\"2\"><span class=\"n\">02<\/span><span class=\"t\">Your details<\/span><\/div>\n    <div class=\"stp\" data-s=\"3\"><span class=\"n\">03<\/span><span class=\"t\">Full breakdown<\/span><\/div>\n  <\/div>\n\n  <div class=\"shell\">\n\n    <!-- ============ LEFT: INPUTS ============ -->\n    <div>\n\n      <!-- ---------- STEP 1 ---------- -->\n      <div class=\"sp on\" id=\"step1\">\n\n        <!-- THE SALE -->\n        <section class=\"panel\">\n          <div class=\"panel-hd\"><span class=\"idx\">A<\/span><h2>The sale<\/h2><p>What you expect to sign for<\/p><\/div>\n          <div class=\"panel-bd\">\n            <div class=\"row c2\">\n              <div class=\"f big\">\n                <label for=\"salePrice\">Expected sale price<\/label>\n                <div class=\"iw\"><span class=\"pre\">\u20ac<\/span><input class=\"inp\" type=\"text\" id=\"salePrice\" value=\"850.000\" inputmode=\"numeric\"><\/div>\n                <span class=\"err\" id=\"e_price\">Enter a sale price.<\/span>\n              <\/div>\n              <div class=\"f\">\n                <label for=\"saleDate\">Expected date of the deed <i class=\"tip\" tabindex=\"0\" data-t=\"The notarial deed date decides the tax year and the holding period \u2014 not the compromis date.\">?<\/i><\/label>\n                <input class=\"inp\" type=\"month\" id=\"saleDate\" value=\"2026-10\">\n                <span class=\"hint\">The <em>acte notari\u00e9<\/em>, not the compromis.<\/span>\n              <\/div>\n            <\/div>\n            <div class=\"row c2\">\n              <div class=\"f\">\n                <label>Property type<\/label>\n                <div class=\"seg\" id=\"pTypeSeg\">\n                  <div><input type=\"radio\" name=\"pType\" id=\"pt_apt\" value=\"apt\" checked><label for=\"pt_apt\">Apartment<\/label><\/div>\n                  <div><input type=\"radio\" name=\"pType\" id=\"pt_hse\" value=\"hse\"><label for=\"pt_hse\">House<\/label><\/div>\n                  <div><input type=\"radio\" name=\"pType\" id=\"pt_lnd\" value=\"lnd\"><label for=\"pt_lnd\">Land<\/label><\/div>\n                <\/div>\n              <\/div>\n              <div class=\"f\">\n                <label>Agency commission <i class=\"tip\" tabindex=\"0\" data-t=\"Commission is freely negotiated in Luxembourg \u2014 the 1972 scale lost its legal force in 2004. Market practice is 3% plus 17% VAT.\">?<\/i><\/label>\n                <div class=\"iw\"><input class=\"inp rs nopre\" type=\"number\" id=\"comPct\" value=\"3\" min=\"0\" max=\"8\" step=\"0.1\"><span class=\"suf\">% + VAT<\/span><\/div>\n                <span class=\"hint\" id=\"comHint\">= 3,51% including 17% VAT<\/span>\n              <\/div>\n            <\/div>\n          <\/div>\n        <\/section>\n\n        <!-- HOW YOU CAME TO OWN IT -->\n        <section class=\"panel\">\n          <div class=\"panel-hd\"><span class=\"idx\">B<\/span><h2>How you came to own it<\/h2><p>Drives the capital gains position<\/p><\/div>\n          <div class=\"panel-bd\">\n\n            <div class=\"row\">\n              <div class=\"f\">\n                <label>Is this your main home?<\/label>\n                <div class=\"seg\">\n                  <div><input type=\"radio\" name=\"useType\" id=\"u_now\" value=\"now\" checked><label for=\"u_now\">Yes \u2014 I live in it<\/label><\/div>\n                  <div><input type=\"radio\" name=\"useType\" id=\"u_moved\" value=\"moved\"><label for=\"u_moved\">I moved out recently<\/label><\/div>\n                  <div><input type=\"radio\" name=\"useType\" id=\"u_no\" value=\"no\"><label for=\"u_no\">No \u2014 rented or 2nd home<\/label><\/div>\n                <\/div>\n              <\/div>\n            <\/div>\n\n            <div class=\"cond\" id=\"movedBox\">\n              <div class=\"note\"><strong>Still treated as your main home if<\/strong> the deed is signed no later than 31 December of the year following your move \u2014 or, later than that, if you occupied it from the start, own no other home, and left for family or work reasons.<\/div>\n              <div class=\"row\" style=\"margin-top:16px;\">\n                <div class=\"f\">\n                  <label>Does one of those apply?<\/label>\n                  <div class=\"seg\">\n                    <div><input type=\"radio\" name=\"movedOk\" id=\"mv_y\" value=\"yes\" checked><label for=\"mv_y\">Yes<\/label><\/div>\n                    <div><input type=\"radio\" name=\"movedOk\" id=\"mv_n\" value=\"no\"><label for=\"mv_n\">No \/ not sure<\/label><\/div>\n                  <\/div>\n                <\/div>\n              <\/div>\n            <\/div>\n\n            <div class=\"cond\" id=\"gainBox\">\n              <hr class=\"rule\">\n              <div class=\"row c3\">\n                <div class=\"f\">\n                  <label for=\"buyDate\">Date of purchase <i class=\"tip\" tabindex=\"0\" data-t=\"Or the completion date if you built. This sets both the holding period and the revaluation coefficient.\">?<\/i><\/label>\n                  <input class=\"inp\" type=\"month\" id=\"buyDate\" value=\"2014-06\">\n                <\/div>\n                <div class=\"f\">\n                  <label for=\"buyPrice\">Purchase price<\/label>\n                  <div class=\"iw\"><span class=\"pre\">\u20ac<\/span><input class=\"inp\" type=\"text\" id=\"buyPrice\" value=\"520.000\" inputmode=\"numeric\"><\/div>\n                <\/div>\n                <div class=\"f\">\n                  <label for=\"buyCosts\">Costs paid then <i class=\"tip\" tabindex=\"0\" data-t=\"Registration duty, transcription duty and notary fees you paid on the purchase. They form part of your acquisition price and are revalued with it.\">?<\/i><\/label>\n                  <div class=\"iw\"><span class=\"pre\">\u20ac<\/span><input class=\"inp\" type=\"text\" id=\"buyCosts\" value=\"36.400\" inputmode=\"numeric\"><\/div>\n                <\/div>\n              <\/div>\n              <div class=\"row c3\">\n                <div class=\"f\">\n                  <label for=\"impAmt\">Improvements since <i class=\"tip\" tabindex=\"0\" data-t=\"Works that significantly raised the value or changed the nature of the property \u2014 an extension, an attic conversion, a full renovation. Not repainting or routine maintenance.\">?<\/i><\/label>\n                  <div class=\"iw\"><span class=\"pre\">\u20ac<\/span><input class=\"inp\" type=\"text\" id=\"impAmt\" value=\"0\" inputmode=\"numeric\"><\/div>\n                <\/div>\n                <div class=\"f\">\n                  <label for=\"impYear\">Year of the works<\/label>\n                  <select class=\"sel\" id=\"impYear\"><\/select>\n                <\/div>\n                <div class=\"f\">\n                  <label>Acquired by inheritance? <i class=\"tip\" tabindex=\"0\" data-t=\"A direct-line inheritance of what was your parents' main home carries an extra allowance of up to \u20ac75.000 (art. 130(5) LIR). The purchase price used is the one your parents last paid.\">?<\/i><\/label>\n                  <div class=\"seg\">\n                    <div><input type=\"radio\" name=\"inher\" id=\"in_n\" value=\"no\" checked><label for=\"in_n\">No<\/label><\/div>\n                    <div><input type=\"radio\" name=\"inher\" id=\"in_y\" value=\"yes\"><label for=\"in_y\">Direct line<\/label><\/div>\n                  <\/div>\n                <\/div>\n              <\/div>\n\n              <hr class=\"rule\">\n\n              <div class=\"row c3\">\n                <div class=\"f\">\n                  <label>Tax situation<\/label>\n                  <div class=\"seg\">\n                    <div><input type=\"radio\" name=\"joint\" id=\"j_s\" value=\"single\" checked><label for=\"j_s\">Single<\/label><\/div>\n                    <div><input type=\"radio\" name=\"joint\" id=\"j_c\" value=\"joint\"><label for=\"j_c\">Joint<\/label><\/div>\n                  <\/div>\n                  <span class=\"hint\">Married or PACS taxed jointly doubles the allowance.<\/span>\n                <\/div>\n                <div class=\"f\">\n                  <label for=\"usedAllow\">Allowance already used <i class=\"tip\" tabindex=\"0\" data-t=\"The \u20ac50.000 \/ \u20ac100.000 allowance runs over a rolling 10 years. Anything you claimed on a disposal in the last decade reduces what is left.\">?<\/i><\/label>\n                  <div class=\"iw\"><span class=\"pre\">\u20ac<\/span><input class=\"inp\" type=\"text\" id=\"usedAllow\" value=\"0\" inputmode=\"numeric\"><\/div>\n                  <span class=\"hint\">In the last 10 years. Leave at 0 if none.<\/span>\n                <\/div>\n                <div class=\"f\">\n                  <label for=\"incBand\">Household income <i class=\"tip\" tabindex=\"0\" data-t=\"The rate on a long-held property is half of your overall (average) tax rate, capped at 21%. Pick a band, or leave it at maximum for the safest estimate.\">?<\/i><\/label>\n                  <select class=\"sel\" id=\"incBand\">\n                    <option value=\"max\" selected>Assume maximum (safest)<\/option>\n                    <option value=\"b1\">Under \u20ac50.000<\/option>\n                    <option value=\"b2\">\u20ac50.000 \u2013 \u20ac100.000<\/option>\n                    <option value=\"b3\">\u20ac100.000 \u2013 \u20ac175.000<\/option>\n                    <option value=\"b4\">Over \u20ac175.000<\/option>\n                  <\/select>\n                <\/div>\n              <\/div>\n            <\/div>\n\n            <div class=\"cond\" id=\"exemptBox\">\n              <div class=\"note good\"><strong>No capital gains tax.<\/strong> The sale of your main residence is exempt from income tax under art. 102bis LIR, whatever the gain and however long you have owned it. You still have to declare the sale to the ACD.<\/div>\n            <\/div>\n          <\/div>\n        <\/section>\n\n        <!-- THE LOAN -->\n        <section class=\"panel\">\n          <div class=\"panel-hd\"><span class=\"idx\">C<\/span><h2>Your loan and the paperwork<\/h2><p>Settled on the day of the deed<\/p><\/div>\n          <div class=\"panel-bd\">\n            <div class=\"row c2\">\n              <div class=\"f\">\n                <label for=\"loanBal\">Capital still owed <i class=\"tip\" tabindex=\"0\" data-t=\"The outstanding balance the notary will settle out of the sale proceeds before paying you.\">?<\/i><\/label>\n                <div class=\"iw\"><span class=\"pre\">\u20ac<\/span><input class=\"inp\" type=\"text\" id=\"loanBal\" value=\"290.000\" inputmode=\"numeric\"><\/div>\n                <span class=\"hint\">Enter 0 if the property is unencumbered.<\/span>\n              <\/div>\n              <div class=\"f\">\n                <label>Loan type<\/label>\n                <div class=\"seg\">\n                  <div><input type=\"radio\" name=\"loanType\" id=\"lt_f\" value=\"fixed\" checked><label for=\"lt_f\">Fixed rate<\/label><\/div>\n                  <div><input type=\"radio\" name=\"loanType\" id=\"lt_v\" value=\"var\"><label for=\"lt_v\">Variable rate<\/label><\/div>\n                <\/div>\n              <\/div>\n            <\/div>\n            <div class=\"cond on\" id=\"loanBox\">\n              <div class=\"row c3\">\n                <div class=\"f\">\n                  <label for=\"loanRate\">Your loan rate<\/label>\n                  <div class=\"iw\"><input class=\"inp rs nopre\" type=\"number\" id=\"loanRate\" value=\"2.2\" min=\"0\" max=\"12\" step=\"0.05\"><span class=\"suf\">%<\/span><\/div>\n                <\/div>\n                <div class=\"f\">\n                  <label for=\"mainlevee\">Mortgage release <i class=\"tip\" tabindex=\"0\" data-t=\"The mainlev\u00e9e: a notarial deed cancelling the mortgage registration. Ask your notary for a quote \u2014 it depends on the sum originally registered.\">?<\/i><\/label>\n                  <div class=\"iw\"><span class=\"pre\">\u20ac<\/span><input class=\"inp\" type=\"text\" id=\"mainlevee\" value=\"900\" inputmode=\"numeric\"><\/div>\n                <\/div>\n                <div class=\"f\">\n                  <label for=\"epc\">Energy certificate <i class=\"tip\" tabindex=\"0\" data-t=\"The CPE \/ Energiepass is compulsory before you advertise a home for sale and is valid ten years. Not required for building land.\">?<\/i><\/label>\n                  <div class=\"iw\"><span class=\"pre\">\u20ac<\/span><input class=\"inp\" type=\"text\" id=\"epc\" value=\"250\" inputmode=\"numeric\"><\/div>\n                <\/div>\n              <\/div>\n              <div class=\"cond\" id=\"penWarn\" style=\"margin-top:4px;\">\n                <div class=\"note\"><strong>Above the \u20ac450.000 cap.<\/strong> The six-month ceiling only protects the first \u20ac450.000 you repay early. On the balance above that, your bank may charge its full reinvestment loss, which can be several times higher. Ask for a written settlement figure before you sign the compromis.<\/div>\n              <\/div>\n              <div class=\"cond\" id=\"penWarn2\" style=\"margin-top:4px;\">\n                <div class=\"note\"><strong>The cap may not apply.<\/strong> The six-month ceiling only applies where the loan financed a home you occupied as your effective main residence for at least two uninterrupted years. On a rental or second home your bank can charge its full reinvestment loss.<\/div>\n              <\/div>\n            <\/div>\n            <hr class=\"rule\">\n            <div class=\"row c2\">\n              <div class=\"f\">\n                <label for=\"prepCost\">Getting it ready <i class=\"tip\" tabindex=\"0\" data-t=\"Anything you spend before listing: repairs, decluttering, professional photography, home staging, a co-ownership document pack.\">?<\/i><\/label>\n                <div class=\"iw\"><span class=\"pre\">\u20ac<\/span><input class=\"inp\" type=\"text\" id=\"prepCost\" value=\"0\" inputmode=\"numeric\"><\/div>\n              <\/div>\n              <div class=\"f\">\n                <label for=\"otherCost\">Other seller costs<\/label>\n                <div class=\"iw\"><span class=\"pre\">\u20ac<\/span><input class=\"inp\" type=\"text\" id=\"otherCost\" value=\"0\" inputmode=\"numeric\"><\/div>\n                <span class=\"hint\">Syndic documents, surveyor, certificates.<\/span>\n              <\/div>\n            <\/div>\n            <button class=\"btn btn-p btn-full\" id=\"btn1\" style=\"margin-top:22px;\">Unlock the full breakdown \u2192<\/button>\n          <\/div>\n        <\/section>\n      <\/div>\n\n      <!-- ---------- STEP 2: LEAD GATE ---------- -->\n      <div class=\"sp\" id=\"step2\">\n        <section class=\"panel\">\n          <div class=\"panel-hd\"><span class=\"idx\">A<\/span><h2>Where should we send it?<\/h2><p>GDPR-compliant \u00b7 no third parties<\/p><\/div>\n          <div class=\"panel-bd\">\n            <div class=\"row c2\">\n              <div class=\"f\"><label for=\"fName\">First name<\/label><input class=\"inp\" type=\"text\" id=\"fName\" placeholder=\"First name\"><span class=\"err\" id=\"e_fn\">Required.<\/span><\/div>\n              <div class=\"f\"><label for=\"lName\">Last name<\/label><input class=\"inp\" type=\"text\" id=\"lName\" placeholder=\"Last name\"><span class=\"err\" id=\"e_ln\">Required.<\/span><\/div>\n              <div class=\"f\"><label for=\"uEmail\">Email<\/label><input class=\"inp\" type=\"email\" id=\"uEmail\" placeholder=\"you@email.com\"><span class=\"err\" id=\"e_em\">Enter a valid email address.<\/span><\/div>\n              <div class=\"f\"><label for=\"uPhone\">Phone<\/label><input class=\"inp\" type=\"tel\" id=\"uPhone\" placeholder=\"+352 000 000 000\"><\/div>\n            <\/div>\n            <div class=\"row\">\n              <div class=\"f\">\n                <label for=\"village\">Where is the property?<\/label>\n                <select class=\"sel\" id=\"village\">\n                  <option value=\"\">Select a commune\u2026<\/option>\n                  <option>Howald<\/option><option>Alzingen<\/option><option>Itzig<\/option>\n                  <option>Fentange<\/option><option>Hesperange village<\/option>\n                  <option>Elsewhere in Luxembourg<\/option>\n                <\/select>\n              <\/div>\n            <\/div>\n            <div style=\"display:flex;gap:11px;align-items:flex-start;margin-top:20px;\">\n              <input type=\"checkbox\" id=\"gdpr\" style=\"width:18px;height:18px;margin-top:2px;flex-shrink:0;accent-color:#FF5C0B;\">\n              <label for=\"gdpr\" style=\"font-size:12.5px;font-weight:300;line-height:1.6;cursor:pointer;\">Store my details so zeas.immo can send me this estimate and follow up about selling my property.<\/label>\n            <\/div>\n            <span class=\"err\" id=\"e_gdpr\">Please tick to continue.<\/span>\n            <div class=\"btn-row\">\n              <button class=\"btn btn-s\" id=\"back1\">\u2190 Edit figures<\/button>\n              <button class=\"btn btn-p\" id=\"btn2\">Show my breakdown \u2192<\/button>\n            <\/div>\n          <\/div>\n        <\/section>\n      <\/div>\n\n      <!-- ---------- STEP 3: BREAKDOWN ---------- -->\n      <div class=\"sp\" id=\"step3\">\n\n        <section class=\"panel\">\n          <div class=\"panel-hd\"><span class=\"idx\">A<\/span><h2>Cost of selling<\/h2><p>Paid on or before the deed<\/p><\/div>\n          <div class=\"panel-bd\">\n            <div class=\"br\"><span class=\"l\">Agency commission<small id=\"b_comLbl\"><\/small><\/span><span class=\"v\" id=\"b_com\">\u2014<\/span><\/div>\n            <div class=\"br\" id=\"b_mlRow\"><span class=\"l\">Mortgage release (mainlev\u00e9e)<small>Notarial deed cancelling the mortgage registration<\/small><\/span><span class=\"v\" id=\"b_ml\">\u2014<\/span><\/div>\n            <div class=\"br\" id=\"b_penRow\"><span class=\"l\">Early repayment indemnity<small id=\"b_penLbl\"><\/small><\/span><span class=\"v\" id=\"b_pen\">\u2014<\/span><\/div>\n            <div class=\"br\" id=\"b_epcRow\"><span class=\"l\">Energy performance certificate<small>Compulsory before listing \u00b7 valid 10 years<\/small><\/span><span class=\"v\" id=\"b_epc\">\u2014<\/span><\/div>\n            <div class=\"br\" id=\"b_prepRow\"><span class=\"l\">Preparation and presentation<small>Repairs, photography, staging<\/small><\/span><span class=\"v\" id=\"b_prep\">\u2014<\/span><\/div>\n            <div class=\"br\" id=\"b_othRow\"><span class=\"l\">Other seller costs<\/span><span class=\"v\" id=\"b_oth\">\u2014<\/span><\/div>\n            <div class=\"br sub\"><span class=\"l\">Total selling costs<\/span><span class=\"v\" id=\"b_costs\">\u2014<\/span><\/div>\n          <\/div>\n        <\/section>\n\n        <section class=\"panel\">\n          <div class=\"panel-hd\"><span class=\"idx\">B<\/span><h2 id=\"b_cgTitle\">Capital gains<\/h2><p id=\"b_cgSub\"><\/p><\/div>\n          <div class=\"panel-bd\" id=\"b_cgBody\"><\/div>\n        <\/section>\n\n        <section class=\"panel\">\n          <div class=\"panel-hd\"><span class=\"idx\">C<\/span><h2>What reaches your account<\/h2><p>On the day of the deed<\/p><\/div>\n          <div class=\"panel-bd\">\n            <div class=\"br\"><span class=\"l\">Sale price<\/span><span class=\"v\" id=\"b_price\">\u2014<\/span><\/div>\n            <div class=\"br neg\"><span class=\"l\">Less selling costs<\/span><span class=\"v\" id=\"b_costs2\">\u2014<\/span><\/div>\n            <div class=\"br neg\"><span class=\"l\">Less capital gains tax<\/span><span class=\"v\" id=\"b_tax2\">\u2014<\/span><\/div>\n            <div class=\"br sub\"><span class=\"l\">Net proceeds before loan repayment<\/span><span class=\"v\" id=\"b_netPre\">\u2014<\/span><\/div>\n            <div class=\"br neg\"><span class=\"l\">Less capital repaid to your bank<\/span><span class=\"v\" id=\"b_loan2\">\u2014<\/span><\/div>\n            <div class=\"br tot\"><span class=\"l\">In your account<\/span><span class=\"v\" id=\"b_final\">\u2014<\/span><\/div>\n          <\/div>\n        <\/section>\n\n        <div class=\"btn-row\">\n          <button class=\"btn btn-s\" id=\"back2\">\u2190 Edit figures<\/button>\n          <button class=\"btn btn-s\" id=\"btnPrint\">Save as PDF<\/button>\n          <button class=\"btn btn-p\" id=\"btnEmail\">Email me this estimate<\/button>\n        <\/div>\n      <\/div>\n\n    <\/div>\n\n    <!-- ============ RIGHT: LIVE LEDGER ============ -->\n    <aside>\n      <div class=\"ledger\">\n        <div class=\"led-hd\">\n          <div class=\"eyebrow\">Live estimate<\/div>\n          <h3>Your settlement<\/h3>\n        <\/div>\n        <div class=\"led-bd\">\n          <div class=\"lr head\"><span class=\"l\">Sale price<\/span><span class=\"v\" id=\"l_price\">\u2014<\/span><\/div>\n          <div class=\"lr minus\"><span class=\"l\">Agency commission<b id=\"l_comSub\">3% + 17% VAT<\/b><\/span><span class=\"v\" id=\"l_com\">\u2014<\/span><\/div>\n          <div class=\"lr minus\" id=\"l_taxRow\"><span class=\"l\">Capital gains tax<b id=\"l_taxSub\">\u2014<\/b><\/span><span class=\"v\" id=\"l_tax\">\u2014<\/span><\/div>\n          <div class=\"lr minus\" id=\"l_othRow\"><span class=\"l\">Release, certificate, other<b id=\"l_othSub\">\u2014<\/b><\/span><span class=\"v\" id=\"l_oth\">\u2014<\/span><\/div>\n          <div class=\"lr minus\" id=\"l_loanRow\"><span class=\"l\">Capital repaid to your bank<b>Settled by the notary<\/b><\/span><span class=\"v\" id=\"l_loan\">\u2014<\/span><\/div>\n        <\/div>\n\n        <div class=\"lock shut\" id=\"lockZone\">\n          <div class=\"lock-body\">\n            <div class=\"led-tot\">\n              <div class=\"k\">In your account<\/div>\n              <div class=\"n\" id=\"l_final\">\u20ac 000.000<\/div>\n              <div class=\"s\" id=\"l_pct\">\u2014<\/div>\n            <\/div>\n            <div class=\"bar-wrap\">\n              <div class=\"bar\">\n                <span class=\"s-net\" id=\"bar_net\" style=\"width:60%\"><\/span>\n                <span class=\"s-loan\" id=\"bar_loan\" style=\"width:20%\"><\/span>\n                <span class=\"s-com\" id=\"bar_com\" style=\"width:10%\"><\/span>\n                <span class=\"s-tax\" id=\"bar_tax\" style=\"width:5%\"><\/span>\n                <span class=\"s-oth\" id=\"bar_oth\" style=\"width:5%\"><\/span>\n              <\/div>\n              <div class=\"bar-key\">\n                <i class=\"k-net\">Yours<\/i><i class=\"k-loan\">Bank<\/i><i class=\"k-com\">Commission<\/i><i class=\"k-tax\">Tax<\/i><i class=\"k-oth\">Other<\/i>\n              <\/div>\n            <\/div>\n          <\/div>\n          <div class=\"lock-ov\">\n            <svg width=\"26\" height=\"26\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#FF5C0B\" stroke-width=\"1.5\"><rect x=\"3\" y=\"11\" width=\"18\" height=\"11\"\/><path d=\"M7 11V7a5 5 0 0110 0v4\"\/><\/svg>\n            <p><strong>Two fields away<\/strong>Add your contact details to reveal your net proceeds.<\/p>\n            <button class=\"btn btn-g\" id=\"btnUnlock\" style=\"padding:10px 20px;font-size:12.5px;\">Unlock<\/button>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/aside>\n\n  <\/div>\n<\/div>\n\n<!-- ==================== CTA ==================== -->\n<section class=\"cta\">\n  <div>\n    <h3>One mandate per village.<\/h3>\n    <p>We take a single seller mandate in each of Howald, Alzingen, Itzig, Fentange and Hesperange \u2014 so your property is never competing with our own listings. Start with a free, no-obligation valuation.<\/p>\n  <\/div>\n  <div class=\"acts\">\n    <a class=\"btn btn-p\" href=\"https:\/\/www.cal.eu\/zeasimmo\" target=\"_blank\" rel=\"noopener\">Book a free valuation<\/a>\n    <a class=\"btn btn-g\" href=\"mailto:selling@zeas.immo\">Get in touch<\/a>\n  <\/div>\n<\/section>\n\n<!-- ==================== EXPLAINER ==================== -->\n<div class=\"wrap\">\n  <section class=\"explain\">\n    <h2>How selling costs work in Luxembourg<\/h2>\n    <div class=\"cols\">\n      <div>\n        <p>Selling a house in Luxembourg is cheaper than buying one, because the heavy transfer taxes \u2014 the 6% registration duty, the 1% transcription duty, the notary's fee on the deed \u2014 are all the buyer's to pay. As a seller you are left with three things: your agent, your bank, and possibly the tax office.<\/p>\n\n        <h4>Agency commission<\/h4>\n        <p>Commission has been freely negotiable since the 1972 scale lost its legal force under the 2004 competition law. Market practice settled around <strong>3% plus 17% VAT<\/strong>, so 3,51% of the price. It falls due when the notarial deed is signed, not at the compromis.<\/p>\n\n        <h4>Capital gains tax on your main home<\/h4>\n        <p>If you are selling the home you actually live in, the gain is <strong>exempt from income tax<\/strong> under article 102bis LIR \u2014 with no ceiling and no minimum holding period. The exemption survives a move, provided the deed is signed by 31 December of the year after you left. Later than that, it still holds if you occupied the property from the day you acquired it, own no other home, and left for family or professional reasons.<\/p>\n\n        <h4>Capital gains tax on a rental or second home<\/h4>\n        <p>On a rental property, a second home or land, the treatment turns on <strong>five years<\/strong>. Sell within five years of buying and the gain is a <em>speculation profit<\/em>: it is added to your other income and taxed at your ordinary marginal rate, up to about 45,8% once the employment fund surcharge is counted, with no allowance. Sell after five years and it becomes a <em>transfer profit<\/em>, taxed at <strong>half your overall rate, capped at 21%<\/strong>.<\/p>\n        <p>The quarter-rate window that ran from January 2024 has closed. It covered deeds signed up to 30 June 2025, with a short extension to 30 September 2025 for compromis registered by the June deadline.<\/p>\n      <\/div>\n      <div>\n        <h4>Your purchase price is revalued first<\/h4>\n        <p>This is the part most calculators skip, and it usually matters more than the rate. On a transfer profit the price you originally paid \u2014 <em>and<\/em> the notary costs you paid then, <em>and<\/em> any major works since \u2014 are multiplied by an official coefficient for the year the money was spent, so that pure inflation is not taxed as profit. A 2010 purchase is revalued by 1,26; a 2001 purchase by 1,52. Gains that look large in cash terms often shrink substantially, and sometimes disappear.<\/p>\n\n        <h4>Then the allowances<\/h4>\n        <p>What is left is reduced by the <strong>decennial allowance<\/strong>: \u20ac50.000 per person, \u20ac100.000 for spouses or partners taxed jointly, over any rolling ten-year period. If the property came to you by direct-line inheritance and was your parents' main home, a further allowance of up to \u20ac75.000 applies first.<\/p>\n\n        <h4>Mortgage penalty when you sell<\/h4>\n        <p>If a mortgage is registered against the property, the notary settles the outstanding capital out of the sale proceeds and registers a <em>mainlev\u00e9e<\/em> to clear the charge. On a fixed-rate loan the bank may also charge an early repayment indemnity. Where the loan financed a home you occupied as your main residence for at least two uninterrupted years, that indemnity is capped at <strong>six months' interest on the capital repaid<\/strong> \u2014 but only on the first \u20ac450.000, and not at all on a rental property or second home. Variable-rate loans are normally repaid free of charge.<\/p>\n\n        <h4>Before you list<\/h4>\n        <p>An energy performance certificate is compulsory before a home is advertised and is valid for ten years. For an apartment you will also need a document pack from the syndic.<\/p>\n      <\/div>\n    <\/div>\n\n    <h2 style=\"margin-top:44px;\">Frequently asked questions<\/h2>\n    <div class=\"cols\">\n      <div>\n        <h4>Who pays the notary fees when selling a house in Luxembourg?<\/h4>\n        <p>The buyer does. Registration duty, transcription duty and the notary's own fee on the deed are all charged to the buyer, not the seller. As the seller, your notary-side cost is usually limited to releasing your mortgage if one is registered \u2014 the <em>mainlev\u00e9e<\/em> \u2014 which is a few hundred euros, not a percentage of the price.<\/p>\n\n        <h4>Do I pay capital gains tax when I sell my house in Luxembourg?<\/h4>\n        <p>Only if it isn't your main home. Selling the home you actually live in is exempt from income tax, with no cap on the amount and no minimum ownership period. A rental property, a second home or land is taxable, but the rate and the deductions depend heavily on how long you've owned it and what you paid \u2014 see the two sections above.<\/p>\n\n        <h4>Is there still a reduced quarter-rate for capital gains?<\/h4>\n        <p>No, not any more. A temporary measure taxed transfer profits at a quarter of the overall rate (up to 10,5%) for deeds signed between January 2024 and 30 June 2025, with a short extension to 30 September 2025 for sales already under compromis. That window closed. Deeds signed since then are taxed at up to half the overall rate (up to 21%). If you see 10,5% or a two-year threshold quoted as current, it's describing that expired rule.<\/p>\n      <\/div>\n      <div>\n        <h4>How much is the agency commission when selling in Luxembourg?<\/h4>\n        <p>There's no legal cap \u2014 the old 1972 scale lost its force in 2004 \u2014 so it's a matter of negotiation. In practice, most agencies charge around 3% of the sale price plus 17% VAT, roughly 3,51% all-in. It's due once the deed is signed, not at the compromis, and it's the seller who owes it since the seller is the one who signs the mandate.<\/p>\n\n        <h4>What happens to my mortgage when I sell?<\/h4>\n        <p>The notary settles your outstanding capital directly from the sale proceeds and registers a mainlev\u00e9e to clear the mortgage. If your loan is on a fixed rate, the bank can also charge an early repayment indemnity \u2014 capped at six months' interest on the first \u20ac450.000 repaid, but only if the loan financed your main residence for at least two years. On a second home, rental property, or a variable-rate loan, different rules apply \u2014 see the mortgage section above.<\/p>\n\n        <h4>How much will I actually receive after the sale?<\/h4>\n        <p>Sale price, minus your agency commission, minus any capital gains tax, minus the capital still owed to your bank, minus small items like the mortgage release and energy certificate. That final figure \u2014 not the sale price on the sign \u2014 is what lands in your account, and it's exactly what the calculator above works out for your numbers.<\/p>\n      <\/div>\n    <\/div>\n\n    <p class=\"disc\">This calculator gives an indicative estimate for private individuals selling property held in their private estate. It is not tax or legal advice. Your actual capital gains position depends on your full income, allowances already claimed and the exact dates on the deeds \u2014 only the Administration des contributions directes can settle it. Revaluation coefficients are taken from the ACD's mod\u00e8le 700 and are reviewed periodically. Confirm your loan settlement figure with your bank and your deed costs with your notary before committing to a price.<\/p>\n  <\/section>\n<\/div>\n\n<script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Who pays the notary fees when selling a house in Luxembourg?\",\n      \"acceptedAnswer\": { \"@type\": \"Answer\", \"text\": \"The buyer pays the notary fees, including registration duty and transcription duty. The seller's notary-side cost is usually limited to releasing the mortgage if one is registered, which is a small fixed amount rather than a percentage of the price.\" }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Do I pay capital gains tax when I sell my house in Luxembourg?\",\n      \"acceptedAnswer\": { \"@type\": \"Answer\", \"text\": \"Selling your main home is exempt from income tax with no cap and no minimum ownership period. A rental property, second home or land is taxable, at a rate that depends on how long you have owned it.\" }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Is there still a reduced quarter-rate for capital gains in Luxembourg?\",\n      \"acceptedAnswer\": { \"@type\": \"Answer\", \"text\": \"No. The temporary quarter-rate measure applied only to deeds signed between January 2024 and 30 June 2025 (extended to 30 September 2025 for sales already under compromis). It has since ended; the maximum rate on a long-held property is now up to 21%, half the overall rate.\" }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"How much is the agency commission when selling in Luxembourg?\",\n      \"acceptedAnswer\": { \"@type\": \"Answer\", \"text\": \"There is no legal cap on commission. Market practice is around 3% of the sale price plus 17% VAT, roughly 3.51% all-in, due once the notarial deed is signed.\" }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"What happens to my mortgage when I sell my property in Luxembourg?\",\n      \"acceptedAnswer\": { \"@type\": \"Answer\", \"text\": \"The notary settles the outstanding capital from the sale proceeds and registers a mortgage release. On a fixed-rate loan financing a main residence held at least two years, any early repayment indemnity is capped at six months' interest on the first \u20ac450,000 repaid.\" }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"How much will I actually receive after selling my property in Luxembourg?\",\n      \"acceptedAnswer\": { \"@type\": \"Answer\", \"text\": \"Net proceeds equal the sale price minus agency commission, any capital gains tax, the outstanding mortgage capital, and small closing costs such as the mortgage release and energy certificate.\" }\n    }\n  ]\n}\n<\/script>\n\n<script>\n\/* ============================================================\n   ZEAS SELLING COST CALCULATOR \u2014 engine\n============================================================ *\/\nconst $ = id => document.getElementById(id);\nconst eur = n => '\u20ac ' + Math.round(n).toLocaleString('de-DE');\nconst radio = n => { const c = document.querySelector('input[name=\"'+n+'\"]:checked'); return c ? c.value : ''; };\nconst on  = (id,s) => { const e=$(id); if(e) e.classList.toggle('on', !!s); };\nconst show= (id,s) => { const e=$(id); if(e) e.style.display = s ? '' : 'none'; };\n\n\/* ---- official revaluation coefficients, art. 102(6) LIR ----\n   Source: ACD mod\u00e8le 700 (identical in the 2024 and 2025 forms).\n   Re-check against the current mod\u00e8le 700 each tax year.          *\/\nconst COEF = {\n  1962:7.15,1963:6.95,1964:6.74,1965:6.52,1966:6.36,1967:6.21,1968:6.02,1969:5.89,\n  1970:5.62,1971:5.37,1972:5.11,1973:4.82,1974:4.40,1975:3.97,1976:3.62,1977:3.39,\n  1978:3.29,1979:3.14,1980:2.96,1981:2.74,1982:2.50,1983:2.30,1984:2.18,1985:2.12,\n  1986:2.11,1987:2.11,1988:2.08,1989:2.01,1990:1.94,1991:1.88,1992:1.82,1993:1.76,\n  1994:1.72,1995:1.69,1996:1.67,1997:1.64,1998:1.63,1999:1.61,2000:1.56,2001:1.52,\n  2002:1.49,2003:1.46,2004:1.43,2005:1.40,2006:1.36,2007:1.33,2008:1.29,2009:1.28,\n  2010:1.26,2011:1.22,2012:1.18,2013:1.16,2014:1.16,2015:1.15,2016:1.15,2017:1.13,\n  2018:1.11,2019:1.09,2020:1.09,2021:1.06\n};\nconst coef = y => y <= 1962 ? 7.15 : (y >= 2022 ? 1.00 : (COEF[y] || 1.00));\n\n\/* ---- rate assumptions ---- *\/\nconst FUND = 1.09;   \/\/ employment fund surcharge, top band\nconst DEP  = 0.014;  \/\/ dependency contribution\nconst BANDS = {                       \/\/ { marginal, global } \u2014 indicative\n  max:{m:0.42,g:0.42}, b1:{m:0.30,g:0.15},\n  b2:{m:0.39,g:0.24},  b3:{m:0.42,g:0.31}, b4:{m:0.42,g:0.38}\n};\n\n\/* ---- thousand separators on text money fields ---- *\/\n['salePrice','buyPrice','buyCosts','impAmt','usedAllow','loanBal','mainlevee','epc','prepCost','otherCost']\n.forEach(id => {\n  const el = $(id); if(!el) return;\n  el.addEventListener('input', () => {\n    const raw = el.value.replace(\/[^\\d]\/g,'');\n    el.value = raw ? parseInt(raw,10).toLocaleString('de-DE') : '';\n    calc();\n  });\n});\nconst val = id => { const e=$(id); return e ? (parseFloat(String(e.value).replace(\/\\.\/g,'').replace(',','.')) || 0) : 0; };\n\n\/* ---- improvement-year select ---- *\/\n(function(){\n  const s = $('impYear'); const now = new Date().getFullYear();\n  for(let y=now; y>=1970; y--){ const o=document.createElement('option'); o.value=y; o.textContent=y; s.appendChild(o); }\n  s.value = now - 3;\n})();\n\n\/* ---- conditional visibility ---- *\/\nfunction conds(){\n  const u = radio('useType');\n  const exempt = (u === 'now') || (u === 'moved' && radio('movedOk') === 'yes');\n  on('movedBox', u === 'moved');\n  on('gainBox', !exempt);\n  on('exemptBox', exempt);\n  on('loanBox', val('loanBal') > 0);\n  const isLand = radio('pType') === 'lnd';\n  if(isLand && $('epc').value !== '0') $('epc').value = '0';\n  return exempt;\n}\ndocument.querySelectorAll('input[type=radio], select').forEach(el => el.addEventListener('change', calc));\n['comPct','loanRate','saleDate','buyDate'].forEach(id => $(id).addEventListener('input', calc));\n\n\/* ============================================================\n   ENGINE\n============================================================ *\/\nlet C = {};\nfunction calc(){\n  const exempt = conds();\n\n  const price   = val('salePrice');\n  const comPct  = (parseFloat($('comPct').value) || 0) \/ 100;\n  const commission = price * comPct * 1.17;\n  $('comHint').textContent = '= ' + (comPct*117).toFixed(2).replace('.',',') + '% including 17% VAT';\n  $('l_comSub').textContent = (comPct*100).toFixed(1).replace('.',',') + '% + 17% VAT';\n\n  \/* ---------- capital gains ---------- *\/\n  const saleY = parseInt(($('saleDate').value || '2026-01').slice(0,4), 10);\n  const buyY  = parseInt(($('buyDate').value  || '2015-01').slice(0,4), 10);\n  const months = (saleY - buyY) * 12 +\n    (parseInt(($('saleDate').value||'2026-01').slice(5,7),10) - parseInt(($('buyDate').value||'2015-01').slice(5,7),10));\n  const heldYears = months \/ 12;\n  const speculative = heldYears <= 5;\n\n  const buyPrice = val('buyPrice'), buyCosts = val('buyCosts');\n  const impAmt = val('impAmt'), impYear = parseInt($('impYear').value,10);\n  const joint = radio('joint') === 'joint';\n  const band = BANDS[$('incBand').value] || BANDS.max;\n\n  let g = {\n    exempt, speculative, heldYears,\n    coefBuy: 1, coefImp: 1, base: 0, gross: 0,\n    allowInher: 0, allowDec: 0, taxable: 0, rate: 0, tax: 0, dep: 0, total: 0\n  };\n\n  if(!exempt){\n    g.coefBuy = speculative ? 1 : coef(buyY);\n    g.coefImp = speculative ? 1 : coef(impYear);\n    g.base  = (buyPrice + buyCosts) * g.coefBuy + impAmt * g.coefImp;\n    \/\/ selling costs directly linked to the disposal reduce the gain (frais d'obtention)\n    g.gross = Math.max(0, price - commission - g.base);\n\n    if(!speculative && g.gross > 0){\n      if(radio('inher') === 'yes'){ g.allowInher = Math.min(g.gross, 75000); }\n      const cap = (joint ? 100000 : 50000) - val('usedAllow');\n      g.allowDec = Math.max(0, Math.min(g.gross - g.allowInher, cap));\n    }\n    g.taxable = Math.max(0, g.gross - g.allowInher - g.allowDec);\n    g.rate = speculative ? band.m : Math.min(band.g \/ 2, 0.21);\n    g.tax  = g.taxable * g.rate * FUND;\n    g.dep  = g.taxable * DEP;\n    g.total = g.tax + g.dep;\n  }\n\n  \/* ---------- loan ---------- *\/\n  const loanBal = val('loanBal');\n  const fixed = radio('loanType') === 'fixed';\n  const loanRate = (parseFloat($('loanRate').value) || 0) \/ 100;\n  const capped = Math.min(loanBal, 450000);\n  const penalty = (loanBal > 0 && fixed) ? capped * loanRate * 0.5 : 0;\n  const mainlevee = loanBal > 0 ? val('mainlevee') : 0;\n  on('penWarn',  loanBal > 450000 && fixed);\n  on('penWarn2', loanBal > 0 && fixed && radio('useType') === 'no');\n\n  const epc = radio('pType') === 'lnd' ? 0 : val('epc');\n  const prep = val('prepCost'), other = val('otherCost');\n\n  const costs = commission + mainlevee + penalty + epc + prep + other;\n  const netPre = price - costs - g.total;\n  const final  = netPre - loanBal;\n  const otherLump = mainlevee + penalty + epc + prep + other;\n\n  C = { price, comPct, commission, g, loanBal, penalty, mainlevee, epc, prep, other,\n        costs, netPre, final, otherLump, fixed, speculative, joint, band };\n\n  paintLedger();\n  return C;\n}\n\n\/* ============================================================\n   LEDGER\n============================================================ *\/\nfunction paintLedger(){\n  const c = C;\n  $('l_price').textContent = eur(c.price);\n  $('l_com').textContent   = '\u2212 ' + eur(c.commission);\n\n  $('l_tax').textContent = c.g.exempt ? 'Exempt' : '\u2212 ' + eur(c.g.total);\n  $('l_taxSub').textContent = c.g.exempt ? 'Main residence \u00b7 art. 102bis'\n    : (c.speculative ? 'Held under 5 years \u00b7 marginal rate'\n                     : 'Held over 5 years \u00b7 ' + (c.g.rate*100).toFixed(1).replace('.',',') + '% half rate');\n  $('l_taxRow').classList.toggle('zero', c.g.exempt || c.g.total === 0);\n\n  $('l_oth').textContent = '\u2212 ' + eur(c.otherLump);\n  const bits = [];\n  if(c.mainlevee) bits.push('release');\n  if(c.penalty)   bits.push('indemnity');\n  if(c.epc)       bits.push('certificate');\n  if(c.prep || c.other) bits.push('preparation');\n  $('l_othSub').textContent = bits.length ? bits.join(' \u00b7 ') : 'none';\n  $('l_othRow').classList.toggle('zero', c.otherLump === 0);\n\n  $('l_loan').textContent = '\u2212 ' + eur(c.loanBal);\n  $('l_loanRow').classList.toggle('zero', c.loanBal === 0);\n\n  $('l_final').textContent = eur(c.final);\n  const pct = c.price ? ((c.costs + c.g.total) \/ c.price * 100) : 0;\n  $('l_pct').textContent = 'Selling costs and tax: ' + pct.toFixed(1).replace('.',',') + '% of the price';\n\n  const p = c.price || 1;\n  const seg = (v) => Math.max(0, v) \/ p * 100 + '%';\n  $('bar_net').style.width  = seg(c.final);\n  $('bar_loan').style.width = seg(c.loanBal);\n  $('bar_com').style.width  = seg(c.commission);\n  $('bar_tax').style.width  = seg(c.g.total);\n  $('bar_oth').style.width  = seg(c.otherLump);\n}\n\n\/* ============================================================\n   BREAKDOWN\n============================================================ *\/\nfunction paintBreakdown(){\n  const c = C;\n  $('b_comLbl').textContent = (c.comPct*100).toFixed(1).replace('.',',') + '% of the sale price plus 17% VAT';\n  $('b_com').textContent  = eur(c.commission);\n  $('b_ml').textContent   = eur(c.mainlevee);   show('b_mlRow', c.mainlevee > 0);\n  $('b_pen').textContent  = eur(c.penalty);     show('b_penRow', c.penalty > 0);\n  $('b_penLbl').textContent = 'Six months\\u2019 interest on ' + eur(Math.min(c.loanBal,450000)) + ' \u2014 the statutory ceiling';\n  $('b_epc').textContent  = eur(c.epc);         show('b_epcRow', c.epc > 0);\n  $('b_prep').textContent = eur(c.prep);        show('b_prepRow', c.prep > 0);\n  $('b_oth').textContent  = eur(c.other);       show('b_othRow', c.other > 0);\n  $('b_costs').textContent = eur(c.costs);\n\n  \/* capital gains card *\/\n  const g = c.g, body = $('b_cgBody');\n  if(g.exempt){\n    $('b_cgTitle').textContent = 'Capital gains \u2014 exempt';\n    $('b_cgSub').textContent = 'Main residence, art. 102bis LIR';\n    body.innerHTML = '<div class=\"note good\"><strong>No tax is due on the gain.<\/strong> '\n      + 'The sale of your main residence is exempt from income tax whatever the gain and however long you have owned the property. '\n      + 'You must still declare the sale to the ACD on your annual return.<\/div>';\n  } else {\n    $('b_cgTitle').textContent = g.speculative ? 'Capital gains \u2014 speculation profit' : 'Capital gains \u2014 transfer profit';\n    $('b_cgSub').textContent = 'Held ' + g.heldYears.toFixed(1).replace('.',',') + ' years \u00b7 '\n      + (g.speculative ? 'art. 99bis LIR' : 'art. 99ter LIR');\n    let h = '';\n    h += row('Sale price', eur(c.price));\n    h += row('Less commission and disposal costs', '\u2212 ' + eur(c.commission), 'Costs directly linked to the sale reduce the gain', 'neg');\n    if(g.speculative){\n      h += row('Purchase price and costs paid', '\u2212 ' + eur(val('buyPrice') + val('buyCosts')), 'No revaluation applies within five years', 'neg');\n      if(val('impAmt')) h += row('Improvements', '\u2212 ' + eur(val('impAmt')), 'Works that raised the value or changed the nature of the property', 'neg');\n    } else {\n      h += row('Purchase price and costs, revalued', '\u2212 ' + eur((val('buyPrice')+val('buyCosts')) * g.coefBuy),\n               eur(val('buyPrice')+val('buyCosts')) + ' \u00d7 ' + g.coefBuy.toFixed(2).replace('.',',') + ' \u2014 official coefficient, art. 102(6) LIR', 'neg');\n      if(val('impAmt')) h += row('Improvements, revalued', '\u2212 ' + eur(val('impAmt') * g.coefImp),\n               eur(val('impAmt')) + ' \u00d7 ' + g.coefImp.toFixed(2).replace('.',','), 'neg');\n    }\n    h += rowSub('Gain before allowances', eur(g.gross));\n    if(g.speculative){\n      h += '<div class=\"note\" style=\"margin:10px 0;\"><strong>No allowance is available.<\/strong> The decennial allowance applies only to a transfer profit. Selling after five years of ownership would change both the rate and the allowance.<\/div>';\n    } else {\n      if(g.allowInher) h += row('Inheritance allowance', '\u2212 ' + eur(g.allowInher), 'Direct-line succession, up to \u20ac75.000 \u2014 art. 130(5) LIR', 'pos');\n      h += row('Decennial allowance', '\u2212 ' + eur(g.allowDec),\n        (c.joint ? '\u20ac100.000 for a jointly taxed couple' : '\u20ac50.000 for one person')\n        + (val('usedAllow') ? ', less ' + eur(val('usedAllow')) + ' already used' : '') + ' \u2014 art. 130(4) LIR', 'pos');\n    }\n    h += rowSub('Taxable gain', eur(g.taxable));\n    h += row('Income tax', eur(g.tax),\n      (g.speculative\n        ? 'Marginal rate ' + (g.rate*100).toFixed(0) + '% plus the 9% employment fund surcharge'\n        : 'Half your overall rate, capped at 21% \u2014 here ' + (g.rate*100).toFixed(1).replace('.',',') + '% plus the 9% surcharge'));\n    h += row('Dependency contribution', eur(g.dep), '1,4% of the taxable gain');\n    h += rowSub('Total capital gains tax', eur(g.total));\n    body.innerHTML = h;\n  }\n\n  $('b_price').textContent  = eur(c.price);\n  $('b_costs2').textContent = '\u2212 ' + eur(c.costs);\n  $('b_tax2').textContent   = '\u2212 ' + eur(c.g.total);\n  $('b_netPre').textContent = eur(c.netPre);\n  $('b_loan2').textContent  = '\u2212 ' + eur(c.loanBal);\n  $('b_final').textContent  = eur(c.final);\n}\nfunction row(l,v,s,cls){\n  return '<div class=\"br ' + (cls||'') + '\"><span class=\"l\">' + l\n    + (s ? '<small>' + s + '<\/small>' : '') + '<\/span><span class=\"v\">' + v + '<\/span><\/div>';\n}\nfunction rowSub(l,v){ return '<div class=\"br sub\"><span class=\"l\">' + l + '<\/span><span class=\"v\">' + v + '<\/span><\/div>'; }\n\n\/* ============================================================\n   NAVIGATION + VALIDATION\n============================================================ *\/\nfunction go(n){\n  document.querySelectorAll('.sp').forEach(p => p.classList.remove('on'));\n  $('step' + n).classList.add('on');\n  document.querySelectorAll('.stp').forEach(s => {\n    const i = parseInt(s.dataset.s,10);\n    s.classList.toggle('on', i === n);\n    s.classList.toggle('ok', i < n);\n  });\n  window.scrollTo({ top:0, behavior:'smooth' });\n}\n$('btn1').addEventListener('click', () => {\n  if(val('salePrice') <= 0){ $('e_price').classList.add('on'); $('salePrice').focus(); return; }\n  $('e_price').classList.remove('on');\n  calc(); go(2);\n});\n$('btnUnlock').addEventListener('click', () => { calc(); go(2); });\n$('back1').addEventListener('click', () => go(1));\n$('back2').addEventListener('click', () => go(1));\n$('btn2').addEventListener('click', () => {\n  let ok = true;\n  const need = (id,err) => { const v = $(id).value.trim(); $(err).classList.toggle('on', !v); if(!v) ok = false; };\n  need('fName','e_fn'); need('lName','e_ln');\n  const em = $('uEmail').value.trim();\n  const emOk = \/^[^\\s@]+@[^\\s@]+\\.[^\\s@]{2,}$\/.test(em);\n  $('e_em').classList.toggle('on', !emOk); if(!emOk) ok = false;\n  $('e_gdpr').classList.toggle('on', !$('gdpr').checked); if(!$('gdpr').checked) ok = false;\n  if(!ok) return;\n  calc(); paintBreakdown();\n  $('lockZone').classList.remove('shut');\n  go(3);\n});\n$('btnPrint').addEventListener('click', () => window.print());\n\n\/* ---- lead payload \u2014 mirrors the buying calculator's contract ---- *\/\n$('btnEmail').addEventListener('click', async () => {\n  const btn = $('btnEmail');\n  btn.textContent = 'Sending\u2026'; btn.disabled = true;\n  const c = C;\n  const payload = {\n    calculator:'selling',\n    firstName:$('fName').value, lastName:$('lName').value,\n    email:$('uEmail').value, phone:$('uPhone').value, village:$('village').value,\n    propertyType:{apt:'Apartment',hse:'House',lnd:'Land'}[radio('pType')],\n    useType:{now:'Main residence \u2014 occupied',moved:'Main residence \u2014 moved out',no:'Rental or second home'}[radio('useType')],\n    salePrice:c.price, commissionPct:c.comPct*100, commission:c.commission,\n    exempt:c.g.exempt, speculative:c.speculative, heldYears:c.g.heldYears,\n    coefficient:c.g.coefBuy, revaluedBase:c.g.base, grossGain:c.g.gross,\n    allowanceInheritance:c.g.allowInher, allowanceDecennial:c.g.allowDec,\n    taxableGain:c.g.taxable, taxRate:c.g.rate, capitalGainsTax:c.g.total,\n    mainlevee:c.mainlevee, earlyRepayment:c.penalty, epc:c.epc,\n    prepCost:c.prep, otherCost:c.other, totalCosts:c.costs,\n    loanBalance:c.loanBal, netBeforeLoan:c.netPre, netProceeds:c.final\n  };\n  try{\n    const res = await fetch('\/zeas-proxy.php?action=sell_lead', {\n      method:'POST', headers:{'Content-Type':'application\/json'}, body:JSON.stringify(payload)\n    });\n    const json = await res.json();\n    if(!json.success) throw new Error(json.error || 'unknown');\n    btn.textContent = '\u2713 Sent to your inbox';\n  }catch(err){\n    console.error('sell_lead', err);\n    btn.textContent = 'Send failed \u2014 retry'; btn.disabled = false;\n  }\n});\n\n\/* ---- boot ---- *\/\ncalc();\n<\/script>\n\n<script>\n\/* ============================================================\n   HERO FIT \u2014 sizes the headline so the title line spans the\n   container exactly. The cascade lines inherit that size and\n   step left \u2192 centre \u2192 right beneath it.\n============================================================ *\/\n(function(){\n  const MIN_VW = 700;      \/\/ below this, hand sizing back to the CSS clamp()\n  const MIN_SCALE = 0.25;\n  const MAX_SCALE = 3.0;\n\n  function fitHero(){\n    const h1 = document.querySelector('.hero h1');\n    if(!h1) return;\n    const inner = h1.querySelector('.ln-i');\n    if(!inner) return;\n\n    h1.style.fontSize = '';                       \/\/ always measure from the CSS base\n    if(window.innerWidth < MIN_VW) return;        \/\/ mobile: leave clamp() in charge\n\n    const base  = parseFloat(getComputedStyle(h1).fontSize);\n    const avail = h1.clientWidth;\n    \/\/ measure the inline run, not the block box, so a non-overflowing\n    \/\/ line still reports its true text width\n    const natural = inner.getBoundingClientRect().width;\n    if(!base || !avail || !natural) return;\n\n    let scale = avail \/ natural;\n    scale = Math.min(Math.max(scale, MIN_SCALE), MAX_SCALE);\n    h1.style.fontSize = (base * scale) + 'px';\n  }\n\n  let t;\n  function schedule(){ clearTimeout(t); t = setTimeout(fitHero, 120); }\n\n  window.addEventListener('load', fitHero);\n  window.addEventListener('resize', schedule);\n  if(document.fonts && document.fonts.ready){ document.fonts.ready.then(fitHero); }\n})();\n<\/script>\n<\/body>\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Selling Cost Calculator Luxembourg \u2014 zeas.immo Luxembourg selling cost calculator:what you ask foris notwhat you keep. Work out your agency commission, Luxembourg capital gains tax on property (plus-value immobili\u00e8re) and mortgage settlement in one pass \u2014 including who pays the notary fees when you sell \u2014 and see the figure that actually lands in your [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-51113","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/zeas.immo\/fr\/wp-json\/wp\/v2\/pages\/51113","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zeas.immo\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/zeas.immo\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/zeas.immo\/fr\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/zeas.immo\/fr\/wp-json\/wp\/v2\/comments?post=51113"}],"version-history":[{"count":3,"href":"https:\/\/zeas.immo\/fr\/wp-json\/wp\/v2\/pages\/51113\/revisions"}],"predecessor-version":[{"id":51143,"href":"https:\/\/zeas.immo\/fr\/wp-json\/wp\/v2\/pages\/51113\/revisions\/51143"}],"wp:attachment":[{"href":"https:\/\/zeas.immo\/fr\/wp-json\/wp\/v2\/media?parent=51113"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}