{"id":15521,"date":"2026-02-13T17:30:03","date_gmt":"2026-02-13T17:30:03","guid":{"rendered":"https:\/\/www.hashmicro.com\/my\/blog\/?p=15521"},"modified":"2026-03-10T08:48:46","modified_gmt":"2026-03-10T08:48:46","slug":"refund-note-malaysia","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/my\/blog\/refund-note-malaysia\/","title":{"rendered":"Refund Notes &#038; E-Invoicing Compliance Guide 2026"},"content":{"rendered":"<div class=\"flex flex-col text-sm pb-25\">\n<article class=\"text-token-text-primary w-full focus:outline-none [--shadow-height:45px] has-data-writing-block:pointer-events-none has-data-writing-block:-mt-(--shadow-height) has-data-writing-block:pt-(--shadow-height) [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\" dir=\"auto\" tabindex=\"-1\" data-turn-id=\"request-698c22a9-6be4-8323-a904-c45d49515761-0\" data-testid=\"conversation-turn-52\" data-scroll-anchor=\"true\" data-turn=\"assistant\">\n<div class=\"text-base my-auto mx-auto pb-10 [--thread-content-margin:--spacing(4)] @w-sm\/main:[--thread-content-margin:--spacing(6)] @w-lg\/main:[--thread-content-margin:--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\" tabindex=\"-1\">\n<div class=\"flex max-w-full flex-col 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 [.text-message+&amp;]:mt-1\" dir=\"auto\" data-message-author-role=\"assistant\" data-message-id=\"72da5486-e290-4bcf-86f3-9a3cdd8b42c7\" data-message-model-slug=\"gpt-5-2\">\n<div class=\"flex w-full flex-col gap-1 empty:hidden first:pt-[1px]\">\n<div class=\"markdown prose dark:prose-invert w-full wrap-break-word dark markdown-new-styling\">\n<p data-start=\"0\" data-end=\"247\">Cash refunds are issued when a sales transaction is canceled and funds must be returned directly to the customer. While businesses often focus on the physical return of goods, the financial documentation behind the refund requires equal attention.<\/p>\n<p data-start=\"249\" data-end=\"578\">In Malaysia\u2019s evolving regulatory landscape, especially with the implementation of e-Invoicing by the Inland Revenue Board of Malaysia (LHDN), accuracy in financial documentation is increasingly important. Clear differentiation between refund documents and credit notes helps maintain proper cash flow records and tax compliance.<\/p>\n<p data-start=\"580\" data-end=\"875\" data-is-last-node=\"\" data-is-only-node=\"\">However, many companies still find it challenging to manage refund documentation correctly within their accounting processes. What exactly distinguishes a cash refund from other financial adjustments, and how can businesses handle it properly under current regulations? Let\u2019s take a closer look.<\/p>\n<\/div>\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: #8a0e19; color: #ffffff; padding: 5px;\"><b>Key Takeaways<\/b><\/span><\/h3>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"#a\"><strong>Refund notes<\/strong><\/a> formally document processed cash returns, reduce balances, and differ from credit notes by reflecting actual cash outflows.<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><strong><a href=\"#b\">Manual refund management<\/a><\/strong> increases fraud risk, human error, delays, and audit difficulties due to lack of integrated controls.<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\">Refund Note <strong><a href=\"#c\">implementation varies<\/a> <\/strong>by industry, requiring ERP integration, strict controls, and KPIs to ensure compliance, accuracy, and efficiency.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/article>\n<\/div>\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<h2 id=\"definisi-dan-konsep-dasar-refund-note\"><strong><span id=\"a\">Definition and Basic Concepts of Refund Notes<\/span><\/strong><\/h2>\n<div class=\"flex flex-col text-sm pb-25\">\n<article class=\"text-token-text-primary w-full focus:outline-none [--shadow-height:45px] has-data-writing-block:pointer-events-none has-data-writing-block:-mt-(--shadow-height) has-data-writing-block:pt-(--shadow-height) [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\" dir=\"auto\" tabindex=\"-1\" data-turn-id=\"request-WEB:c357cc1d-34bf-4a5c-9fd4-4adec3682eb0-2\" data-testid=\"conversation-turn-2\" data-scroll-anchor=\"true\" data-turn=\"assistant\">\n<div class=\"text-base my-auto mx-auto pb-10 [--thread-content-margin:--spacing(4)] @w-sm\/main:[--thread-content-margin:--spacing(6)] @w-lg\/main:[--thread-content-margin:--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\" tabindex=\"-1\">\n<div class=\"flex max-w-full flex-col 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 [.text-message+&amp;]:mt-1\" dir=\"auto\" data-message-author-role=\"assistant\" data-message-id=\"1859918c-9e1b-467e-9273-019910b29846\" data-message-model-slug=\"gpt-5-2\">\n<div class=\"flex w-full flex-col gap-1 empty:hidden first:pt-[1px]\">\n<div class=\"markdown prose dark:prose-invert w-full wrap-break-word dark markdown-new-styling\">\n<p data-start=\"0\" data-end=\"275\">A refund note is a commercial document issued by a seller as formal proof that a customer refund has been processed. Unlike sales transactions that record cash inflows, this document records cash outflows due to order cancellations, returned defective goods, or overpayments.<\/p>\n<p data-start=\"277\" data-end=\"596\">Functionally, a refund note acts as the \u201cnegative mirror\u201d of a sales invoice: while an invoice requests payment, a refund note confirms the seller\u2019s obligation to return funds has been fulfilled. In accounting, it supports journal entries that reduce cash or bank balances and adjust sales or refund liability accounts.<\/p>\n<p data-start=\"598\" data-end=\"813\" data-is-last-node=\"\" data-is-only-node=\"\">It is essential to distinguish a refund note from a credit note to ensure accurate financial reporting and ledger recording. A refund note reflects actual cash movement, not merely an accounts receivable adjustment.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/article>\n<\/div>\n<h2><strong>Crucial Difference: Refund Note vs Credit Note<\/strong><\/h2>\n<p>Understanding the difference between a refund note and a credit note is fundamental to proper accounts receivable and accounts payable management. Confusion between the two often leads to discrepancies in bank reconciliation.<\/p>\n<p><strong>Credit Note<\/strong>: This document is issued when goods are returned or prices are corrected, but no physical money is returned to the customer. The value of the return is stored as a \u201ccredit\u201d or positive balance in the customer&#8217;s account, which can be used to offset future invoice charges. No cash leaves the company&#8217;s account.<\/p>\n<p><strong>Refund Note<\/strong>: This document is issued when the seller agrees to refund money in cash, bank transfer, or credit card reversal to the customer. Cash outflow occurs in real terms. The customer&#8217;s account balance may have already been cleared (because the invoice has been paid), so this refund is purely a cash outflow transaction.<\/p>\n<p>In the context <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/e-invoice-malaysia\/\">e-Invoicing in Malaysia<\/a>, this distinction is further emphasized by different document type codes. The tax system views cash refunds as having a different audit trail than simply reducing an outstanding balance.<\/p>\n<h2 id=\"urgensi-refund-note-dalam-era-e-invoicing-malaysia\"><strong>The Urgency of Refund Notes in the Era of e-Invoicing in Malaysia<\/strong><\/h2>\n<div class=\"flex flex-col text-sm pb-25\">\n<article class=\"text-token-text-primary w-full focus:outline-none [--shadow-height:45px] has-data-writing-block:pointer-events-none has-data-writing-block:-mt-(--shadow-height) has-data-writing-block:pt-(--shadow-height) [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\" dir=\"auto\" tabindex=\"-1\" data-turn-id=\"request-WEB:c357cc1d-34bf-4a5c-9fd4-4adec3682eb0-3\" data-testid=\"conversation-turn-4\" data-scroll-anchor=\"true\" data-turn=\"assistant\">\n<div class=\"text-base my-auto mx-auto pb-10 [--thread-content-margin:--spacing(4)] @w-sm\/main:[--thread-content-margin:--spacing(6)] @w-lg\/main:[--thread-content-margin:--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\" tabindex=\"-1\">\n<div class=\"flex max-w-full flex-col 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 [.text-message+&amp;]:mt-1\" dir=\"auto\" data-message-author-role=\"assistant\" data-message-id=\"98c3577e-b7b4-4383-97b3-e9512b43bd57\" data-message-model-slug=\"gpt-5-2\">\n<div class=\"flex w-full flex-col gap-1 empty:hidden first:pt-[1px]\">\n<div class=\"markdown prose dark:prose-invert w-full wrap-break-word dark markdown-new-styling\">\n<p data-start=\"0\" data-end=\"281\">Malaysia\u2019s tax digitalization through the MyInvois initiative by LHDN has made refund notes a mandatory, legally validated reporting document rather than just an internal record. Businesses must now ensure every refund is properly documented within the official e-Invoicing system.<\/p>\n<p data-start=\"283\" data-end=\"556\">Under the <a href=\"https:\/\/mytax.hasil.gov.my\/\">MyInvois<\/a> framework, any refund issued after an invoice is validated requires an electronic refund document that references the original invoice\u2019s unique reference number (UUID). Without this UUID linkage, the LHDN system can reject the document during validation.<\/p>\n<p data-start=\"558\" data-end=\"828\" data-is-last-node=\"\" data-is-only-node=\"\">These strict regulations aim to prevent income manipulation and tax evasion by ensuring every refund has a verifiable digital trail. By linking each refund directly to the original transaction, the centralized e-Invoicing system enhances transparency and tax compliance.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/article>\n<\/div>\n<h2><strong>Required Data Structure in MyInvois Documents<\/strong><\/h2>\n<p>For a refund note to be accepted by the MyInvois LHDN system, the document must meet certain data standards. Failure to complete this data will result in validation rejection.<\/p>\n<ul>\n<li><strong>Original Invoice Reference Number<\/strong>: Must include the UUID of the previously validated e-Invoice. This links the refund to a valid sales transaction.<\/li>\n<li><strong>Reason for Refund:<\/strong> Specific explanation of why the refund is being made (e.g., damaged goods, service cancellation, pricing error).<\/li>\n<li><strong>Buyer and Seller Details:<\/strong> TIN (Tax Identification Number), name, and address information that is consistent with the data in the LHDN.<\/li>\n<li><strong>Refund Amount:<\/strong> The nominal value to be refunded, which cannot exceed the remaining value of the original invoice.<\/li>\n<li><strong>Tax Details:<\/strong> If the initial transaction involved SST (Sales and Service Tax), this document must detail the portion of tax to be refunded.<\/li>\n<\/ul>\n<h2 id=\"skenario-penggunaan-refund-note-dalam-bisnis\"><strong>Scenarios for Using Refund Notes in Business<\/strong><\/h2>\n<p>The application of this document varies depending on the industry and business model of the company. Understanding when to issue it is key to operational efficiency.<\/p>\n<ul>\n<li><strong>Return of Defective Goods (Sales Returns)<\/strong><br \/>\nThis is the most common scenario in the retail and manufacturing industries. Customers receive goods, pay in full, but then discover manufacturing defects. If the company&#8217;s policy is a \u201cmoney-back guarantee,\u201d then a refund note must be issued when the money is transferred back to the customer.<\/li>\n<li><strong>Service Cancellation<\/strong><br \/>\nIn service industries such as hospitality or consulting, customers may pay a deposit or the full fee in advance. If the customer cancels the order within the permitted period, the company must refund the funds. This document serves as proof that the cancellation has been processed financially.<\/li>\n<li><strong>Overpayment<\/strong><br \/>\nSometimes customers make transfer errors, such as paying a bill of $1,000 with a transfer of $1,050. The difference of $50 must be returned to the customer to maintain the accuracy of the <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/best-accounts-receivable-software\/\">accounts receivable balance<\/a>. Issuing a refund document ensures that the excess money is not recognized as other income.<\/li>\n<li><strong>Order Fulfillment Failure (Out of Stock)<\/strong><br \/>\nIn the world of e-commerce, it often happens that customers pay for items that are out of stock in the warehouse. Sellers must immediately refund the money. With high transaction volumes, automating the issuance of these documents is crucial to maintaining customer satisfaction.<\/li>\n<\/ul>\n<h2 id=\"dampak-akuntansi-dan-jurnal-keuangan\"><strong>Accounting and Financial Journal Impact<\/strong><\/h2>\n<p>Accounting records for refund notes involve balance sheet and income statement accounts. Accuracy in journal entries is crucial to ensure that financial statements reflect the actual conditions.<\/p>\n<p>In general, the journal for cash refunds to customers is as follows:<\/p>\n<ul>\n<li>Debit: Sales Returns and Price Reductions (Reduces Revenue)<\/li>\n<li>Debit: Output Tax Payable (If there is tax to be adjusted)<\/li>\n<li>Credit: Cash or Bank (Reduces Current Assets)<\/li>\n<\/ul>\n<p>If the refund is due to overpayment of accounts receivable, the journal entry may be different:<\/p>\n<ul>\n<li>Debit: Accounts Receivable \/ Customer Advances<\/li>\n<li>Credit: Cash or Bank<\/li>\n<\/ul>\n<p>Errors in journalizing these transactions often cause the cash balance in the ledger to not match the bank statement. This will complicate the end-of-month reconciliation process and annual audit.<\/p>\n<h2><strong><span id=\"b\">Challenges in Manual Refund Management<\/span><\/strong><\/h2>\n<p><img decoding=\"async\" class=\"alignnone wp-image-15894 size-full\" src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/Gemini_Generated_Image_4pwj5e4pwj5e4pwj-1-e1771354366831.webp\" alt=\"\" width=\"928\" height=\"698\" srcset=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/Gemini_Generated_Image_4pwj5e4pwj5e4pwj-1-e1771354366831.webp 928w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/Gemini_Generated_Image_4pwj5e4pwj5e4pwj-1-e1771354366831-300x226.webp 300w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/Gemini_Generated_Image_4pwj5e4pwj5e4pwj-1-e1771354366831-768x578.webp 768w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/Gemini_Generated_Image_4pwj5e4pwj5e4pwj-1-e1771354366831-558x420.webp 558w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/Gemini_Generated_Image_4pwj5e4pwj5e4pwj-1-e1771354366831-80x60.webp 80w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/Gemini_Generated_Image_4pwj5e4pwj5e4pwj-1-e1771354366831-150x113.webp 150w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/Gemini_Generated_Image_4pwj5e4pwj5e4pwj-1-e1771354366831-696x524.webp 696w\" sizes=\"(max-width: 928px) 100vw, 928px\" \/><\/p>\n<p>Many companies still manage the refund process manually using spreadsheets or paper forms. This practice carries significant operational risks.<\/p>\n<ul>\n<li><strong>Risk of Fraud<\/strong><br \/>\nRefunds are an area that is highly susceptible to asset misuse. Dishonest employees can issue fictitious refunds to their personal accounts if there are no strict system controls in place. Without an integrated system, detecting these fraud patterns is very difficult and often only discovered after losses have mounted.<\/li>\n<li><strong>Human Error<\/strong><br \/>\nIn manual processes, the risk of mistyping account numbers, transferring the wrong amount, or duplicating payments is very high. Fund transfer errors are very difficult to reverse and can damage customer relationships and cause direct financial losses.<\/li>\n<li><strong>Process Delays<\/strong><br \/>\nManual processes typically involve time-consuming multi-level approvals (wet signatures, physical document transfers). Delays in refunds are one of the main causes of customer dissatisfaction in the digital age, which demands speed.<\/li>\n<li><strong>Difficulties in Audit Tracking<\/strong><br \/>\nWhen auditors request proof of refund transactions from six months ago, manual systems often fail to provide supporting documents quickly. Missing or incomplete documents can lead to audit findings that are detrimental to the company.<\/li>\n<\/ul>\n<h2><strong>Digital Transformation: Refund Note Automation<\/strong><\/h2>\n<p>Adopting ERP or <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/what-is-cloud-accounting-software\/\">modern accounting software<\/a> is the solution to replace error-prone manual refund processes. An integrated system manages refunds from start to finish automatically and in a controlled manner.<\/p>\n<p>Refund Notes can be generated automatically from <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/best-pos-system\/\">sales return documents<\/a>, with customer data, invoice references, and item details pulled directly from the database to minimize human error. The system also validates that the refund amount does not exceed the original transaction.<\/p>\n<p>The approval workflow feature allows managers to approve refunds digitally from anywhere, while maintaining strict internal controls. The entire process is recorded in an audit trail to ensure full transparency.<\/p>\n<p>Integration with payment gateways or banking systems allows funds to be transferred directly from the ERP. This closes security gaps because the finance team no longer needs to manually re-enter data on the bank portal.<\/p>\n<h2><strong>Steps for Implementing Refund Notes in Accordance with LHDN Standards<\/strong><\/h2>\n<p>For companies in Malaysia, complying with LHDN standards is mandatory. Here is a step-by-step guide to ensure your refund process is compliant with regulations.<\/p>\n<ul>\n<li><strong>Verify Original Transactions<\/strong><br \/>\nBefore processing a refund, ensure that the original invoice has been validated by MyInvois. Obtain the UUID from the invoice. Without a valid UUID, you cannot issue a refund note that is valid for tax purposes.<\/li>\n<li><strong>Create Digital Documents<\/strong><br \/>\nUse an accounting system or middleware connected to the MyInvois API to create a draft document. Fill in all required fields such as the reason for the refund, tax details, and the original invoice reference. Ensure that the selected document type code complies with LHDN regulations for Refund Notes.<\/li>\n<li><strong>Internal Validation<\/strong><br \/>\nConduct an internal check. Has the returned item been received at the warehouse? Is the customer complaint valid? Managerial approval must be recorded in the system before the document is sent to LHDN.<\/li>\n<li><strong>LHDN Validation (Real-time)<\/strong><br \/>\nSend document data to LHDN via API. The MyInvois system will validate the format and data in real-time. If successful, LHDN will return the validated document complete with a new UUID and QR code.<\/li>\n<li><strong>Distribution to Customers<\/strong><br \/>\nSend the validated refund note document (with QR code) to customers. This is legal proof for customers that their refunds have been processed in accordance with tax laws.<\/li>\n<li><strong>Payment Execution<\/strong><br \/>\nOnce the document is valid, the finance department can process the fund transfer. Ensure that the payment reference number at the bank matches the document number to facilitate reconciliation.<\/li>\n<\/ul>\n<h2><strong>Case Study: Efficiency in the Retail Industry<\/strong><\/h2>\n<p>Imagine a large electronics retailer that processes hundreds of returns every month. Using manual methods, their finance team spends 3-4 days each month just matching return forms from stores with bank transfer receipts. Input errors often occur, causing discrepancies in stock and cash.<\/p>\n<p>After switching to an <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/e-invoice-implementation-malaysia\/\">integrated system e-Invoicing<\/a>, the process changed dramatically. When cashiers at the store scan returned items, the system automatically creates a draft refund note. Store managers give digital approval. The central system validates with the LHDN in seconds, and payment instructions are scheduled automatically.<\/p>\n<p>As a result, reconciliation time was reduced to just a few hours. Customer satisfaction increased because funds were received faster. Most importantly, tax compliance was ensured without additional manual effort from the company&#8217;s tax team.<\/p>\n<h2><strong>The Future of Return Management<\/strong><\/h2>\n<p>In the future, technology will further simplify this process. The integration of blockchain and smart contracts has the potential to automate instant refunds once certain conditions are met (for example, when a logistics courier scans the returned item upon pickup).<\/p>\n<p>Artificial intelligence (AI) will also play a role in detecting refund anomalies. Algorithms can learn customer return patterns and provide early warnings if there are indications of return fraud, protecting the company&#8217;s profit margins.<\/p>\n<p>In Malaysia, as the implementation of MyInvois matures, data integration between sales, banking, and taxation systems will become increasingly seamless. Businesses that have prepared their digital infrastructure today will have a competitive advantage in terms of cost efficiency and operational agility.<\/p>\n<h2 id=\"implementasi-sektoral-studi-kasus-penggunaan-refund-note\"><strong><span id=\"c\">Sectoral Implementation: Case Study on the Use of Refund Notes<\/span><\/strong><\/h2>\n<p><img decoding=\"async\" class=\"alignnone wp-image-15895 size-large\" src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/image-3-e1771354311681-1024x507.webp\" alt=\"\" width=\"696\" height=\"345\" srcset=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/image-3-e1771354311681-1024x507.webp 1024w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/image-3-e1771354311681-300x148.webp 300w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/image-3-e1771354311681-768x380.webp 768w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/image-3-e1771354311681-1536x760.webp 1536w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/image-3-e1771354311681-849x420.webp 849w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/image-3-e1771354311681-150x74.webp 150w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/image-3-e1771354311681-696x344.webp 696w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/image-3-e1771354311681-1068x528.webp 1068w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/image-3-e1771354311681.webp 1548w\" sizes=\"(max-width: 696px) 100vw, 696px\" \/><\/p>\n<p>Although the basic principle of refunds is universal, the technical execution and operational challenges vary greatly depending on the industry. The implementation of Refund Notes in ERP systems must be configured to accommodate the unique nuances of each business model, from high-volume retail to manufacturing with large transaction values.<\/p>\n<h3>Retail and FMCG (Fast-Moving Consumer Goods) Sector<\/h3>\n<p>In the retail industry, transaction volumes are very high with relatively small transaction values. The main challenges here are speed and integration between the Point of Sale (POS) system and the back-end ERP.<\/p>\n<p><strong>Case Scenario<\/strong>: A customer returns ill-fitting clothes at a physical store and requests a cash refund or credit card reversal, rather than an exchange. The cashier must process this return instantly.<\/p>\n<p><strong>ERP Implementation:<\/strong><\/p>\n<ul>\n<li><strong>Real-time POS Integration:<\/strong> The system must automatically trigger the creation of a Refund Note in the finance module as soon as the return transaction is authorized at the cash register. This prevents cash discrepancies in the cash drawer at the end-of-day settlement.<\/li>\n<li><strong>Automatic Stock Validation:<\/strong> The refund document should not be issued before the system verifies that the item has been scanned back into inventory (Goods Receipt). This is a control mechanism to prevent asset leakage.<\/li>\n<li><strong>B2C E-Invoice Management:<\/strong>For retail in Malaysia, although <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/consolidated-e-invoice\/\">multiply purchases<\/a> are allowed for B2C, refunds to customers who request a full tax invoice require the issuance of a specific Refund Note validated by LHDN for their tax claim purposes.<\/li>\n<\/ul>\n<h3>Manufacturing and B2B Industries<\/h3>\n<p>Unlike retail, refunds in the manufacturing sector are rarely impulsive. Usually, they are related to warranty claims, mass production defects, or late delivery penalties that are returned to clients.<\/p>\n<p><strong>Case Scenario:<\/strong> An auto parts factory ships 1,000 units of components to an automotive client. 50 units turn out to be defective (NG &#8211; Not Good). The client has paid in full in advance. The factory must refund the value of the 50 units via bank transfer.<\/p>\n<p><strong>ERP Implementation:<\/strong><\/p>\n<ul>\n<li><strong>Quality Control (QC) Linkage:<\/strong> Refund Notes can only be processed after the QC department validates the defect report and issues a goods disposition document. The ERP must block outgoing payments without reference to this QC document.<\/li>\n<li><strong>Complex Tax Handling:<\/strong> In large-value B2B transactions, tax calculations (SST or VAT) must be accurate. The Refund Note must automatically reverse the output tax liability previously recorded on the original invoice, ensuring the company does not pay tax on revenue that was not received.<\/li>\n<\/ul>\n<h3>Distribution and Wholesale<\/h3>\n<p>Distributors often encounter volume rebates or sales incentives that are paid back to retailers at the end of the period, which technically constitute cash expenditures and require Refund Note documentation if not deducted directly from invoices.<\/p>\n<p><strong>Case Scenario:<\/strong> The distributor provides an annual cashback incentive of 2% to retailers who reach their purchase targets. This payment is made via bank transfer, not deducted from future invoices.<\/p>\n<p><strong>ERP Implementation:<\/strong><\/p>\n<ul>\n<li><strong>Automated Rebate Calculation:<\/strong> The sales module in the ERP tracks purchase accumulations and automatically generates a draft Refund Note at the end of the fiscal period.<\/li>\n<li><strong>Batch Processing:<\/strong> Since distributors may have hundreds of retailers, the system must be able to process Refund Notes in bulk (batch) and upload them to the banking portal for mass payments, as well as to the LHDN portal for simultaneous e-Invoice validation.<\/li>\n<\/ul>\n<h3>E-Commerce and Marketplace<\/h3>\n<p>E-commerce faces payment reconciliation complexities due to the existence of intermediaries (payment gateways or marketplace escrow). Refunds often do not come directly from the company&#8217;s bank account, but rather deduct the balance in the payment gateway.<\/p>\n<p><strong>ERP Implementation:<\/strong><\/p>\n<ul>\n<li><strong>Gateway Reconciliation:<\/strong> Refund Notes in the ERP must be mapped to an intermediary account (clearing account), not directly to the main bank. The system must then match the settlement report from the marketplace with internal records to ensure that marketplace service fees for canceled transactions are also adjusted.<\/li>\n<li><strong>Partial Refunds:<\/strong> The system must be flexible in handling partial refunds, for example when a customer purchases 3 items in one order (one invoice number) but only returns 1 item. The Refund Note must reference the UUID (Unique Identifier) of the original e-Invoice but only with a partial value.<\/li>\n<\/ul>\n<h2 id=\"langkah-implementasi-teknis-dan-kpi\"><strong>Technical Implementation Steps and Success KPIs<\/strong><\/h2>\n<p>Adopting effective Refund Note management is not simply a matter of installing a software module. A structured approach is needed to ensure compliance, security, and efficiency. Here is a step-by-step implementation guide along with metrics to measure its success.<\/p>\n<h3>Phase 1: Policy and Workflow Configuration<\/h3>\n<p>Before touching the system, determine the authorization matrix. Cash disbursements are a high-risk area.<\/p>\n<ul>\n<li><strong>Tiered Approval:<\/strong> Set nominal limits in the ERP. For example, refunds under RM 500 can be approved by the Supervisor, while those above RM 10,000 require approval from the Finance Manager and Director.<\/li>\n<li><strong>Mandatory Fields:<\/strong> Configure the system to require the filling in of the reason code and supporting evidence (photo of damaged goods or official report) before the document can be submitted.<\/li>\n<\/ul>\n<h3>Phase 2: Data Integration and E-Invoice Validation<\/h3>\n<p>In the context of Malaysian LHDN compliance or other country tax regulations:<\/p>\n<ul>\n<li><strong>Document Mapping:<\/strong> Ensure that the \u201cRefund Note\u201d document type in the ERP is correctly mapped to the appropriate document type code in the national e-Invoice standard (e.g., Code 02 or similar depending on the applicable XML\/JSON schema).<\/li>\n<li><strong>Reference Validation:<\/strong> The system must be locked so that Refund Notes cannot be created without linking to a valid Original Invoice Number. This prevents \u201cghost refunds\u201d without a prior sales transaction.<\/li>\n<\/ul>\n<h3>Phase 3: User Acceptance Test (UAT)<\/h3>\n<p>Simulate extreme scenarios:<\/p>\n<ul>\n<li>Multi-currency refunds with different exchange rates at the time of purchase and refund.<\/li>\n<li>Refunds for invoices that are past their fiscal year (implications for Retained Earnings).<\/li>\n<li>Cancellation of validated Refund Notes (how to handle Credit Notes for Refund Notes in case of input errors).<\/li>\n<\/ul>\n<h3>Key Performance Indicators (KPIs) for Refund Management<\/h3>\n<p>To measure the effectiveness of your new system, monitor the following indicators regularly through your ERP dashboard:<\/p>\n<ul>\n<li>Refund Cycle Time: The average time required from customer request to receipt of funds. Target: &lt; 3 business days for bank transfers, instant for digital wallets. Slow cycles drastically reduce customer satisfaction.<\/li>\n<li>Refund Error Rate: Percentage of Refund Notes rejected by the tax authority (LHDN) or failing bank clearing. Target: &lt; 1%. High error rates indicate problems with master data quality or system configuration.<\/li>\n<li>Cost per Refund Transaction: Operational costs (staff time + bank transaction fees) to process one refund. ERP automation should significantly reduce this figure<\/li>\n<li>Refund to Sales Ratio: Percentage of refund value to total gross sales. A sudden spike in this ratio could be an early indicator of product quality issues or misleading product descriptions in the catalog.<\/li>\n<\/ul>\n<h2 id=\"jebakan-umum-dan-strategi-mitigasi\"><strong>Common Pitfalls and Risk Mitigation Strategies<\/strong><\/h2>\n<p>Even with the most advanced ERP systems, human error and procedural loopholes can lead to financial losses. Here are the most common risks associated with Refund Notes and how to close the loopholes.<\/p>\n<h3>The \u201cDouble Dip\u201d Error<\/h3>\n<p>Occurs when staff issue a Credit Note to appease a customer, then finance also processes a Refund Note for the same case due to miscommunication. As a result, the refund amount exceeds the original invoice.<\/p>\n<p><strong>Mitigation:<\/strong> Use the Three-Way Matching feature in the returns module of Equip ERP so that the system detects invoices that already have deduction documents. If the total Credit Note and Refund Note exceed the invoice value, the system should automatically block the transaction (hard stop).<\/p>\n<h3>Tax Non-Compliance<\/h3>\n<p>Errors occur when companies refund funds including tax but do not reclaim output tax, or fail to issue valid e-Invoices, resulting in invalid tax deductions. This poses a risk of penalties and financial losses.<\/p>\n<p><strong>Mitigation:<\/strong> Automate tax journals when Refund Notes are created by debiting the Output Tax account or related adjustment accounts. Ensure that the e-Invoice validation status from the LHDN is received before funds are transferred to maintain tax compliance.<\/p>\n<h3>Internal Fraud<\/h3>\n<p>Dishonest employees can create fictitious Refund Notes to personal accounts by utilizing <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/invoice-fraud\/\">old valid invoice data<\/a>. This risk increases without strict internal controls.<\/p>\n<p><strong>Mitigation:<\/strong> Implement Segregation of Duties by separating account management access and Refund Note approval. The system should also issue warnings if the destination account differs from the original payment or if one account receives refunds from multiple different customers.<\/p>\n<h3>Foreign Exchange Rate Discrepancy<\/h3>\n<p>The difference in exchange rates between the date of sale and the date of refund can cause discrepancies that interfere with bank reconciliation. Without accurate recording, financial statements become inaccurate.<\/p>\n<p><strong>Mitigation:<\/strong> Establish a clear policy on whether refunds follow the original foreign currency value or the current exchange rate. Configure the ERP to automatically post the discrepancy to the Foreign Exchange Gain\/Loss account when the Refund Note is posted.<\/p>\n<h2 id=\"praktik-terbaik-tingkat-lanjut\"><strong>Advanced Best Practices and Automation<\/strong><\/h2>\n<p>For companies that want to go beyond basic compliance, here are advanced strategies for optimizing refund management.<\/p>\n<ul>\n<li><strong>Host-to-Host (H2H) Integration with Banking<\/strong><br \/>\nInstead of downloading CSV files and uploading them to the bank portal (which is prone to manipulation), use Host-to-Host (H2H) integration so that payment instructions from Refund Notes are sent directly to the bank server via an encrypted channel. Payment status (Successful\/Failed\/Pending) is sent back to the ERP in real time so that documents are automatically updated without manual intervention.<\/li>\n<li><strong>Predictive Analytics for Cash Flow Management<\/strong><br \/>\nLeverage historical Refund Note data to predict liquidity needs and anticipate spikes in refunds, such as post-holiday periods. The system can alert CFOs to prepare cash reserves, while analyzing return reason trends to support product development and quality control.<\/li>\n<\/ul>\n<h3>Customer Self-Service Portal<\/h3>\n<p>Provide an <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/erp-software-integration\/\">ERP-integrated customer<\/a> portal so that B2B and B2C customers can submit refunds independently, from selecting invoices to tracking payment status. This solution reduces the burden on customer service teams and minimizes inefficient email communication.<\/p>\n<p>The implementation of advanced Refund Notes is not just about returning money; it is about closing the transaction cycle with perfect data integrity. In an era of digital transparency and strict tax oversight, the ability to prove the validity of every cent that leaves the company is an invaluable asset for business sustainability.<\/p>\n<h2><strong>Conclusion<\/strong><\/h2>\n<div class=\"flex flex-col text-sm pb-25\">\n<article class=\"text-token-text-primary w-full focus:outline-none [--shadow-height:45px] has-data-writing-block:pointer-events-none has-data-writing-block:-mt-(--shadow-height) has-data-writing-block:pt-(--shadow-height) [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\" dir=\"auto\" tabindex=\"-1\" data-turn-id=\"request-698c1b8f-b4dc-8322-a14b-cd577d67054c-4\" data-testid=\"conversation-turn-22\" data-scroll-anchor=\"true\" data-turn=\"assistant\">\n<div class=\"text-base my-auto mx-auto pb-10 [--thread-content-margin:--spacing(4)] @w-sm\/main:[--thread-content-margin:--spacing(6)] @w-lg\/main:[--thread-content-margin:--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\" tabindex=\"-1\">\n<div class=\"flex max-w-full flex-col 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 [.text-message+&amp;]:mt-1\" dir=\"auto\" data-message-author-role=\"assistant\" data-message-id=\"f6711c1c-0d97-450c-891a-7cf9cb2e4f04\" data-message-model-slug=\"gpt-5-2\">\n<div class=\"flex w-full flex-col gap-1 empty:hidden first:pt-[1px]\">\n<div class=\"markdown prose dark:prose-invert w-full wrap-break-word dark markdown-new-styling\">\n<p data-start=\"0\" data-end=\"328\">Refund notes are not merely administrative formalities but essential components of a company\u2019s revenue cycle and tax compliance framework. Amid Malaysia\u2019s shift toward a more transparent digital tax environment, accurate and well-documented refund management has become a non-negotiable requirement for sustainable operations.<\/p>\n<p data-start=\"330\" data-end=\"614\">Poorly managed refund processes can lead to revenue leakage, tax penalties, and declining customer trust. In contrast, a structured and automated approach transforms this obligation into an opportunity to demonstrate professionalism, accountability, and strong financial governance.<\/p>\n<p data-start=\"616\" data-end=\"926\" data-is-last-node=\"\" data-is-only-node=\"\">Modern businesses should treat refund management as a strategic financial function rather than a back-office task. By leveraging the right technology and <a href=\"https:\/\/www.hashmicro.com\/my\/free-product-demo\/\">consulting with experienced<\/a> system specialists, companies can navigate regulatory complexity more efficiently while staying focused on core business growth.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/article>\n<\/div>\n<h2 class=\"faqTitle\">Frequently Asked Question<\/h2>\r\n<style>\r\n\t#main-article p.faqTitle{\r\n\t\ttext-align: center;\r\n\t\tmargin-bottom: 0;\r\n\t\tmargin-top: 50px;\r\n\t\tfont-weight: bold;\r\n\t}\r\n\t\r\n\t.accordion-wrapper{\r\n\t\tbackground-color: white;\r\n\t\tborder: 1px solid #9c171e;\r\n\t\tborder-radius: 6px;\r\n\t\ttransition: 0.4s ease;\r\n\t\tmargin-bottom: 20px;\r\n\t\toverflow: hidden;\r\n\t}\r\n\t\r\n\t.header-faq{\r\n\t\tdisplay: flex;\r\n\t\tborder: none;\r\n\t\tborder-radius: 6px 6px 6px 6px;\r\n\t\tbackground: #FFF;\r\n\t\talign-items: center;\r\n\t\tpadding: 18px;\r\n\t\ttransition: 0.4s;\r\n\t\tcursor: pointer;\r\n\t\tjustify-content: space-between;\r\n\t}\r\n\t\r\n\t.header-faq p{\r\n\t\tmargin-bottom: 0;\r\n\t}\r\n\t\r\n\t.question {\r\n\t\tcolor: #3C3C3C;\r\n\t\twidth: 100%;\r\n\t\ttext-align: left;\r\n\t\tfont-size: 16px;\r\n\t\tline-height: 20px;\r\n\t \ttransition: 0.4s;\r\n\t\tborder: none;\r\n\t\tborder-radius: 6px 6px 6px 6px;\r\n\t\tbackground: #FFF;\r\n\t\tpadding: 0;\r\n\t\ttext-transform: uppercase;\r\n\t\tfont-weight: 700;\r\n\t\tdisplay: flex;\r\n\t\tjustify-content: space-between;\r\n\t\talign-items: center;\r\n\t}\r\n\r\n\t.header-faq.active {\r\n\t  background-color: #FFF;\r\n\t}\r\n\t\r\n\tbutton.question{\r\n\t\tcolor: unset;\r\n\t\tbackground-color: unset;\r\n\t}\r\n\t\r\n\tbutton.question::after{\r\n\t\tcontent: \"<\";\r\n\t\twidth: 2.2rem;\r\n\t\theight: 2.2rem;\r\n\t\tdisplay: flex;\r\n\t\tjustify-content: center;\r\n\t\talign-items: center;\r\n\t\tborder-radius: 50%;\r\n\t\tcolor: #FFF;\r\n\t\tflex-shrink: 0;\r\n\t\tfloat: right;\r\n\t\ttransition: 0.4s;\r\n\t\topacity: 0.4;\r\n\t\tposition: relative;\r\n\t\ttransform: rotate(-90deg);\r\n\t\tbackground-color: #9c171e;\r\n\t\tfont-family: monospace;\r\n\t}\r\n\r\n\t.answer {\r\n\t  padding: 0 18px;\r\n\t  max-height: 0;\r\n\t  overflow: hidden;\r\n\t  background-color: white;\r\n\t  border-radius: 0 0 6px 6px;\r\n\t  transition: max-height 0.4s ease, opacity 0.4s ease;\r\n\t  opacity: 0;\r\n\t}\r\n\r\n\t.answer p{\r\n\t\tfont-size: 16px;\r\n\t\tfont-weight: 400;\r\n\t\tline-height: 28px;\r\n\t\ttext-align: left;\r\n\t\ttext-transform: none;\r\n\t\tcolor: #494949;\r\n\t}\r\n\t\r\n\t.accordion-wrapper.active{\r\n\t\tbox-shadow: 0px 0px 20px 0px #4034AB38;\r\n\t}\r\n\t\r\n\t.header-faq.active .accordion-icon .vLine{\r\n\t\ttransform: translateX(-50%) rotate(0deg);\r\n\t}\r\n\r\n\t.header-faq.active + .answer {\r\n\t  opacity: 1;\r\n\t}\r\n\t\r\n\t.header-faq.active button.question::after{\r\n\t\ttransform: rotate(90deg);\r\n\t\topacity: 1;\r\n\t}\r\n\t\r\n\t.header-faq:hover button.question::after{\r\n\t\topacity: 1;\r\n\t}\r\n\t\r\n\t.faq-h3-addition {\r\n\t\tmargin: 0 !important;\r\n\t\tpadding-right: 15px;\r\n\t\tmin-width: 0;\r\n\t}\r\n<\/style>\r\n\r\n    <div class=\"accordion-wrapper\">\r\n        <div class=\"header-faq\">\r\n            <button class=\"question\">Apa perbedaan utama antara Refund Note dan Credit Note?<\/button>\r\n        <\/div>\r\n        <div class=\"answer\">\r\n            <p>Refund Note diterbitkan saat uang dikembalikan secara tunai atau transfer kepada pelanggan, sedangkan Credit Note diterbitkan untuk mengurangi saldo tagihan atau memberikan kredit toko tanpa pengeluaran uang tunai.<\/p>\r\n        <\/div>\r\n    <\/div>\r\n    <div class=\"accordion-wrapper\">\r\n        <div class=\"header-faq\">\r\n            <button class=\"question\">Apakah Refund Note wajib divalidasi oleh LHDN dalam sistem MyInvois?<\/button>\r\n        <\/div>\r\n        <div class=\"answer\">\r\n            <p>Ya, dalam era e-Invoicing Malaysia, Refund Note adalah jenis dokumen yang wajib diserahkan ke sistem MyInvois untuk mendapatkan validasi dan UUID agar diakui secara sah oleh otoritas pajak.<\/p>\r\n        <\/div>\r\n    <\/div>\r\n    <div class=\"accordion-wrapper\">\r\n        <div class=\"header-faq\">\r\n            <button class=\"question\">Kapan waktu yang tepat untuk menerbitkan Refund Note?<\/button>\r\n        <\/div>\r\n        <div class=\"answer\">\r\n            <p>Refund Note harus diterbitkan segera setelah keputusan pengembalian dana disetujui, biasanya akibat pengembalian barang, pembatalan jasa, atau koreksi kelebihan pembayaran, dan sebelum uang ditransfer.<\/p>\r\n        <\/div>\r\n    <\/div>\r\n    <div class=\"accordion-wrapper\">\r\n        <div class=\"header-faq\">\r\n            <button class=\"question\">Data apa saja yang wajib ada dalam Refund Note sesuai standar LHDN?<\/button>\r\n        <\/div>\r\n        <div class=\"answer\">\r\n            <p>Dokumen wajib memuat UUID faktur asli, alasan pengembalian, detail pembeli dan penjual (termasuk TIN), jumlah pengembalian, dan rincian pajak yang relevan.<\/p>\r\n        <\/div>\r\n    <\/div>\r\n    <div class=\"accordion-wrapper\">\r\n        <div class=\"header-faq\">\r\n            <button class=\"question\">Bagaimana cara mencatat jurnal akuntansi untuk Refund Note?<\/button>\r\n        <\/div>\r\n        <div class=\"answer\">\r\n            <p>Secara umum, jurnalnya adalah mendebit akun Retur Penjualan (dan pajak keluaran jika ada) serta mengkredit akun Kas atau Bank, yang mencerminkan pengurangan pendapatan dan aset kas.<\/p>\r\n        <\/div>\r\n    <\/div>\r\n\r\n<script>\r\n    function toggleAccordion() {\r\n        var acc = document.getElementsByClassName(\"header-faq\");\r\n        for (var i = 0; i < acc.length; i++) {\r\n            acc[i].addEventListener(\"click\", function() {\r\n                for (var j = 0; j < acc.length; j++) {\r\n                    if (acc[j] !== this && acc[j].classList.contains(\"active\")) {\r\n                        acc[j].classList.remove(\"active\");\r\n                        acc[j].closest('.accordion-wrapper').classList.remove('active');\r\n                        var panel = acc[j].nextElementSibling;\r\n                        panel.style.maxHeight = null;\r\n                    }\r\n                }\r\n\r\n                this.classList.toggle(\"active\");\r\n                var accordionWrapper = this.closest('.accordion-wrapper');\r\n                var panel = this.nextElementSibling;\r\n                if (this.classList.contains(\"active\")) {\r\n                    panel.style.maxHeight = panel.scrollHeight + \"px\";\r\n                    accordionWrapper.classList.add('active');\r\n                } else {\r\n                    panel.style.maxHeight = null;\r\n                    accordionWrapper.classList.remove('active');\r\n                }\r\n            });\r\n        }\r\n    }\r\n\r\n    document.addEventListener('DOMContentLoaded', toggleAccordion);\r\n<\/script>\r\n\r\n<!-- <script>\r\n    document.addEventListener('DOMContentLoaded', function() {\r\n        document.querySelectorAll('.header-faq .question').forEach(btn => {\r\n            const text = btn.textContent.trim();\r\n            const h3 = document.createElement('h3');\r\n            h3.textContent = text;\r\n            h3.className = \"faq-h3-addition\";\r\n            btn.textContent = '';\r\n            btn.appendChild(h3);\r\n        });\r\n    });\r\n<\/script> -->\n","protected":false},"excerpt":{"rendered":"<p>Cash refunds are issued when a sales transaction is canceled and funds must be returned directly to the customer. While businesses often focus on the physical return of goods, the financial documentation behind the refund requires equal attention. In Malaysia\u2019s evolving regulatory landscape, especially with the implementation of e-Invoicing by the Inland Revenue Board of [&hellip;]<\/p>\n","protected":false},"author":39,"featured_media":15893,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[221],"tags":[],"class_list":{"0":"post-15521","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-invoicing"},"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>Refund Notes &amp; E-Invoicing Compliance Guide 2026 - HashMicro Malaysia<\/title>\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\/refund-note-malaysia\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Refund Notes &amp; E-Invoicing Compliance Guide 2026\" \/>\n<meta property=\"og:description\" content=\"Cash refunds are issued when a sales transaction is canceled and funds must be returned directly to the customer. While businesses often focus on the physical return of goods, the financial documentation behind the refund requires equal attention. In Malaysia\u2019s evolving regulatory landscape, especially with the implementation of e-Invoicing by the Inland Revenue Board of [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/my\/blog\/refund-note-malaysia\/\" \/>\n<meta property=\"og:site_name\" content=\"HashMicro Malaysia\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-13T17:30:03+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-10T08:48:46+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/image-2.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Siti binti Rahman\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Siti binti Rahman\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"18 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\/refund-note-malaysia\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/refund-note-malaysia\/\"},\"author\":{\"name\":\"Siti binti Rahman\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/e4dba2ae170a31d8f85bf173ebfbf7a5\"},\"headline\":\"Refund Notes &#038; E-Invoicing Compliance Guide 2026\",\"datePublished\":\"2026-02-13T17:30:03+00:00\",\"dateModified\":\"2026-03-10T08:48:46+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/refund-note-malaysia\/\"},\"wordCount\":3933,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/refund-note-malaysia\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/image-2.webp\",\"articleSection\":[\"Invoicing\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.hashmicro.com\/my\/blog\/refund-note-malaysia\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/refund-note-malaysia\/\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/refund-note-malaysia\/\",\"name\":\"Refund Notes & E-Invoicing Compliance Guide 2026 - HashMicro Malaysia\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/refund-note-malaysia\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/refund-note-malaysia\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/image-2.webp\",\"datePublished\":\"2026-02-13T17:30:03+00:00\",\"dateModified\":\"2026-03-10T08:48:46+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/refund-note-malaysia\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.hashmicro.com\/my\/blog\/refund-note-malaysia\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/refund-note-malaysia\/#primaryimage\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/image-2.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/image-2.webp\",\"width\":1920,\"height\":1080},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/refund-note-malaysia\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.hashmicro.com\/my\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Refund Notes &#038; E-Invoicing Compliance Guide 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\/e4dba2ae170a31d8f85bf173ebfbf7a5\",\"name\":\"Siti binti Rahman\",\"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\/cropped-Siti-binti-Rahman-MY-1080x1080-BG-cafe-96x96.webp\",\"contentUrl\":\"http:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/10\/cropped-Siti-binti-Rahman-MY-1080x1080-BG-cafe-96x96.webp\",\"caption\":\"Siti binti Rahman\"},\"description\":\"Siti binti Rahman specializes in accounting-related topics, crafting articles that simplify complex financial concepts for business owners and finance professionals. Her content includes practical guides on accounting automation, compliance, and financial reporting. Through well-researched and accessible writing, she supports readers in improving their financial management strategies.\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/author\/siti-binti-rahman\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Refund Notes & E-Invoicing Compliance Guide 2026 - HashMicro Malaysia","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\/refund-note-malaysia\/","og_locale":"en_US","og_type":"article","og_title":"Refund Notes & E-Invoicing Compliance Guide 2026","og_description":"Cash refunds are issued when a sales transaction is canceled and funds must be returned directly to the customer. While businesses often focus on the physical return of goods, the financial documentation behind the refund requires equal attention. In Malaysia\u2019s evolving regulatory landscape, especially with the implementation of e-Invoicing by the Inland Revenue Board of [&hellip;]","og_url":"https:\/\/www.hashmicro.com\/my\/blog\/refund-note-malaysia\/","og_site_name":"HashMicro Malaysia","article_published_time":"2026-02-13T17:30:03+00:00","article_modified_time":"2026-03-10T08:48:46+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/image-2.webp","type":"image\/webp"}],"author":"Siti binti Rahman","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Siti binti Rahman","Est. reading time":"18 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hashmicro.com\/my\/blog\/refund-note-malaysia\/#article","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/refund-note-malaysia\/"},"author":{"name":"Siti binti Rahman","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/e4dba2ae170a31d8f85bf173ebfbf7a5"},"headline":"Refund Notes &#038; E-Invoicing Compliance Guide 2026","datePublished":"2026-02-13T17:30:03+00:00","dateModified":"2026-03-10T08:48:46+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/refund-note-malaysia\/"},"wordCount":3933,"commentCount":0,"publisher":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/#organization"},"image":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/refund-note-malaysia\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/image-2.webp","articleSection":["Invoicing"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.hashmicro.com\/my\/blog\/refund-note-malaysia\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/my\/blog\/refund-note-malaysia\/","url":"https:\/\/www.hashmicro.com\/my\/blog\/refund-note-malaysia\/","name":"Refund Notes & E-Invoicing Compliance Guide 2026 - HashMicro Malaysia","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/refund-note-malaysia\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/refund-note-malaysia\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/image-2.webp","datePublished":"2026-02-13T17:30:03+00:00","dateModified":"2026-03-10T08:48:46+00:00","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/refund-note-malaysia\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/my\/blog\/refund-note-malaysia\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/my\/blog\/refund-note-malaysia\/#primaryimage","url":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/image-2.webp","contentUrl":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/image-2.webp","width":1920,"height":1080},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/my\/blog\/refund-note-malaysia\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/my\/blog\/"},{"@type":"ListItem","position":2,"name":"Refund Notes &#038; E-Invoicing Compliance Guide 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\/e4dba2ae170a31d8f85bf173ebfbf7a5","name":"Siti binti Rahman","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\/cropped-Siti-binti-Rahman-MY-1080x1080-BG-cafe-96x96.webp","contentUrl":"http:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/10\/cropped-Siti-binti-Rahman-MY-1080x1080-BG-cafe-96x96.webp","caption":"Siti binti Rahman"},"description":"Siti binti Rahman specializes in accounting-related topics, crafting articles that simplify complex financial concepts for business owners and finance professionals. Her content includes practical guides on accounting automation, compliance, and financial reporting. Through well-researched and accessible writing, she supports readers in improving their financial management strategies.","url":"https:\/\/www.hashmicro.com\/my\/blog\/author\/siti-binti-rahman\/"}]}},"order_j":"","_links":{"self":[{"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/posts\/15521","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\/39"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/comments?post=15521"}],"version-history":[{"count":8,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/posts\/15521\/revisions"}],"predecessor-version":[{"id":17484,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/posts\/15521\/revisions\/17484"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/media\/15893"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/media?parent=15521"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/categories?post=15521"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/tags?post=15521"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}