{"id":19546,"date":"2026-06-02T08:51:59","date_gmt":"2026-06-02T08:51:59","guid":{"rendered":"https:\/\/www.hashmicro.com\/my\/blog\/?p=19546"},"modified":"2026-06-02T08:51:59","modified_gmt":"2026-06-02T08:51:59","slug":"rpgt-real-property-gains-tax","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/my\/blog\/rpgt-real-property-gains-tax\/","title":{"rendered":"Real Property Gains Tax (RPGT) in Malaysia: Rates, Exemptions, and How to Calculate It (2026)"},"content":{"rendered":"<p data-start=\"0\" data-end=\"415\">Selling a residential property in Kuala Lumpur or a commercial unit in Penang may seem simple until the <a href=\"#1\">Real Property Gains Tax (RPGT)<\/a> payment becomes due. Many sellers only realize later that part of their profit must be paid to <span class=\"hover:entity-accent entity-underline inline cursor-pointer align-baseline\"><span class=\"whitespace-normal\">Lembaga Hasil Dalam Negeri Malaysia<\/span><\/span> (LHDN). The final amount depends on the purchase date, eligible expenses with receipts, and the seller category, all within a 60-day filing period.<\/p>\n<p data-start=\"417\" data-end=\"880\">Malaysia\u2019s property market remains active, with <a href=\"https:\/\/rehdainstitute.com\/wp-content\/uploads\/2024\/07\/Summary_NAPIC-Property-Market-Report-2023.pdf\" target=\"_blank\" rel=\"noopener\">National Property Information Centre (NAPIC)<\/a> recording over 311,000 transactions worth RM196.83 billion in 2023. Since RPGT rates under the RPGTA have changed several times, many older references may no longer match the latest LHDN rates. Understanding the current tax structure is important before selling any property in Malaysia.<\/p>\n<p data-start=\"882\" data-end=\"1151\" data-is-last-node=\"\" data-is-only-node=\"\">Understanding RPGT can help property owners avoid surprises when selling real estate in Malaysia. This guide covers the latest RPGT rates, exemptions, calculation methods, and reporting requirements, as well as the role of <a href=\"https:\/\/www.hashmicro.com\/my\/accounting-software\">accounting software<\/a> in maintaining accurate records and supporting tax compliance.<\/p>\n<table style=\"border-collapse: collapse; background-color: #fffacd; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); border-radius: 25px 25px 25px 25px;\" width=\"100%\">\n<tbody>\n<tr>\n<td style=\"padding: 15px; border: none;\">\n<h3 style=\"margin-bottom: 10px;\"><span style=\"background-color: #990000; color: #ffffff; padding: 5px;\"><b>Key Takeaways<\/b><\/span><\/h3>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"#1\">Real Property Gains Tax (RPGT)<\/a> can help property owners reduce tax exposure and avoid costly filing mistakes before selling any property in Malaysia.<\/li>\n<li><a href=\"#2\">RPGT formula allowable expenses and exemptions<\/a> can significantly reduce the final tax payable on a property sale in Malaysia.<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"#3\">Missing RPGT filing deadlines<\/a> can lead to penalties for both the seller and buyer.<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- <div id=\"toc_group_article\" style=''>\r\n\t<p style='font-size:25px;font-weight:bold; margin-bottom:0px'>\r\n\t\tTable of Content\r\n\t<\/p>\r\n\t<ul id=\"list_toc\" class='list_toc'><\/ul>\r\n<\/div>\r\n\r\n<div class=\"dropdown-fixed-top\" id=\"dropdown-fixed-top\">\r\n\t<div class=\"row\">\r\n\t\t<p id=\"pilihDaftarIsi\">Content Lists<\/p>\r\n\t\t<p><i class=\"td-icon-menu-down\"><\/i><\/p>\r\n\t<\/div>\r\n\t\r\n\t<div>\r\n\t\t<ul id=\"list_toc_top\" class='list_toc'><\/ul>\r\n\t<\/div>\r\n<\/div> -->\r\n\r\n<!-- TOC mobile -->\r\n<div id=\"placeholder-toc\"><\/div>\r\n<div id=\"toc\">\r\n    <div class=\"header\">\r\n\t<span class=\"toc-title\" id=\"toc-title\">Table of Content<\/span>\t\r\n\t <i class=\"toc-icon\">\r\n        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"30\" height=\"30\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#000\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"header-icon\">\r\n          <path d=\"m6 9 6 6 6-6\" \/>\r\n        <\/svg>\r\n      <\/i>\r\n\t<\/div>\r\n    <div class=\"list\">\r\n      <ul id=\"toc-list\"><\/ul>\r\n    <\/div>\r\n <\/div>\r\n<!-- TOC mobile -->\r\n\r\n<style>\r\n\t@media (max-width: 992px) {\r\n\t\t#toc_group_article {\r\n\t\t\tpadding-top: 24px;\r\n\t\t}\r\n\t}\r\n\t\r\n\t#list_toc_float {\r\n\t\tmax-height: calc(100vh - 250px);\r\n\t\toverflow-y: auto;\r\n\t}\r\n\t\r\n\t#list_toc_top {\r\n\t\tdisplay: none;\r\n\t\tbackground: #fff;\r\n\t\tmargin-bottom: 4px;\r\n\t}\r\n\t\r\n\t#list_toc_top li {\r\n\t\tdisplay: block;\r\n\t\tmargin-left: 0;\r\n\t\tlist-style: none;\r\n\t}\r\n\t\r\n\t#list_toc_top a {\r\n\t\tpadding: 5px;\r\n\t\tdisplay: block;\r\n\t}\r\n\t\r\n\t#list_toc_top.show {\r\n\t\tdisplay: block;\r\n\t}\r\n\r\n\t#list_toc_top a {\r\n\t\tcolor: #434343;\r\n\t\tborder-bottom: 1px solid #bbb;\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top {\r\n\t\tposition: fixed;\r\n\t\ttop: 59px;\r\n\t\twidth: 100%;\r\n\t\tz-index: 99;\r\n\t\tborder-bottom: 2px solid #9c171e;\r\n\t\tpadding: 12px;\r\n\t\tbackground: #fff;\r\n\t\twidth: 100%;\r\n\t\tcursor: pointer;\r\n\t\tdisplay: none;\r\n\t\tleft: 0;\r\n\t\tbox-shadow: 0 -2px 7px 6px rgba(0, 0, 0, 0.17);\r\n\t}\r\n\t\r\n\t#dropdown-fixed-top.show {\r\n\t\tanimation: showAnim 0.5s ease;\r\n\t\tdisplay: block;\r\n\t\topacity: 1;\r\n\t}\r\n\t\r\n\t@keyframes showAnim {\r\n\t\tfrom {\r\n\t\t\tdisplay: none;\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t\tto {\r\n\t\t\tdisplay: block;\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top #list_toc_top {\r\n\t\tmax-height: calc(50vh - 110px);\r\n\t\toverflow-y: scroll;\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top .row {\r\n\t\tdisplay: flex;\r\n\t\tjustify-content: space-between\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top .row p {\r\n\t\tmargin-bottom: 0;\r\n\t}\r\n\t\r\n\t#pilihDaftarIsi {\r\n\t\tmax-width: 100%;\r\n\t\toverflow: hidden;\r\n\t\twhite-space: nowrap;\r\n\t}\r\n\t\r\n\t@media (min-width: 1018px) {\r\n\t\t.dropdown-fixed-top {\r\n\t\t\tdisplay: none;\r\n\t\t}\r\n\t}\r\n\t\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc > li > ul {padding-left: 20px;margin-bottom: 0;}\r\n\t#list_toc{height:max-content;transition:ease-in-out}\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc_float li.active > a {color:#b1252d;background: #ffe1e3;}\r\n\t#list_toc_top li.active > a {color:#b1252d;background: #ffe1e3;}\r\n\t#list_toc_float li a {padding:3px 7px}\r\n\t#list_toc_float li a {\r\n\t\tdisplay: block;\r\n\t\tcolor: #000;\r\n\t\tmargin-bottom: 6px;\r\n\t\tpadding-top: 2px;\r\n\t\tpadding-bottom: 2px;\r\n\t\ttransition: all 0.2s ease-in-out;\r\n\t\tfont-size: 15px;\r\n\t\tline-height: 18px;\r\n\t}\r\n\t#list_toc_float li{list-style:none;list-style-position:inside; margin-left:0;}\r\n\t#list_toc_float a:hover{color:#b1252d;}\r\n\t\r\n\t#toc_group_float{\r\n\t\tline-height: 24px;\r\n\t\tmax-height: calc(100vh - 100px);\r\n\t\toverflow: auto;\r\n\t\tz-index: 99;\r\n\t\tdisplay:none!important;\r\n\t\tbackground:#fff;\r\n\t\ttransition:all 0.5s linear\r\n\t}\r\n\t\r\n\t@media (min-width:1019px){\r\n\t\t#toc_group_float {\r\n\t\t\tdisplay:block!important;\r\n\t\t}\r\n\t\t#toc_group_article {\r\n\t\t\tdisplay:none;\r\n\t\t}\t\t\t\t\r\n\t}\r\n\r\n<\/style>\r\n\r\n<style>\r\n\t@media (max-width: 992px) {\r\n\t\t#toc_group_article {\r\n\t\t\tpadding-top: 24px;\r\n\t\t}\r\n\t}\r\n\t\r\n\t#list_toc_float {\r\n\t\tmax-height: calc(100vh - 250px);\r\n\t\toverflow-y: auto;\r\n\t}\r\n\t\r\n\t#list_toc_top {\r\n\t\tdisplay: none;\r\n\t\tbackground: #fff;\r\n\t\tmargin-bottom: 4px;\r\n\t}\r\n\t\r\n\t#list_toc_top li {\r\n\t\tdisplay: block;\r\n\t\tmargin-left: 0;\r\n\t\tlist-style: none;\r\n\t}\r\n\t\r\n\t#list_toc_top a {\r\n\t\tpadding: 5px;\r\n\t\tdisplay: block;\r\n\t}\r\n\t\r\n\t#list_toc_top.show {\r\n\t\tdisplay: block;\r\n\t}\r\n\r\n\t#list_toc_top a {\r\n\t\tcolor: #434343;\r\n\t\tborder-bottom: 1px solid #bbb;\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top {\r\n\t\tposition: fixed;\r\n\t\ttop: 59px;\r\n\t\twidth: 100%;\r\n\t\tz-index: 99;\r\n\t\tborder-bottom: 2px solid #9c171e;\r\n\t\tpadding: 12px;\r\n\t\tbackground: #fff;\r\n\t\twidth: 100%;\r\n\t\tcursor: pointer;\r\n\t\tdisplay: none;\r\n\t\tleft: 0;\r\n\t\tbox-shadow: 0 -2px 7px 6px rgba(0, 0, 0, 0.17);\r\n\t}\r\n\t\r\n\t#dropdown-fixed-top.show {\r\n\t\tanimation: showAnim 0.5s ease;\r\n\t\tdisplay: block;\r\n\t\topacity: 1;\r\n\t}\r\n\t\r\n\t@keyframes showAnim {\r\n\t\tfrom {\r\n\t\t\tdisplay: none;\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t\tto {\r\n\t\t\tdisplay: block;\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top #list_toc_top {\r\n\t\tmax-height: calc(50vh - 110px);\r\n\t\toverflow-y: scroll;\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top .row {\r\n\t\tdisplay: flex;\r\n\t\tjustify-content: space-between\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top .row p {\r\n\t\tmargin-bottom: 0;\r\n\t}\r\n\t\r\n\t#pilihDaftarIsi {\r\n\t\tmax-width: 100%;\r\n\t\toverflow: hidden;\r\n\t\twhite-space: nowrap;\r\n\t}\r\n\t\r\n\t@media (min-width: 1018px) {\r\n\t\t.dropdown-fixed-top {\r\n\t\t\tdisplay: none;\r\n\t\t}\r\n\t}\r\n\t\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc > li > ul {padding-left: 20px;margin-bottom: 0;}\r\n\t#list_toc{height:max-content;transition:ease-in-out}\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc_float li.active > a {color:#b1252d;background: #ffe1e3;}\r\n\t#list_toc_top li.active > a {color:#b1252d;background: #ffe1e3;}\r\n\t#list_toc_float li a {padding:3px 7px}\r\n\t#list_toc_float li a {\r\n\t\tdisplay: block;\r\n\t\tcolor: #000;\r\n\t\tmargin-bottom: 6px;\r\n\t\tpadding-top: 2px;\r\n\t\tpadding-bottom: 2px;\r\n\t\ttransition: all 0.2s ease-in-out;\r\n\t\tfont-size: 15px;\r\n\t\tline-height: 18px;\r\n\t}\r\n\t#list_toc_float li{list-style:none;list-style-position:inside; margin-left:0;}\r\n\t#list_toc_float a:hover{color:#b1252d;}\r\n\t\r\n\t#toc_group_float{\r\n\t\tline-height: 24px;\r\n\t\tmax-height: calc(100vh - 100px);\r\n\t\toverflow: auto;\r\n\t\tz-index: 99;\r\n\t\tdisplay:none!important;\r\n\t\tbackground:#fff;\r\n\t\ttransition:all 0.5s linear\r\n\t}\r\n\t\r\n\t@media (min-width:1019px){\r\n\t\t#toc_group_float {\r\n\t\t\tdisplay:block!important;\r\n\t\t\t}\r\n\t\t\t\t#toc_group_article {\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\t}\r\n\r\n<\/style>\r\n\r\n<!-- START ToC styling  -->\r\n<style>\r\n\t\/* Simple styling for the TOC *\/\r\n\t\r\n\t#toc ul li:last-child {\r\n    padding-bottom: 16px; \/* Adjust the value as needed *\/\r\n}\r\n\r\n.td-fix-index {\r\n\t transform: unset !important;\r\n     -webkit-transform: unset !important; \r\n}\r\n.footer-contact .td-fix-index {\r\n\t transform: translateZ(0) !important;\r\n     -webkit-transform: translateZ(0) !important; \r\n}\r\n\t.tdb_single_content .tdb-block-inner.td-fix-index{\r\n\t\tposition: static;\r\n\t}\r\n\t\r\n\r\n\t\r\n#toc {\r\n  background-color: #FFF;\r\n\tpadding: 17px 24px 0px 24px !important;\r\n  margin-bottom: 20px;\r\n\/*   border: 1px solid #9C171E; *\/\r\n  border-radius: 6px;\r\n\tdisplay: none;\r\n  max-width: 100%;\r\n  transition: .4s ease height;\r\n\tmargin-left: 0;\r\n\toverflow: hidden;\r\n}\r\n\r\n#toc .header{\r\n  display: flex;\r\n  align-items: center;\r\n  justify-content: space-between;\r\n\tbackground-color: transparent;\r\n}\r\n\t\r\n\t#toc.sticky .header{\r\n\t\tpadding: 4px 0;\r\n\t}\r\n\t\r\n.header p{\r\n  font-size: 18px !important;\r\n  font-weight: 600 !important;\r\n  color: #393939;\r\n   margin-bottom: 0;\r\n  \/* margin-top: 20px; *\/\r\n}\r\n\r\n.toc-icon{\r\n  float: right;\r\n\/*   visibility: hidden; *\/\r\n}\r\n\r\n\t.toc-title{\r\n\t\tmargin-right: auto;\r\n\/* \t\tpadding-left: 20px; *\/\r\n\t\tfont-weight: 600;\r\n\t\talign-self: center;\t}\t\r\n\r\n#toc ul {\r\n  list-style-type: none;\r\n  padding-left: 0;\r\n}\r\n\t\r\n#toc.sticky ul{\r\n\toverflow-y: auto;\r\n\tmax-height: 250px;\r\n\tmargin-top: 0px;\r\n\tpadding-top: 20px;\r\n\/* \tborder-top: 1px solid #d3d3d3; *\/\r\n}\r\n\t\r\n#toc ul li {\r\n\/*   margin-bottom: 10px; *\/\r\n  margin-bottom: 10px;\r\n\tmargin-left: 0;\r\n\ttransition: .2s ease;\r\n\tcursor: pointer;\r\n}\r\n\t\r\n\t#toc.sticky ul li {\r\n\t  margin-right: 10px;\r\n\t}\r\n\t\r\n.td-post-content #toc-list li a:hover, .td-post-content #toc-list a.active{\r\n\tbackground-color: #FFF;\r\n\/* \tpadding: 8px 16px 8px 16px; *\/\r\n\tpadding: 4px 16px 4px 16px;\r\n\tborder-radius: 6px;\r\n\tcolor: #9c171e !important;\r\n\tfont-weight: 600 !important;\r\n}\r\n\t\r\n\t.td-post-content #toc-list li:hover a, .td-post-content #toc-list a.active{\r\n\t\tcolor: #9C171E !important;\r\n\t\tfont-weight: 600 !important;\r\n\t}\r\n\t\r\n.td-post-content #toc-list a.active{\r\n\tfont-weight: bold !important;\r\n\tcolor: #9C171E !important;\r\n}\r\n\t\r\n#toc a, .td-post-content #toc-list a {\r\n  text-decoration: none;\r\n  color: #ea1717 !important;\r\n  transition: .2s ease;\r\n\tfont-weight: 400 !important;\r\n\tdisplay: block;\r\n\t\r\n\tpadding: 4px 16px 4px 0;\r\n}\r\n\r\n#toc.sticky {\r\n  position: fixed;\r\n\/*   top: 73px; *\/\r\n\tbottom: 0;\r\n  z-index: 100; \r\n  box-shadow: 0 2px 5px rgba(0,0,0,0.1); \r\n\twidth: 100%; \r\n\tbackground-color: #FFF;\r\n\/* \tbackground-color: #FFF1F1; *\/\r\n\tborder-bottom: 1px solid #ea1717;\r\n\/*   border: 1px solid #393939; *\/\r\n  box-shadow: 0px 0px 14px 0px #00000040;\r\n  cursor: pointer;\r\n\tanimation: fadein .3s ease;\r\n\tpadding: 12px 16px !important;\r\n}\r\n\t\r\n\t.fadein{\r\n\t\tanimation: fadein .3s ease;\r\n\t}\r\n\t\r\n\t.fadeout{\r\n\t\tanimation: fadeout .3s ease;\r\n\t}\r\n\t\r\n\t\r\n\t@keyframes fadein{\r\n\t\t0% {\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t\t100%{\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@keyframes fadeout{\r\n\t\t0% {\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t\t100%{\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t}\r\n\r\n\t\r\n#toc.sticky .header p{\r\n\tmargin-bottom: 10px;\r\n\tmargin-top: 10px;\r\n}\r\n\r\n#toc.sticky .toc-icon{\r\n  visibility: visible;\r\n\/* \ttransition: 0.4s ease; *\/\r\n}\r\n\t\r\n\t.toc-icon{\r\n\t\talign-items: center;\r\n    \tdisplay: flex;\r\n\t}\r\n\t\r\n\tsvg.header-icon{\r\n\/* \t\tbackground-color: #9c171e; *\/\r\n\t\tbackground-color: #FFF;\r\n\t\tborder-radius: 30px;\r\n\t\tpadding: 5px;\r\n\t}\r\n\r\n#toc.sticky .list{\r\n\/*   max-height: 0; *\/\r\n  transition: height 0.4s ease;\r\n}\r\n\t\r\n\t#toc .list{\r\n\/*   max-height: 0; *\/\r\n  transition: height 0.4s ease;\r\n}\r\n\r\n#toc .header.active .toc-icon{\r\n\ttransform: rotate(0deg); \r\n\topacity: 1;\r\n}\r\n\r\n\t#toc .header.active + .list {\r\n\t  max-height: 200px; \/* Adjust this value as needed *\/\r\n\t  opacity: 1;\r\n\t}\r\n\t\r\n\t#placeholder-toc{\r\n\/* \t\tdisplay: none; *\/\r\n\t}\r\n\t\r\n\t@media (min-width: 768px) and (max-width: 991px){\r\n\t\t#toc.sticky{\r\n\/* \t\t\ttop: 104px; *\/\r\n\t\t\tbottom: 0px;\r\n\t\t}\r\n\t\t\r\n\t\t#toc{\r\n\t\t\twidth: unset !important;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@media (max-width: 767px){\r\n\t\t#toc{\r\n\t\t\twidth: 100% !important;\r\n\t\t\tdisplay: inline-block;\r\n\t\t}\r\n\t\t\r\n\t\t#toc.sticky{\r\n\t\t\twidth: 90% !important;\r\n\/* \t\t\ttop: 81px; *\/\r\n\t\t\tbottom: 60px;\r\n\t\t\tmargin-left: auto;\r\n\t\t\tmargin-right: auto;\r\n\t\t\tpadding: 0 16px;\r\n\t\t\tright: 5%;\r\n\t\t}\r\n\t}\r\n\t\r\n\t<\/style>\r\n<!-- END ToC styling  -->\r\n\r\n<!-- ToC List for mobile -->\r\n<script>\r\n \/\/ Generate TOC based on headings\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  \/\/ Get the element that will contain the TOC\r\n  const tocList = document.getElementById('toc-list');\r\n\r\n  \/\/ Get the element with the ID 'article-left'\r\n  const article = document.querySelector('.td-post-content');\r\n\r\n  \/\/ Find all h2 elements within 'myarticle'\r\n  const headers = article.getElementsByTagName('h2');\r\n\r\n  \/\/ Loop through the h2 elements and create a list item for each one\r\n  for (let i = 0; i < headers.length; i++) {\r\n    const header = headers[i];\r\n    const headerText = header.textContent;\r\n\/\/     const headerId = 'header-' + i;\r\n    const headerId = headerText\r\n    .toLowerCase()\r\n    .trim()\r\n    .replace(\/[^\\w\\s-]\/g, '')  \/\/ hapus tanda baca\r\n    .replace(\/\\s+\/g, '-'); \/\/ ganti spasi jadi \"-\"\r\n\r\n    \/\/ Set an ID for the header if it doesn't have one\r\n    header.setAttribute('id', headerId);\r\n\r\n    \/\/ Create a list item for the TOC\r\n    const listItem = document.createElement('li');\r\n\r\n    \/\/ Create a link for the list item\r\n    const link = document.createElement('a');\r\n    link.setAttribute('href', '#' + headerId);\r\n    link.textContent = headerText;\r\n\r\n    \/\/ Append the link to the list item\r\n    listItem.appendChild(link);\r\n\r\n    \/\/ Append the list item to the TOC list\r\n    tocList.appendChild(listItem);\r\n  }\r\n});\r\n\r\n\/\/ Keep height and placement of content using placeholder in place of TOC\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  const toc = document.querySelector('#toc');\r\n  const placeholderToc = document.querySelector('#placeholder-toc');\r\n\r\n  function setPlaceholderHeight() {\r\n    placeholderToc.style.height = `${toc.offsetHeight}px`;\r\n  }\r\n\r\n  \/\/ Set the initial height of the placeholder\r\n  setPlaceholderHeight();\r\n\r\n  \/\/ Update the height on window resize\r\n  window.addEventListener('resize', setPlaceholderHeight);\r\n});\r\n  const tocTitle = document.querySelector('#toc-title'); \/\/ Assuming header-faq is the element for TOC title\r\n\r\n\/\/ Sticky TOC and update heading\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  const toc = document.querySelector('#toc');\r\n  const footer = document.querySelector('.td-footer-template-wrap');\r\n  const tocParent = toc.parentElement;\r\n  const divTop = tocParent.getBoundingClientRect().top + window.pageYOffset;\r\n  const tocHeight = toc.offsetHeight;\r\n  const triggerPoint = divTop + tocHeight + 700;\r\n  const footerHeight = footer.offsetHeight;\r\n  const triggerFooterPoint = footer.getBoundingClientRect().top + window.pageYOffset - footerHeight - footerHeight - footerHeight;\r\n  const phtoc = document.querySelector('#placeholder-toc');\r\n  const headers = document.querySelectorAll('.td-post-content h2');\r\n  const navLinks = document.querySelectorAll('#toc-list a');\r\n\t\r\n\tconst panel2 = document.querySelector(\"#toc .list\");\r\n\tvar icon = document.querySelector(\".toc-icon\");\r\n\r\n  let activeLink = null; \/\/ Declare activeLink outside the loop\r\n\t\r\n  \/\/ Function to handle scroll and add\/remove .sticky class\r\n  function handleScroll() {\r\n    const windowTop = window.pageYOffset || document.documentElement.scrollTop;\r\n    let currentHeader = '';\r\n\r\n    \/\/ Highlight user progress as the heading comes\r\n    headers.forEach(header => {\r\n\t\tconst headerTop = header.offsetTop;\r\n\t\tconst headerHeight = header.clientHeight;\r\n\t\tif (window.scrollY >= (headerTop - headerHeight + 700)) {\r\n\t\t\tconst currentHeaderId = header.getAttribute('id');\r\n\t\t\tconst currentHeaderText = document.getElementById(currentHeaderId).textContent;\r\n\/\/ \t\t\tconsole.log(\"current header text:\", currentHeaderText);\r\n\t\t\ttocTitle.textContent = currentHeaderText;\r\n\t\t\tcurrentHeader = currentHeaderId;\r\n\t\t\t\r\n\t\t\tif(window.innerWidth < 767){\r\n\t\t\t\ttocTitle.textContent = 'Table of Content';\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n    navLinks.forEach(link => {\r\n      link.classList.remove('active');\r\n      if(currentHeader != '') {\r\n\t\t  if (link.getAttribute('href').includes(currentHeader)) {\r\n\t\t\t  link.classList.add('active');\r\n\t\t  }\r\n\t  }\r\n    });\r\n\/\/     if (windowTop < triggerFooterPoint) {\r\n\/\/         toc.style.display = 'block';\r\n\/\/ \t}else{\r\n\/\/         toc.style.display = 'none';\r\n\/\/ \t}\r\n    \/\/ Update TOC title if sticky\r\n    if (windowTop > triggerPoint) {\r\n      if (!toc.classList.contains('sticky')) {\r\n        phtoc.style.display = \"block\";\r\n        toc.classList.add('sticky');\r\n        toc.style.width = `${tocParent.offsetWidth}px`; \/\/ Set width to match the parent element\r\n        toc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n        toc.style.backgroundColor = \"#FFF\";\r\n\t\tpanel2.style.height = '0px';\r\n\t\t  icon.style.transform = \"rotate(180deg)\";\r\n\t\t  if(window.innerWidth < 767){\r\n\/\/ \t\t\t  const tocs = document.querySelector('#toc.sticky');\r\n\t\t\t  tocTitle.textContent = 'Table of Content'; \/\/ Reset title\r\n       \t\t  toc.style.width = '150px'; \/\/ Set width to match the parent element\r\n\t\t  }\r\n      }\r\n      if (currentHeader) {\r\n\/\/         console.log(\"activeLink:\", activeLink);\r\n        if (activeLink) {\r\n\/\/           tocTitle.textContent = activeLink.textContent; \/\/ Update TOC title\r\n          tocTitle.textContent = activeLink ? activeLink.textContent : \"\"; \/\/ Update title only if activeLink exists\r\n        }\r\n      }\r\n    } else {\r\n      toc.classList.remove('sticky');\r\n      phtoc.style.display = \"none\";\r\n      toc.style.width = 'unset'; \/\/ Reset to original width\r\n      toc.style.backgroundColor = \"#FFF\";\r\n      tocTitle.textContent = 'Table of Content'; \/\/ Reset title\r\n\t\tpanel2.style.height = panel2.scrollHeight + \"px\";\r\n\t\ticon.style.transform = \"rotate(180deg)\";\r\n    }\r\n  }\r\n\r\n    \/\/ Attach the scroll event listener to the window\r\n    window.addEventListener('scroll', handleScroll);\r\n\r\n    \/\/ Initial call to handleScroll to set the correct state on load\r\n    handleScroll();\r\n});\r\n\t\r\n\t\/\/ Open toggle TOC\r\n\t  document.addEventListener(\"DOMContentLoaded\", function() {\r\n\t\tvar tocHeader = document.querySelector(\"#toc .header\");\r\n\t\tvar toc = document.querySelector(\"#toc\");\r\n\t\tvar icon = document.querySelector(\".toc-icon\");\r\n\t\tconst tocTitle = document.querySelector('#toc-title');\r\n\t\tconst tocs = document.querySelector('#toc.sticky');\r\n \t\tconst tocParent = toc.parentElement;\t\t  \r\n\r\n\t\t  tocHeader.addEventListener(\"click\", function() {\r\n\t\t\tvar panel = this.nextElementSibling;\r\n\t\t\tif (panel.style.height !== '0px') { \/\/ Check if height is not 0px\r\n\t\t\t  panel.style.height = '0px'; \/\/ Set height to 0 for full collapse\r\n\t\t\t  icon.style.transform = \"rotate(180deg)\";\r\n\/\/ \t\t\t\ttoc.style.paddingBottom = '6px'; \r\n\t\t\t\tif(window.innerWidth > 768){\r\n\t\t\t\t\tif(!toc.classList.contains('sticky')){\r\n\t\t\t\t\t\ttoc.style.width = \"unset\";\r\n\/\/ \t\t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (toc.classList.contains('sticky')){\r\n\t\t\t\t\t\ttoc.style.width = '${tocParent.offsetWidth}px';\r\n\t\t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif(window.innerWidth < 767){\r\n\t\t\t\t\ttoc.style.width = \"unset\"; \/\/ Reset width\r\n\t\t\t\t}\r\n\t\t\t\ttoc.style.backgroundColor = \"#FFF1F1\";\r\n\t\t\t} else {\r\n\t\t\t  panel.style.height = panel.scrollHeight + \"px\";\r\n\t\t\t  icon.style.transform = \"rotate(0deg)\";\r\n\t\t\t  toc.style.backgroundColor = \"#FFF\";\r\n\t\t\t  tocTitle.textContent = 'Table of Content'; \/\/ Reset title\r\n\t\t\t\ttoc.style.paddingBottom = '24px';\r\n\t\t\t \tif(window.innerWidth < 767){\r\n\t\t\t\t\ttoc.style.width = `${tocParent.offsetWidth}px`; \/\/ Set width to match the parent element\r\n\t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t  });\r\n\r\n\t\t  \/\/ Close TOC when a link inside it is clicked\r\n\t\t  var tocLinks = document.querySelectorAll(\"#toc .list a\");\r\n\t\t  tocLinks.forEach(function(link) {\r\n\t\t\tlink.addEventListener(\"click\", function() {\r\n\t\t\t  var panel = document.querySelector(\"#toc .list\");\r\n\t\t\t  panel.style.height = '0px'; \/\/ Set height to 0 for full collapse\r\n\t\t\t  icon.style.transform = \"rotate(180deg)\";\r\n\t\t\t  toc.style.backgroundColor = \"#FFF\";\r\n\t\t\t});\r\n\t\t  });\r\n\t\t});\r\n<\/script>\r\n\r\n<!-- <script>\r\n\tvar pilihDaftarIsi = document.getElementById('pilihDaftarIsi');\r\n\t\r\n\tdocument.addEventListener('DOMContentLoaded', function() {\r\n\t\tvar dropdownFixedTop = document.querySelector('.dropdown-fixed-top');\r\n\r\n\t\tdropdownFixedTop.addEventListener('click', function() {\r\n\t\t\tvar dropdownContent = this.querySelector('.list_toc');\r\n\t\t\tdropdownContent.classList.toggle('show');\r\n\t\t});\r\n\r\n\t\twindow.addEventListener('click', function(event) {\r\n\t\t\tvar listTocTop = document.getElementById('list_toc_top');\r\n\r\n\t\t\tif (!dropdownFixedTop.contains(event.target)) {\r\n\t\t\t\tlistTocTop.classList.remove('show');\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\t\r\n\tvar daftarIsiContainer = document.getElementById('toc_group_article');\r\n\tvar dropdownFixedTop = document.getElementById('dropdown-fixed-top');\r\n    var triggered = false; \/\/ Flag to keep track of whether the function has been triggered\r\n\r\n    window.addEventListener('scroll', function() {\r\n        if (!triggered && isCompletelyScrolledPast(daftarIsiContainer)) {\r\n            showSectionDropdownFixedTop(false);\r\n            triggered = true;\r\n        } else if (triggered && !isCompletelyScrolledPast(daftarIsiContainer)) {\r\n            showSectionDropdownFixedTop(true);\r\n            triggered = false;\r\n        }\r\n    });\r\n\r\n    function isCompletelyScrolledPast(element) {\r\n        var elementTop = element.getBoundingClientRect().top;\r\n        var elementBottom = element.getBoundingClientRect().bottom;\r\n        return elementTop < 0 && elementBottom < 0;\r\n    }\r\n\r\n    function showSectionDropdownFixedTop(show) {\r\n\t\tif (show) {\r\n\t\t\tdropdownFixedTop.classList.remove(\"show\");\r\n\t\t} else {\r\n\t\t\tdropdownFixedTop.classList.add(\"show\");\r\n\t\t}\r\n    }\r\n\r\n\/\/ Scrollspy function to highlight the active TOC item based on the scroll position\r\n  function scrollSpy(tocClass) {\r\n    const scrollPosition = window.scrollY;\r\n\r\n    \/\/ Find the active h2 and h3 headings based on their position in the corresponding TOC\r\n    let activeH2 = null;\r\n    let activeH3 = null;\r\n\r\n    const tocItems = document.querySelectorAll(`.${tocClass} li`);\r\n    tocItems.forEach(item => {\r\n      const a = item.querySelector('a');\r\n      if (!a) return;\r\n      const href = a.getAttribute('href');\r\n      const targetId = href.substring(1); \/\/ Remove the '#' from the href to get the target ID\r\n      const targetElement = document.getElementById(targetId);\r\n      if (!targetElement) return;\r\n\r\n      const targetTop = targetElement.getBoundingClientRect().top + scrollPosition;\r\n      const nextItem = item.nextElementSibling;\r\n      const nextTop = nextItem ? nextItem.getBoundingClientRect().top + scrollPosition : Infinity;\r\n\r\n      if (targetTop <= scrollPosition + 150) {\r\n        if (a.parentElement.parentElement === tocItems) {\r\n          \/\/ The h2 heading is at the root level of the TOC\r\n          activeH2 = { id: targetId, level: 'h2' };\r\n        } else {\r\n          \/\/ The h3 heading is nested under an h2 heading\r\n          const parentH2 = a.parentElement.parentElement.previousElementSibling;\r\n          if (parentH2) {\r\n            const h2Link = parentH2.querySelector('a');\r\n            if (h2Link) {\r\n              const h2Href = h2Link.getAttribute('href');\r\n              const h2Id = h2Href.substring(1);\r\n              activeH2 = { id: h2Id, level: 'h2' };\r\n            }\r\n          }\r\n          activeH3 = { id: targetId, level: 'h3' };\r\n        }\r\n      }\r\n\r\n      if (targetTop > scrollPosition + 150 && nextTop > scrollPosition + 150 && !activeH3) {\r\n        \/\/ Reset the activeH2 when there are no more active h3 headings\r\n        activeH2 = null;\r\n      }\r\n    });\r\n\r\n    \/\/ Update the active state for the TOC items\r\n    tocItems.forEach(item => {\r\n      item.classList.remove('active');\r\n      const a = item.querySelector('a');\r\n      if (a) {\r\n        const href = a.getAttribute('href');\r\n        const targetId = href.substring(1);\r\n        if ((activeH2 && activeH2.id === targetId) || (activeH3 && activeH3.id === targetId)) {\r\n          item.classList.add('active');\r\n\t\t  pilihDaftarIsi.innerHTML = a.textContent;\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  \/\/ Call scrollSpy for each TOC on window scroll\r\n  const tocClasses = ['list_toc', 'list_toc_float', 'list_toc_top']; \/\/ Add other TOC class names here if you have more than two instances\r\n  tocClasses.forEach(tocClass => {\r\n    window.addEventListener('scroll', () => scrollSpy(tocClass));\r\n  });\r\n<\/script> -->\r\n<!-- END script lama -->\r\n\t\r\n<script>\r\n    \/\/ Scrollspy function to highlight the active TOC item based on the scroll position\r\n  function scrollSpy(tocClass) {\r\n    const scrollPosition = window.scrollY;\r\n\r\n    \/\/ Find the active h2 and h3 headings based on their position in the corresponding TOC\r\n    let activeH2 = null;\r\n    let activeH3 = null;\r\n\r\n    const tocItems = document.querySelectorAll(`.${tocClass} li`);\r\n    tocItems.forEach(item => {\r\n      const a = item.querySelector('a');\r\n      if (!a) return;\r\n      const href = a.getAttribute('href');\r\n      const targetId = href.substring(1); \/\/ Remove the '#' from the href to get the target ID\r\n      const targetElement = document.getElementById(targetId);\r\n      if (!targetElement) return;\r\n\r\n      const targetTop = targetElement.getBoundingClientRect().top + scrollPosition;\r\n      const nextItem = item.nextElementSibling;\r\n      const nextTop = nextItem ? nextItem.getBoundingClientRect().top + scrollPosition : Infinity;\r\n\r\n      if (targetTop <= scrollPosition + 150) {\r\n        if (a.parentElement.parentElement === tocItems) {\r\n          \/\/ The h2 heading is at the root level of the TOC\r\n          activeH2 = { id: targetId, level: 'h2' };\r\n        } else {\r\n          \/\/ The h3 heading is nested under an h2 heading\r\n          const parentH2 = a.parentElement.parentElement.previousElementSibling;\r\n          if (parentH2) {\r\n            const h2Link = parentH2.querySelector('a');\r\n            if (h2Link) {\r\n              const h2Href = h2Link.getAttribute('href');\r\n              const h2Id = h2Href.substring(1);\r\n              activeH2 = { id: h2Id, level: 'h2' };\r\n            }\r\n          }\r\n          activeH3 = { id: targetId, level: 'h3' };\r\n        }\r\n      }\r\n\r\n      if (targetTop > scrollPosition + 150 && nextTop > scrollPosition + 150 && !activeH3) {\r\n        \/\/ Reset the activeH2 when there are no more active h3 headings\r\n        activeH2 = null;\r\n      }\r\n    });\r\n\r\n    \/\/ Update the active state for the TOC items\r\n    tocItems.forEach(item => {\r\n      item.classList.remove('active');\r\n      const a = item.querySelector('a');\r\n      if (a) {\r\n        const href = a.getAttribute('href');\r\n        const targetId = href.substring(1);\r\n        if ((activeH2 && activeH2.id === targetId) || (activeH3 && activeH3.id === targetId)) {\r\n          item.classList.add('active');\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  \/\/ Call scrollSpy for each TOC on window scroll\r\n  const tocClasses = ['list_toc', 'list_toc_float', 'list_toc_top']; \/\/ Add other TOC class names here if you have more than two instances\r\n  tocClasses.forEach(tocClass => {\r\n    window.addEventListener('scroll', () => scrollSpy(tocClass));\r\n  });\r\n<\/script>\r\n\t\r\n\r\n<!-- ToC List for desktop side bar, diganti jadi inject by php, di code snippet \"Sidebar Accordion\" -->\r\n<!-- <script>\r\n\tdocument.addEventListener('DOMContentLoaded', function() {\r\n        \/\/ Fungsi untuk mengubah teks menjadi format id\r\n        function formatId(text) {\r\n            return text.trim().replace(\/[^\\w\\d]+\/g, '_');\r\n        }\r\n\r\n        \/\/ Fungsi untuk membuat nested list\r\n        function createNestedList(parentNode, children) {\r\n            if (children.length === 0) return;\r\n\r\n            const nestedUl = document.createElement('ul');\r\n            children.forEach(child => {\r\n                const nestedLi = document.createElement('li');\r\n                const nestedA = document.createElement('a');\r\n                nestedA.textContent = child.title;\r\n                nestedA.href = `#${child.id}`;\r\n                nestedLi.appendChild(nestedA);\r\n                nestedUl.appendChild(nestedLi);\r\n\r\n                if (child.children.length > 0) {\r\n                    createNestedList(nestedLi, child.children);\r\n                }\r\n            });\r\n\r\n            parentNode.appendChild(nestedUl);\r\n        }\r\n\r\n        \/\/ Membuat objek untuk menyimpan daftar h2 dan h3 beserta judulnya\r\n        const headings = [];\r\n\r\n           \/\/ Mengambil semua elemen h2 dan h3\r\n        const elements = document.querySelectorAll('.td-post-content h2');\r\n\t\t\t\/\/, .td-post-content h3\r\n\r\n        elements.forEach(element => {\r\n            if (element.tagName === 'H2') {\r\n                const id = formatId(element.textContent);\r\n                element.id = id;\r\n\t\t\t\tif(element.textContent.toLowerCase() === \"key takeaways\") {return;} \/\/ Biar ga nampilin Key Takeaways di ToC\r\n                headings.push({ level: 'h2', id: id, title: element.textContent, children: [] });\r\n            } else if (element.tagName === 'H3') {\r\n                const id = formatId(element.textContent);\r\n                element.id = id;\r\n                if (headings.length > 0) {\r\n                    headings[headings.length - 1].children.push({ level: 'h3', id: id, title: element.textContent, children: [] });\r\n                }\r\n            }\r\n        });\r\n\r\n        \/\/ Membuat list HTML dari objek headings\r\n        const ul = document.getElementById('list_toc');\r\n        let currentUl = ul;\r\n        headings.forEach(heading => {\r\n            const li = document.createElement('li');\r\n            const a = document.createElement('a');\r\n            a.textContent = heading.title;\r\n            a.href = `#${heading.id}`;\r\n            li.appendChild(a);\r\n\r\n            if (heading.level === 'h2') {\r\n                \/\/ Menyimpan ul saat ini untuk menambahkan nested ul\r\n                currentUl = li;\r\n                ul.appendChild(li);\r\n            } else if (heading.level === 'h3') {\r\n                if (!currentUl.lastElementChild || currentUl.lastElementChild.tagName !== 'UL') {\r\n                    \/\/ Jika belum ada nested ul, buat satu\r\n                    const nestedUl = document.createElement('ul');\r\n                    currentUl.appendChild(nestedUl);\r\n                    currentUl = nestedUl;\r\n                }\r\n                currentUl.appendChild(li);\r\n            }\r\n\r\n            createNestedList(li, heading.children);\r\n        });\r\n\t\t\/\/ Dapatkan elemen ul dengan id 'list_toc_float'\r\nconst ulFloat = document.getElementById('list_toc');\r\nconst ulJourney = document.getElementById('list_journey');\r\n\r\n\/\/ Dapatkan isi (child elements) dari ul dengan id 'list_toc_float'\r\n\tif (ulFloat !== null) {\r\n\t\tconst clonedChildren = ulFloat.cloneNode(true).children;\r\n\t\tconst ulToc = document.getElementById('list_toc_float');\r\n\t\tconst ulTocTop = document.getElementById('list_toc_top');\r\n\t\tif ((ulToc !== null || ulToc !== undefined) && window.innerWidth > 1018){\r\n\t\t\tulToc.append(...clonedChildren);\r\n\t\t} else {\r\n\t\t\tulTocTop.append(...clonedChildren);\r\n\t\t}\r\n\t} \r\n\r\n\tif (ulJourney !== null) {\r\n\t\tconst clonedChildrenJourney = ulJourney.cloneNode(true).children;\r\n\t\tconst ulTocJourney = document.getElementById('list_toc_journey');\r\n\t\tulTocJourney.append(...clonedChildrenJourney);\r\n\t} \r\n\r\n\r\n\r\n\r\n\t\r\n        \/\/ Fungsi untuk mengambil tinggi navbar\r\n        function getNavbarHeight() {\r\n            const navbar = document.getElementById('tdi_34');\r\n            return navbar ? navbar.offsetHeight : 0;\r\n        }\r\n\r\n        \/\/ Fungsi untuk menambahkan offset posisi scroll\r\n        function scrollToElementWithOffset(elementId) {\r\n            const element = document.getElementById(elementId);\r\n            if (element) {\r\n                const offset = getNavbarHeight();\r\n                const elementPosition = element.getBoundingClientRect().top;\r\n                const offsetPosition = elementPosition - offset-40;\r\n\r\n                window.scrollBy({\r\n                    top: offsetPosition,\r\n                    behavior: 'smooth'\r\n                });\r\n            }\r\n        }\r\n\r\n        \/\/ Fungsi untuk menangani klik pada tautan judul\r\n        function handleTitleClick(event) {\r\n            event.preventDefault();\r\n            const href = event.target.getAttribute('href').substr(1);\r\n            scrollToElementWithOffset(href);\r\n        }\r\n\r\n        \/\/ Tambahkan event listener untuk semua tautan judul\r\n        const titleLinks = document.querySelectorAll('a[href^=\"#\"]');\r\n        titleLinks.forEach(link => {\r\n            link.addEventListener('click', handleTitleClick);\r\n        });\r\n\t});\r\n    <\/script> -->\r\n<!-- \t<style>#toc_group_float{display:block !important}<\/style> -->\r\n\n<p>Many property owners struggle to organize RPGT documents and expense records properly. Using accounting software with financial reporting and asset management features helps simplify CKHT preparation and tax calculations.<\/p>\n<p><span data-sheets-root=\"1\"><a href=\"https:\/\/www.hashmicro.com\/my\/accounting-software?medium=moneysite-banner\" target=\"_blank\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/accounting_laporan_en.webp\" data-desktop-src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/accounting_laporan_en.webp\" data-mobile-src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/accounting_laporan_en_m.webp\" alt=\"Accounting_Laporan\" class=\"responsive-image-banner\"><\/a>\r\n\r\n<script>\r\n    \/\/ check which image to use based on screensize\r\n    document.addEventListener(\"DOMContentLoaded\", function() {\r\n        function updateImageSource() {\r\n            var images = document.querySelectorAll('.responsive-image-banner');\r\n            var screenWidth = window.innerWidth;\r\n\r\n            images.forEach(function(img) {\r\n                var mobileSrc = img.getAttribute('data-mobile-src');\r\n                var desktopSrc = img.getAttribute('data-desktop-src');\r\n\r\n                if (screenWidth < 576 && mobileSrc) {\r\n                    img.setAttribute('src', mobileSrc);\r\n                } else {\r\n                    img.setAttribute('src', desktopSrc);\r\n                }\r\n            });\r\n        }\r\n\r\n        \/\/ Initial check\r\n        updateImageSource();\r\n\r\n        \/\/ Update on resize\r\n        window.addEventListener('resize', updateImageSource);\r\n    });\r\n<\/script><\/span><\/p>\n<h2><strong><span id=\"1\">What is Real Property Gains Tax (RPGT)?<\/span><\/strong><\/h2>\n<p>Real Property Gains Tax (RPGT), also known as Cukai Keuntungan Harta Tanah (CKHT), is a tax imposed on profits earned from selling property in Malaysia. RPGT applies to residential properties, commercial buildings, vacant land, and shares in real property companies (RPCs). The taxable amount is based on the chargeable gain, calculated from the difference between the selling price and acquisition cost after allowable deductions.<\/p>\n<p>Under the Real Property Gains Tax Act 1976 (RPGTA), which serves as the legal framework for Real Property Gains Tax (RPGT) in Malaysia, tax rules apply to Malaysian citizens, permanent residents, companies incorporated in Malaysia, and non-citizens, including foreign companies, under different tax rate categories. The latest RPGT rates, exemptions, and CKHT forms are published by LHDN.<\/p>\n<h2><strong>Real Property Gains Tax (<span lang=\"EN-US\">RPGT) Rates in Malaysia<\/span><\/strong><\/h2>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-19559\" src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/RPGT-Rates-Infographic.webp\" alt=\"RPGT Rates Infographic\" width=\"1726\" height=\"777\" srcset=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/RPGT-Rates-Infographic.webp 1726w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/RPGT-Rates-Infographic-300x135.webp 300w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/RPGT-Rates-Infographic-1024x461.webp 1024w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/RPGT-Rates-Infographic-768x346.webp 768w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/RPGT-Rates-Infographic-1536x691.webp 1536w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/RPGT-Rates-Infographic-933x420.webp 933w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/RPGT-Rates-Infographic-150x68.webp 150w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/RPGT-Rates-Infographic-696x313.webp 696w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/RPGT-Rates-Infographic-1068x481.webp 1068w\" sizes=\"(max-width: 1726px) 100vw, 1726px\" \/><\/p>\n<p>Two variables determine the rate you pay, namely how long the property was held before disposal and which disposer category applies to you. The current rates took effect on 1 January 2022 and continue to apply for the 2026 assessment year.<\/p>\n<h3><strong><span lang=\"EN-US\">Disposer Categories<\/span><\/strong><\/h3>\n<p>Under Schedule 5 of the RPGTA (Real Property Gains Tax Act 1976), taxpayers are divided into three categories based on their residency and ownership status. Each disposer category is subject to different RPGT rates depending on how long the property is held before disposal.<\/p>\n<p><strong>Citizen\/PR<\/strong>: Applies to Malaysian citizens and permanent residents selling property under their personal name. This category receives the most favorable treatment, including a 0% RPGT rate once the property has been owned for more than five years.<\/p>\n<p><strong>Malaysian Company:<\/strong> Covers companies incorporated in Malaysia. While local companies enjoy the same RPGT rates as individuals during the first five years, a 10% tax rate still applies from the sixth year onwards.<\/p>\n<p><strong>Non-Citizen:<\/strong> Applies to non-citizens, foreign-owned companies, and other parties that do not fall under Part I or Part II. This category is subject to higher RPGT rates, including a 10% rate even after the fifth year of ownership.<\/p>\n<table style=\"width: 100%; border-collapse: collapse;\">\n<tbody>\n<tr>\n<td style=\"background-color: #990000; color: #ffffff; padding: 8px; border: 1px solid #cccccc;\"><b>Holding Period<\/b><\/td>\n<td style=\"background-color: #990000; color: #ffffff; padding: 8px; border: 1px solid #cccccc;\"><b>Part I (Citizen\/PR)<\/b><\/td>\n<td style=\"background-color: #990000; color: #ffffff; padding: 8px; border: 1px solid #cccccc;\"><b>Part II (Malaysian Company)<\/b><\/td>\n<td style=\"background-color: #990000; color: #ffffff; padding: 8px; border: 1px solid #cccccc;\"><b>Part III (Non-Citizen)<\/b><\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\">Within 3 years<\/td>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\">30%<\/td>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\">30%<\/td>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\">30%<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\">In the 4th year<\/td>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\">20%<\/td>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\">20%<\/td>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\">30%<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\">In the 5th year<\/td>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\">15%<\/td>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\">15%<\/td>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\">30%<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\">6th year and onwards<\/td>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\">0%<\/td>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\">10%<\/td>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\">10%<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Notes. : Rates apply to disposals from 1 January 2022 onwards.<\/p>\n<h3><strong><span lang=\"EN-US\">Historical Rate Changes<\/span><\/strong><\/h3>\n<p>RPGT rates have changed over time helps property owners identify which tax rules apply based on the year the property was acquired and sold. Over the past decade, Malaysia has implemented several revisions to improve market stability and adjust tax treatment for different categories of property disposers.<\/p>\n<p><strong>2014\u20132018<\/strong><\/p>\n<ul>\n<li>Individuals paid 30% RPGT when disposing of property within the first three years.<\/li>\n<li>The rates gradually decreased depending on the holding period.<\/li>\n<li>Individuals received 0% tax from the sixth year onwards.<\/li>\n<li>Companies followed a similar decreasing structure but maintained a higher minimum rate.<\/li>\n<\/ul>\n<p><strong>2019\u20132021<\/strong><\/p>\n<ul>\n<li>A 5% RPGT rate was introduced for individuals selling property in the sixth year and beyond.<\/li>\n<li>This change removed the previous 0% exemption available after long-term ownership.<\/li>\n<li>Foreign property disposers were subject to 10% RPGT.<\/li>\n<li>Companies also paid 10% for disposals during the same period.<\/li>\n<\/ul>\n<p><strong>From 1 January 2022 onwards (Current Structure)<\/strong><\/p>\n<ul>\n<li>The 5% rate for individuals was removed.<\/li>\n<li>The 0% rate for individuals after the fifth year was reinstated.<\/li>\n<li>Companies and non-citizens continued to pay 10% for property disposals after the fifth year.<\/li>\n<\/ul>\n<p>These historical changes show that RPGT policies have evolved over time to balance government revenue objectives with long-term property ownership incentives. Reviewing these changes helps sellers better understand how different periods can affect tax obligations and financial planning decisions.<\/p>\n<h2><strong><span lang=\"EN-US\"><span id=\"2\">How to Calculate Real Property Gains Tax (RPGT)?<\/span><\/span><\/strong><\/h2>\n<p>Calculating RPGT involves more than subtracting your purchase price from your sale price. Several costs are deductible from the gain, and applying the right exemption can lower the final bill significantly.<\/p>\n<h3><strong><span lang=\"EN-US\">RPGT Formula<\/span><\/strong><\/h3>\n<p>RPGT calculation process generally follows three steps, starting from identifying the gain earned from the property disposal to the total tax amount payable.<\/p>\n<ul>\n<li><strong>Chargeable Gain:<\/strong><br \/>\nDisposal Price minus Acquisition Price minus Allowable Expenses<\/p>\n<div style=\"background: #f4f8ff; border-left: 4px solid #2563eb; padding: 18px 24px; border-radius: 6px; margin: 24px 0;\">\n<p style=\"margin: 0; font-size: 1.1em;\"><strong>Formula:<br data-start=\"378\" data-end=\"381\" \/>Disposal Price \u2212 Acquisition Price \u2212 Allowable Expenses<\/strong><\/p>\n<\/div>\n<p data-start=\"444\" data-end=\"513\"><strong data-start=\"444\" data-end=\"456\">Example:<\/strong><br data-start=\"456\" data-end=\"459\" \/>RM600,000 \u2212 RM400,000 \u2212 RM20,000 = RM180,000<\/p>\n<\/li>\n<li><strong>Taxable Amount:<\/strong><br \/>\nChargeable Gain minus Exemption (RM10,000 or 10% of gain, whichever is higher, for Part I individuals)<\/p>\n<div style=\"background: #f4f8ff; border-left: 4px solid #2563eb; padding: 18px 24px; border-radius: 6px; margin: 24px 0;\">\n<p style=\"margin: 0; font-size: 1.1em;\"><strong>Formula:<br \/>\nChargeable Gain \u2212 Exemption (RM10,000 or 10% of gain, whichever is higher)<\/strong><\/p>\n<\/div>\n<p><strong>Example:<\/strong><br \/>\nExemption = 10% \u00d7 RM180,000 = RM18,000<strong>Taxable Amount:<\/strong><br \/>\nRM180,000 \u2212 RM18,000 = RM162,000<\/li>\n<li><strong>RPGT Payable:<\/strong><br \/>\nTaxable Amount multiplied by the applicable RPGT rate<\/p>\n<div style=\"background: #f4f8ff; border-left: 4px solid #2563eb; padding: 18px 24px; border-radius: 6px; margin: 24px 0;\">\n<p style=\"margin: 0; font-size: 1.1em;\"><strong>Formula:<br \/>\nTaxable Amount \u00d7 Applicable RPGT Rate<\/strong><\/p>\n<\/div>\n<p><strong>Example:<\/strong><br \/>\nRM162,000 \u00d7 15% = RM24,300<\/li>\n<\/ul>\n<h3><strong><span lang=\"EN-US\">What Counts as Allowable Expenses?<\/span><\/strong><\/h3>\n<p>The Act permits sellers to deduct specific costs incurred during ownership and property disposal. Each deduction must be backed by an official receipt, invoice, or signed agreement. Without supporting documents, LHDN can disallow the deduction during assessment. The recognized allowable expenses include the following items.<\/p>\n<ul>\n<li>Legal fees paid for the purchase and the disposal, including stamp duty incurred at acquisition<\/li>\n<li>Real estate agent commission paid to facilitate the sale<\/li>\n<li>Renovation and improvement costs that enhance the property capital value, such as structural extensions or major refurbishment (routine repairs are not deductible)<\/li>\n<li>Advertising and marketing costs related to selling the property<\/li>\n<li>Valuation fees charged by a registered valuer for the disposal<\/li>\n<li>Interest paid on loans taken to acquire the property, where the interest has not been claimed previously against rental income<\/li>\n<\/ul>\n<p>Routine maintenance, utility bills, and quit rent are not deductible because they preserve rather than enhance the property value.<\/p>\n<h3><strong><span lang=\"EN-US\">Calculation Example: Individual (Malaysian Citizen, Year 4)<\/span><\/strong><\/h3>\n<p>Consider a Malaysian citizen who bought a condominium in Selangor for RM850,000 in 2021 and disposed of it in 2025 for RM1,150,000. The seller is now in the fourth year of ownership and incurred several allowable expenses during the sale process.<\/p>\n<table style=\"width: 100%; border-collapse: collapse;\">\n<tbody>\n<tr>\n<td style=\"background-color: #990000; color: #ffffff; padding: 8px; border: 1px solid #cccccc;\"><b>Item<\/b><\/td>\n<td style=\"background-color: #990000; color: #ffffff; padding: 8px; border: 1px solid #cccccc;\"><b>Amount (RM)<\/b><\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\"><b>Disposal Price<\/b><\/td>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\">1,150,000<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\"><b>Acquisition Price<\/b><\/td>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\">850,000<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\"><b>Legal fees and stamp duty (purchase)<\/b><\/td>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\">12,000<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\"><b>Renovation (with receipts)<\/b><\/td>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\">38,000<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\"><b>Agent commission (3%)<\/b><\/td>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\">34,500<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\"><b>Total Allowable Expenses<\/b><\/td>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\">84,500<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\"><b>Chargeable Gain<\/b><\/td>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\">215,500<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\"><b>Exemption (10% of gain or RM10,000, higher)<\/b><\/td>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\">21,550<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\"><b>Taxable Amount<\/b><\/td>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\">193,950<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\"><b>RPGT Rate (Year 4, Part I)<\/b><\/td>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\">20%<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\"><b>RPGT Payable<\/b><\/td>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\">38,790<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>The chargeable gain works out to RM215,500. Because the seller is a Part I disposer and the gain exceeds RM100,000, the 10% exemption of RM21,550 is more favourable than the flat RM10,000 option. The taxable amount of RM193,950 is then taxed at 20%, the year-four rate, producing an RPGT bill of RM38,790.<\/p>\n<h3><strong><span lang=\"EN-US\">Calculation Example: Company (Sixth Year of Ownership)<\/span><\/strong><\/h3>\n<p>Now consider a Sdn Bhd that purchased a commercial shoplot in Johor Bahru for RM1,400,000 in 2018 and disposed of it in 2025 for RM1,950,000. The company is now in the seventh year of ownership.<\/p>\n<table style=\"width: 100%; border-collapse: collapse;\">\n<tbody>\n<tr>\n<td style=\"background-color: #990000; color: #ffffff; padding: 8px; border: 1px solid #cccccc;\"><b>Item<\/b><\/td>\n<td style=\"background-color: #990000; color: #ffffff; padding: 8px; border: 1px solid #cccccc;\"><b>Amount (RM)<\/b><\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\"><b>Disposal Price<\/b><\/td>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\">1,950,000<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\"><b>Acquisition Price<\/b><\/td>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\">1,400,000<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\"><b>Legal fees and stamp duty (purchase)<\/b><\/td>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\">22,000<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\"><b>Improvement works<\/b><\/td>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\">75,000<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\"><b>Agent commission<\/b><\/td>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\">58,500<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\"><b>Total Allowable Expenses<\/b><\/td>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\">155,500<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\"><b>Chargeable Gain<\/b><\/td>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\">394,500<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\"><b>Exemption (companies not eligible)<\/b><\/td>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\">0<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\"><b>Taxable Amount<\/b><\/td>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\">394,500<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\"><b>RPGT Rate (Year 6+, Part II)<\/b><\/td>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\">10%<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\"><b>RPGT Payable<\/b><\/td>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\">39,450<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Even though the company held the property beyond five years, the 10% floor rate still applies. Companies are not entitled to the RM10,000 or 10% personal exemption that Part I individuals enjoy. This is a common oversight in <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/best-property-management-software\/\">corporate property management<\/a> planning, and it can shift expected net proceeds by tens of thousands of ringgit.<\/p>\n<h2><strong><span lang=\"EN-US\">Real Property Gains Tax (<\/span><\/strong><strong>RPGT) Exemptions in Malaysia<\/strong><\/h2>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-19554\" src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Property-Gains-Tax-RPGT-Exemptions.webp\" alt=\"Property Gains Tax (RPGT) Exemptions\" width=\"1600\" height=\"800\" srcset=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Property-Gains-Tax-RPGT-Exemptions.webp 1600w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Property-Gains-Tax-RPGT-Exemptions-300x150.webp 300w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Property-Gains-Tax-RPGT-Exemptions-1024x512.webp 1024w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Property-Gains-Tax-RPGT-Exemptions-768x384.webp 768w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Property-Gains-Tax-RPGT-Exemptions-1536x768.webp 1536w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Property-Gains-Tax-RPGT-Exemptions-840x420.webp 840w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Property-Gains-Tax-RPGT-Exemptions-150x75.webp 150w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Property-Gains-Tax-RPGT-Exemptions-696x348.webp 696w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Property-Gains-Tax-RPGT-Exemptions-1068x534.webp 1068w\" sizes=\"(max-width: 1600px) 100vw, 1600px\" \/><\/p>\n<p>Several categories of disposers and transactions qualify for full or partial exemption. Each one comes with specific conditions, and missing the right form can mean losing the benefit entirely.<\/p>\n<h3><strong>Individual Exemption (RM10,000 or 10%)<\/strong><\/h3>\n<p>Every Malaysian citizen and permanent resident is entitled to a basic exemption on each disposal, equal to RM10,000 or 10% of the chargeable gain, whichever is higher.<\/p>\n<p>This exemption applies per transaction rather than per year. A seller disposing of two properties in the same year receives the exemption on each disposal, and LHDN grants it automatically without a separate claim form.<\/p>\n<h3><strong>Once-in-a-Lifetime Residence Exemption<\/strong><\/h3>\n<p>Individuals who dispose of one private residence can claim a one-time exemption that waives RPGT on that single transaction. The claim is made by submitting Lampiran 3 attached to Form CKHT 1A within the 60-day filing window.<\/p>\n<p>Conditions apply. The property must be a residential unit, the claimant must not have used this exemption before, and the election must be made in writing. <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/best-fixed-asset-management-software\/\">Proper asset management<\/a> and ownership records are also important, as the exemption can only be claimed once in the disposer lifetime.<\/p>\n<h3><strong>Family Transfer Exemption<\/strong><\/h3>\n<p>Transfers of property between certain family members are treated as no-gain-no-loss transactions, which means no RPGT applies at the time of transfer. Qualifying relationships include transfers between spouses, between parent and child, and between grandparent and grandchild.<\/p>\n<p>This exemption is available only when the transferor is a Malaysian citizen. The recipient takes over the original acquisition date and price, which becomes relevant for any future disposal of the same property.<\/p>\n<h3><strong>Other Exemptions<\/strong><\/h3>\n<p>Additional categories outside the main individual exemptions include the following.<\/p>\n<ul>\n<li>Disposals of residential property valued at RM200,000 or below, where the property has been held for more than six years<\/li>\n<li>Compulsory acquisitions by government authorities or statutory bodies<\/li>\n<li>Disposals made pursuant to a court order<\/li>\n<li>Donations of property to the government, a state authority, or approved charitable bodies<\/li>\n<li>Property transferred as part of an approved corporate restructuring under Section 15 of the RPGTA<\/li>\n<\/ul>\n<p>Each of these exemptions requires Form CKHT 3 to be submitted together with CKHT 1A, with the relevant supporting documentation attached.<\/p>\n<h2><strong><span id=\"3\">RPGT Filing, Forms, Deadlines, and Payment<\/span><\/strong><\/h2>\n<p>The administrative side of RPGT is where many sellers stumble. Two parties carry filing obligations, not just the seller, and the timeline is tight.<\/p>\n<table style=\"width: 100%; border-collapse: collapse;\">\n<tbody>\n<tr>\n<td style=\"background-color: #990000; color: #ffffff; padding: 8px; border: 1px solid #cccccc;\"><b>Form<\/b><\/td>\n<td style=\"background-color: #990000; color: #ffffff; padding: 8px; border: 1px solid #cccccc;\"><b>Filed By<\/b><\/td>\n<td style=\"background-color: #990000; color: #ffffff; padding: 8px; border: 1px solid #cccccc;\"><b>Purpose<\/b><\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\"><b>CKHT 1A<\/b><\/td>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\">Seller (disposer)<\/td>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\">Declares the disposal and computes the RPGT payable<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\"><b>CKHT 2A<\/b><\/td>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\">Buyer (acquirer)<\/td>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\">Confirms the acquisition and supports the seller filing<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\"><b>CKHT 3<\/b><\/td>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\">Disposer claiming exemption<\/td>\n<td style=\"padding: 8px; border: 1px solid #cccccc;\">Notifies LHDN of an exemption claim, attached to CKHT 1A<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Many sellers are surprised to learn that the buyer also has a filing obligation. Failure by the buyer to submit CKHT 2A within the deadline can lead to penalties on both parties. The forms must be signed and either submitted online through MyTax or delivered to the nearest LHDN branch office.<\/p>\n<h3><strong>Submission Deadline<\/strong><\/h3>\n<p>Both seller and buyer must submit their respective forms within 60 days from the date of disposal, defined as the date of the sale and purchase agreement (SPA). The deadline is not based on the date of payment or the date the documents are stamped.<\/p>\n<p>Late submission carries a penalty of 10% on the RPGT payable, with additional charges if the actual tax payment is also delayed.<\/p>\n<p>The buyer is also required to retain 3% of the purchase consideration, or 7% if the seller is a non-citizen or foreign company, and remit it directly to LHDN as an advance payment against the seller RPGT. This retention rule is usually handled by the buyer solicitor, and it is one of the most overlooked obligations in Malaysian conveyancing.<\/p>\n<h3><strong>Payment Methods<\/strong><\/h3>\n<p>LHDN accepts payment of RPGT through several channels.<\/p>\n<ul>\n<li>The <a href=\"https:\/\/mytax.hasil.gov.my\/\">MyTax portal<\/a> at mytax.hasil.gov.my, which is the primary online channel<\/li>\n<li>e-PCB and electronic banking services connected to LHDN<\/li>\n<li>Over-the-counter payment at appointed banks, including Maybank, CIMB Bank, Public Bank, and others designated by LHDN<\/li>\n<li>Pos Malaysia counters, for sellers who prefer a manual transaction<\/li>\n<\/ul>\n<p>Receipts from any of these channels should be retained for at least seven years in case of audit or any future query from LHDN. Using <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/best-accounting-software\/\">accounting software can also help businesses organize RPGT<\/a> payment records, supporting documents, and financial reports more efficiently.<\/p>\n<h2><strong>How Proper Accounting Records Help Reduce Your RPGT Liability?<\/strong><\/h2>\n<p>Many property owners pay higher RPGT because they cannot provide complete records for allowable expenses during assessment. Keeping organized documents such as acquisition costs, renovation receipts, and disposal invoices helps support deductions and reduce the final RPGT payable amount.<\/p>\n<p>Using accounting software also makes RPGT filing easier by keeping property transactions, supporting documents, and expense records in one place. Solutions combine <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/financial-reporting-software-malaysia\/\">financial reporting<\/a> and asset management features to help businesses track property-related costs, manage fixed assets, and prepare records required for CKHT filings more efficiently.<\/p>\n<h2><strong>Conclusion<\/strong><\/h2>\n<div class=\"text-base my-auto mx-auto [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\">\n<div class=\"[--thread-content-max-width:40rem] @w-lg\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\">\n<div class=\"flex max-w-full flex-col gap-4 grow\">\n<div class=\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+&amp;]:mt-1\" dir=\"auto\" data-message-author-role=\"assistant\" data-message-id=\"defd2d33-e58e-41e1-92b1-4d714f707616\" data-message-model-slug=\"gpt-5-5\">\n<div class=\"flex w-full flex-col gap-1 empty:hidden\">\n<div class=\"markdown prose dark:prose-invert wrap-break-word w-full light markdown-new-styling\">\n<p data-start=\"0\" data-end=\"468\">understanding Real Property Gains Tax (RPGT) is important for anyone planning to sell property in Malaysia, whether as an individual or a company. The final tax payable depends on several factors, including the holding period, disposer category, allowable expenses, and available exemptions under the RPGTA. Missing important filing deadlines or failing to keep proper supporting documents can also lead to unnecessary penalties and higher tax exposure.<\/p>\n<p data-start=\"470\" data-end=\"879\" data-is-last-node=\"\" data-is-only-node=\"\">By maintaining organized financial records and using accounting software with financial reporting and asset management features, property owners can prepare CKHT filings more accurately and maximize allowable deductions. With proper planning and documentation, Malaysian property sellers can manage RPGT obligations more efficiently while reducing the overall tax burden.<\/p>\n<p data-start=\"470\" data-end=\"879\" data-is-last-node=\"\" data-is-only-node=\"\">Discover how accounting software with financial reporting and asset management features can help your business manage property-related taxes and records more efficiently with <a href=\"https:\/\/www.hashmicro.com\/my\/free-product-demo\/\">free demo<\/a> for today.<\/p>\n<p data-start=\"470\" data-end=\"879\" data-is-last-node=\"\" data-is-only-node=\"\"><span data-sheets-root=\"1\"><a href=\"https:\/\/www.hashmicro.com\/my\/free-product-demo\/?medium=free-product-demo\" target=\"_blank\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/08\/free-demo-desktop-my.webp\" data-desktop-src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/08\/free-demo-desktop-my.webp\" data-mobile-src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2024\/07\/free-demo-mobile-my.jpg\" alt=\"FreeDemo\" class=\"responsive-image-banner\"><\/a>\r\n\r\n<script>\r\n    \/\/ check which image to use based on screensize\r\n    document.addEventListener(\"DOMContentLoaded\", function() {\r\n        function updateImageSource() {\r\n            var images = document.querySelectorAll('.responsive-image-banner');\r\n            var screenWidth = window.innerWidth;\r\n\r\n            images.forEach(function(img) {\r\n                var mobileSrc = img.getAttribute('data-mobile-src');\r\n                var desktopSrc = img.getAttribute('data-desktop-src');\r\n\r\n                if (screenWidth < 576 && mobileSrc) {\r\n                    img.setAttribute('src', mobileSrc);\r\n                } else {\r\n                    img.setAttribute('src', desktopSrc);\r\n                }\r\n            });\r\n        }\r\n\r\n        \/\/ Initial check\r\n        updateImageSource();\r\n\r\n        \/\/ Update on resize\r\n        window.addEventListener('resize', updateImageSource);\r\n    });\r\n<\/script><\/span><\/p>\n<h2><strong>FAQ about Real Property Gains Tax (RPGT)<\/strong><\/h2>\n<ul class=\"bottom_faq\">\n<li>\n<details>\n<summary><strong>Do I still need to file RPGT if I sold the property at a loss?<\/strong><\/summary>\n<p>Yes. The seller must still file Form CKHT 1A within 60 days, even when the disposal results in a loss with no chargeable gain. The submission documents the no-gain position, prevents LHDN from issuing an estimated assessment, and allows the loss to be carried forward against future RPGT gains.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>What if a company holds the property for more than five years?<\/strong><\/summary>\n<p>A Malaysian company that disposes of property after the fifth year still pays 10% under Part II. The zero-rate relief available to Part I individuals does not extend to corporate disposers, which should be built into the financial model whenever a corporate disposal is being considered.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Does RPGT apply to inherited property?<\/strong><\/summary>\n<p>A direct inheritance from a deceased person to a beneficiary is not treated as a disposal under the RPGTA, so no RPGT applies at that moment. The beneficiary inherits the deceased original acquisition date and price, which then becomes the holding-period start when the property is eventually sold.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>What is the difference between RPGT and stamp duty?<\/strong><\/summary>\n<p>Stamp duty is paid by the buyer at acquisition, calculated on the purchase price, and tiered between 1% and 4%. RPGT is paid by the seller at disposal, calculated on the chargeable gain after allowable expenses and exemptions. Both must be settled for a property transfer to be legally complete.<\/p>\n<\/details>\n<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p><script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [{\n    \"@type\": \"Question\",\n    \"name\": \"Do I still need to file RPGT if I sold the property at a loss?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"Yes. The seller must still file Form CKHT 1A within 60 days, even when the disposal results in a loss with no chargeable gain. The submission documents the no-gain position, prevents LHDN from issuing an estimated assessment, and allows the loss to be carried forward against future RPGT gains.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"What if a company holds the property for more than five years?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"A Malaysian company that disposes of property after the fifth year still pays 10% under Part II. The zero-rate relief available to Part I individuals does not extend to corporate disposers, which should be built into the financial model whenever a corporate disposal is being considered.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"Does RPGT apply to inherited property?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"A direct inheritance from a deceased person to a beneficiary is not treated as a disposal under the RPGTA, so no RPGT applies at that moment. The beneficiary inherits the deceased original acquisition date and price, which then becomes the holding-period start when the property is eventually sold.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"What is the difference between RPGT and stamp duty?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"Stamp duty is paid by the buyer at acquisition, calculated on the purchase price, and tiered between 1% and 4%. RPGT is paid by the seller at disposal, calculated on the chargeable gain after allowable expenses and exemptions. Both must be settled for a property transfer to be legally complete.\"\n    }\n  }]\n}\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Selling a residential property in Kuala Lumpur or a commercial unit in Penang may seem simple until the Real Property Gains Tax (RPGT) payment becomes due. Many sellers only realize later that part of their profit must be paid to Lembaga Hasil Dalam Negeri Malaysia (LHDN). The final amount depends on the purchase date, eligible [&hellip;]<\/p>\n","protected":false},"author":46,"featured_media":19553,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[54],"tags":[],"class_list":{"0":"post-19546","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-accounting"},"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.6 (Yoast SEO v26.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Real Property Gains Tax (RPGT) in Malaysia (2026)<\/title>\n<meta name=\"description\" content=\"Understand RPGT Malaysia 2026: tax rates by holding period, exemptions, calculation formula, and CKHT filing guide.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.hashmicro.com\/my\/blog\/rpgt-real-property-gains-tax\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Real Property Gains Tax (RPGT) in Malaysia: Rates, Exemptions, and How to Calculate It (2026)\" \/>\n<meta property=\"og:description\" content=\"Understand RPGT Malaysia 2026: tax rates by holding period, exemptions, calculation formula, and CKHT filing guide.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/my\/blog\/rpgt-real-property-gains-tax\/\" \/>\n<meta property=\"og:site_name\" content=\"HashMicro Malaysia\" \/>\n<meta property=\"article:published_time\" content=\"2026-06-02T08:51:59+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Property-Gains-Tax-RPGT.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1600\" \/>\n\t<meta property=\"og:image:height\" content=\"800\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Farhana Zulaikha\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Farhana Zulaikha\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/rpgt-real-property-gains-tax\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/rpgt-real-property-gains-tax\/\"},\"author\":{\"name\":\"Farhana Zulaikha\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/1d40b74780708e6bf6789462354cec7d\"},\"headline\":\"Real Property Gains Tax (RPGT) in Malaysia: Rates, Exemptions, and How to Calculate It (2026)\",\"datePublished\":\"2026-06-02T08:51:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/rpgt-real-property-gains-tax\/\"},\"wordCount\":2573,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/rpgt-real-property-gains-tax\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Property-Gains-Tax-RPGT.webp\",\"articleSection\":[\"Accounting\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.hashmicro.com\/my\/blog\/rpgt-real-property-gains-tax\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/rpgt-real-property-gains-tax\/\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/rpgt-real-property-gains-tax\/\",\"name\":\"Real Property Gains Tax (RPGT) in Malaysia (2026)\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/rpgt-real-property-gains-tax\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/rpgt-real-property-gains-tax\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Property-Gains-Tax-RPGT.webp\",\"datePublished\":\"2026-06-02T08:51:59+00:00\",\"description\":\"Understand RPGT Malaysia 2026: tax rates by holding period, exemptions, calculation formula, and CKHT filing guide.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/rpgt-real-property-gains-tax\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.hashmicro.com\/my\/blog\/rpgt-real-property-gains-tax\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/rpgt-real-property-gains-tax\/#primaryimage\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Property-Gains-Tax-RPGT.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Property-Gains-Tax-RPGT.webp\",\"width\":1600,\"height\":800,\"caption\":\"Property Gains Tax (RPGT)\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/rpgt-real-property-gains-tax\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.hashmicro.com\/my\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Real Property Gains Tax (RPGT) in Malaysia: Rates, Exemptions, and How to Calculate It (2026)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#website\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/\",\"name\":\"HashMicro Malaysia\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.hashmicro.com\/my\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#organization\",\"name\":\"HashMicro Malaysia\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/09\/logo.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/09\/logo.webp\",\"width\":422,\"height\":255,\"caption\":\"HashMicro Malaysia\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/1d40b74780708e6bf6789462354cec7d\",\"name\":\"Farhana Zulaikha\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/image\/\",\"url\":\"http:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/10\/Farhana-Zulaikha-96x96.webp\",\"contentUrl\":\"http:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/10\/Farhana-Zulaikha-96x96.webp\",\"caption\":\"Farhana Zulaikha\"},\"description\":\"Farhana Zulaikha writes across a range of business topics, ensuring diverse content that appeals to a broad audience. He bridges the gap between complex software solutions and user understanding through clear, accessible articles. His work ensures that readers from any background can gain insights into improving business operations.\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/author\/farhana-zulaikha\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Real Property Gains Tax (RPGT) in Malaysia (2026)","description":"Understand RPGT Malaysia 2026: tax rates by holding period, exemptions, calculation formula, and CKHT filing guide.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.hashmicro.com\/my\/blog\/rpgt-real-property-gains-tax\/","og_locale":"en_US","og_type":"article","og_title":"Real Property Gains Tax (RPGT) in Malaysia: Rates, Exemptions, and How to Calculate It (2026)","og_description":"Understand RPGT Malaysia 2026: tax rates by holding period, exemptions, calculation formula, and CKHT filing guide.","og_url":"https:\/\/www.hashmicro.com\/my\/blog\/rpgt-real-property-gains-tax\/","og_site_name":"HashMicro Malaysia","article_published_time":"2026-06-02T08:51:59+00:00","og_image":[{"width":1600,"height":800,"url":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Property-Gains-Tax-RPGT.webp","type":"image\/webp"}],"author":"Farhana Zulaikha","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Farhana Zulaikha","Est. reading time":"13 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hashmicro.com\/my\/blog\/rpgt-real-property-gains-tax\/#article","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/rpgt-real-property-gains-tax\/"},"author":{"name":"Farhana Zulaikha","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/1d40b74780708e6bf6789462354cec7d"},"headline":"Real Property Gains Tax (RPGT) in Malaysia: Rates, Exemptions, and How to Calculate It (2026)","datePublished":"2026-06-02T08:51:59+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/rpgt-real-property-gains-tax\/"},"wordCount":2573,"commentCount":0,"publisher":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/#organization"},"image":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/rpgt-real-property-gains-tax\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Property-Gains-Tax-RPGT.webp","articleSection":["Accounting"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.hashmicro.com\/my\/blog\/rpgt-real-property-gains-tax\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/my\/blog\/rpgt-real-property-gains-tax\/","url":"https:\/\/www.hashmicro.com\/my\/blog\/rpgt-real-property-gains-tax\/","name":"Real Property Gains Tax (RPGT) in Malaysia (2026)","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/rpgt-real-property-gains-tax\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/rpgt-real-property-gains-tax\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Property-Gains-Tax-RPGT.webp","datePublished":"2026-06-02T08:51:59+00:00","description":"Understand RPGT Malaysia 2026: tax rates by holding period, exemptions, calculation formula, and CKHT filing guide.","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/rpgt-real-property-gains-tax\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/my\/blog\/rpgt-real-property-gains-tax\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/my\/blog\/rpgt-real-property-gains-tax\/#primaryimage","url":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Property-Gains-Tax-RPGT.webp","contentUrl":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Property-Gains-Tax-RPGT.webp","width":1600,"height":800,"caption":"Property Gains Tax (RPGT)"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/my\/blog\/rpgt-real-property-gains-tax\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/my\/blog\/"},{"@type":"ListItem","position":2,"name":"Real Property Gains Tax (RPGT) in Malaysia: Rates, Exemptions, and How to Calculate It (2026)"}]},{"@type":"WebSite","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#website","url":"https:\/\/www.hashmicro.com\/my\/blog\/","name":"HashMicro Malaysia","description":"","publisher":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.hashmicro.com\/my\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#organization","name":"HashMicro Malaysia","url":"https:\/\/www.hashmicro.com\/my\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/09\/logo.webp","contentUrl":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/09\/logo.webp","width":422,"height":255,"caption":"HashMicro Malaysia"},"image":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/1d40b74780708e6bf6789462354cec7d","name":"Farhana Zulaikha","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/image\/","url":"http:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/10\/Farhana-Zulaikha-96x96.webp","contentUrl":"http:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/10\/Farhana-Zulaikha-96x96.webp","caption":"Farhana Zulaikha"},"description":"Farhana Zulaikha writes across a range of business topics, ensuring diverse content that appeals to a broad audience. He bridges the gap between complex software solutions and user understanding through clear, accessible articles. His work ensures that readers from any background can gain insights into improving business operations.","url":"https:\/\/www.hashmicro.com\/my\/blog\/author\/farhana-zulaikha\/"}]}},"order_j":"","_links":{"self":[{"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/posts\/19546","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/users\/46"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/comments?post=19546"}],"version-history":[{"count":5,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/posts\/19546\/revisions"}],"predecessor-version":[{"id":19642,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/posts\/19546\/revisions\/19642"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/media\/19553"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/media?parent=19546"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/categories?post=19546"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/tags?post=19546"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}