{"id":17177,"date":"2026-03-05T09:07:50","date_gmt":"2026-03-05T09:07:50","guid":{"rendered":"https:\/\/www.hashmicro.com\/my\/blog\/?p=17177"},"modified":"2026-03-05T09:30:01","modified_gmt":"2026-03-05T09:30:01","slug":"invoice-fraud","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/my\/blog\/invoice-fraud\/","title":{"rendered":"Invoice Fraud in AP: Red Flags and Prevention in Malaysia"},"content":{"rendered":"<p data-start=\"0\" data-end=\"496\">In today\u2019s corporate world, your accounts payable workflow can feel like the engine that keeps everything moving. You pay suppliers on time, you protect the supply chain, and you keep cash flow predictable. But here\u2019s the uncomfortable truth: <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/e-invoice-implementation-malaysia\/\">invoice fraud now sits right in the middle of that process<\/a>, because scammers rarely hack their way in. They talk their way in, using social engineering to exploit routines, trust, and small gaps in approval steps.<\/p>\n<p data-start=\"498\" data-end=\"996\">The scary part is how normal it looks. A fake invoice can land in your inbox and match your vendor format, your tone, even your payment schedule. You approve it, the transfer goes out, and only later you notice <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/tax-invoice\/\">the bank details<\/a> were changed or the vendor never asked for anything. By then, it\u2019s not just money you lose. You lose confidence, you lose time, and you risk awkward supplier disputes. And honestly, who wants to explain to management that a \u201croutine payment\u201d turned into a costly lesson?<\/p>\n<p data-start=\"998\" data-end=\"1548\">If you operate in Malaysia, the pressure feels even higher because payments move fast and digital channels are everywhere. That speed is great until it helps fraud scale. So you need to treat invoice handling like a control point, not an admin chore, and you also need to respect local compliance realities: protect vendor and staff data under the Personal Data Protection Act 2010, and stay alert to the fact that fraud proceeds can trigger serious legal consequences under <a href=\"https:\/\/lom.agc.gov.my\/ilims\/upload\/portal\/akta\/outputaktap\/1719599_BI\/010722_Act%20613_final.pdf\">Malaysia\u2019s anti money laundering law<\/a>.<\/p>\n<table style=\"border-collapse: collapse; background-color: #fffacd; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); border-radius: 25px 25px 25px 25px;\" width=\"100%\">\n<tbody>\n<tr>\n<td style=\"padding: 15px; border: none;\">\n<h3 style=\"margin-bottom: 10px;\"><span style=\"background-color: #8a0e19; color: #ffffff; padding: 5px;\"><b>Key Takeaways<\/b><\/span><\/h3>\n<ul>\n<li data-start=\"20\" data-end=\"143\">\n<p data-start=\"23\" data-end=\"143\"><a href=\"#The\">Invoice fraud rarely<\/a> starts with hacking it usually starts with persuasion, routine abuse, and weak approval habits.<\/p>\n<\/li>\n<li data-start=\"144\" data-end=\"294\">\n<p data-start=\"147\" data-end=\"294\">Billing scams rarely stop at the money. <a href=\"#What\">They can disrupt<\/a> cash flow, damage trust with vendors and stakeholders, trigger compliance risks, and force your team into costly remediation work.<\/p>\n<\/li>\n<li data-start=\"295\" data-end=\"473\">\n<p data-start=\"298\" data-end=\"473\"><a href=\"#Red\">Red flags<\/a> are predictable too, odd formatting, suspicious email domains, missing PO references, and vague service descriptions should always trigger a pause and verify step.<\/p>\n<\/li>\n<li data-start=\"474\" data-end=\"637\">\n<p data-start=\"477\" data-end=\"637\"><a href=\"#Step\">When fraud happens<\/a>, speed and structure matter. Contact the bank immediately, lock down access, report with complete evidence, document the cleanup properly, and communicate transparently so trust doesn\u2019t collapse.<\/p>\n<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><!-- <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<a href=\"https:\/\/www.hashmicro.com\/my\/invoicing-software?medium=moneysite-banner\" target=\"_blank\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/08\/e-Invoicing-Software.webp\" data-desktop-src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/08\/e-Invoicing-Software.webp\" data-mobile-src=\"\" alt=\"eInvoicing\" class=\"responsive-image-banner\"><\/a>\r\n\r\n<script>\r\n    \/\/ check which image to use based on screensize\r\n    document.addEventListener(\"DOMContentLoaded\", function() {\r\n        function updateImageSource() {\r\n            var images = document.querySelectorAll('.responsive-image-banner');\r\n            var screenWidth = window.innerWidth;\r\n\r\n            images.forEach(function(img) {\r\n                var mobileSrc = img.getAttribute('data-mobile-src');\r\n                var desktopSrc = img.getAttribute('data-desktop-src');\r\n\r\n                if (screenWidth < 576 && mobileSrc) {\r\n                    img.setAttribute('src', mobileSrc);\r\n                } else {\r\n                    img.setAttribute('src', desktopSrc);\r\n                }\r\n            });\r\n        }\r\n\r\n        \/\/ Initial check\r\n        updateImageSource();\r\n\r\n        \/\/ Update on resize\r\n        window.addEventListener('resize', updateImageSource);\r\n    });\r\n<\/script><span id=\"The\"><\/span><\/p>\n<p><strong style=\"color: #111111; font-family: Roboto, sans-serif; font-size: 27px;\">The Inner Workings of Malicious Billing Scams<\/strong><\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-17212\" src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/The-Inner-Workings-of-Malicious-Billing-Scams.webp\" alt=\"The Inner Workings of Malicious Billing Scams\" width=\"800\" height=\"450\" srcset=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/The-Inner-Workings-of-Malicious-Billing-Scams.webp 800w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/The-Inner-Workings-of-Malicious-Billing-Scams-300x169.webp 300w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/The-Inner-Workings-of-Malicious-Billing-Scams-768x432.webp 768w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/The-Inner-Workings-of-Malicious-Billing-Scams-747x420.webp 747w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/The-Inner-Workings-of-Malicious-Billing-Scams-150x84.webp 150w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/The-Inner-Workings-of-Malicious-Billing-Scams-696x392.webp 696w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/p>\n<p data-start=\"50\" data-end=\"619\">To effectively combat deceptive billing practices, you need to understand how these schemes are orchestrated. Scammers do not simply send out random emails hoping for a lucky strike, modern scams are highly targeted, meticulously planned, and executed with a chilling level of professionalism.<\/p>\n<p data-start=\"50\" data-end=\"619\">The anatomy of a typical billing scam usually unfolds in three distinct phases: reconnaissance, infiltration, and execution. If you work in Malaysia, this awareness also supports safer handling of vendor and employee data under the Personal Data Protection Act 2010.<\/p>\n<h3 data-start=\"621\" data-end=\"649\"><strong>The Reconnaissance Phase<\/strong><\/h3>\n<p data-start=\"651\" data-end=\"1185\">During the reconnaissance phase, scammers gather extensive intelligence about your business. They scour public records, corporate websites, and professional networking platforms like LinkedIn to identify key people in finance and procurement. They map out the hierarchy, noting who can approve payments and who processes them. Furthermore, they identify external partners, suppliers, and contractors.<\/p>\n<p data-start=\"651\" data-end=\"1185\">By understanding the ecosystem you operate in, scammers can craft convincing narratives that match your regular activities.<\/p>\n<h3 data-start=\"1187\" data-end=\"1213\"><strong>The Infiltration Phase<\/strong><\/h3>\n<p data-start=\"1215\" data-end=\"1783\">Once the groundwork is laid, the infiltration phase begins.<br data-start=\"1274\" data-end=\"1277\" \/>This often involves Business Email Compromise (BEC), where a scammer accesses a legitimate account or spoofs an address to look like a trusted vendor or senior executive.<br data-start=\"1447\" data-end=\"1450\" \/>Through phishing emails with malicious attachments or links, they capture login credentials.<\/p>\n<p data-start=\"1215\" data-end=\"1783\">Once inside, they do not act immediately, instead, they monitor threads, study tone, and learn billing cycles and payment terms.That is why you need a clear vendor email verification process and a second channel confirmation routine.<\/p>\n<h3 data-start=\"1785\" data-end=\"1808\"><strong>The Execution Phase<\/strong><\/h3>\n<p data-start=\"1810\" data-end=\"2398\">The execution phase is where the trap is finally sprung.<br data-start=\"1866\" data-end=\"1869\" \/>With knowledge of your operations, the scammer intercepts a legitimate thread or starts a new one, posing as a known supplier. They submit a routine looking bill for services rendered or goods delivered.<\/p>\n<p data-start=\"1810\" data-end=\"2398\"><span id=\"What\">The critical twist is a subtle request to update the supplier\u2019s banking details, paired with a new account number and often a fabricated letterhead or forged signature. Because the request looks trusted and references real projects or purchase orders, AP processes the change, funds transfer, and the scam disappears.<\/span><\/p>\n<h2 data-start=\"2400\" data-end=\"2452\"><strong>What a Single Scam Can Break Inside Your Business<\/strong><\/h2>\n<p data-start=\"2454\" data-end=\"2755\">The consequences of falling victim to a billing scam extend far beyond the immediate loss of capital. While the direct financial hit is the most visible metric, the ripple effects can destabilize your business on multiple fronts. It is not just about money, it is about trust, time, and control.<\/p>\n<h3 data-start=\"2757\" data-end=\"2807\"><strong>Direct Financial Loss and Cash Flow Disruption<\/strong><\/h3>\n<p data-start=\"2809\" data-end=\"3302\">The most immediate and obvious impact is the loss of funds. Depending on the size of your business and the audacity of the scam, losses can range from a few thousand to several million dollars. For SMEs, one successful scam can wipe out a quarter\u2019s profit margin or threaten solvency.<\/p>\n<p data-start=\"2809\" data-end=\"3302\">Furthermore, cash flow disruption can block payroll, rent, and legitimate vendor payments, triggering operational stress.That is why cash flow protection for AP teams cannot stay as a nice to have.<\/p>\n<h3 data-start=\"3304\" data-end=\"3345\"><strong>Reputational Damage and Loss of Trust<\/strong><\/h3>\n<p data-start=\"3347\" data-end=\"3895\">Beyond the balance sheet, reputational damage can be catastrophic.<br data-start=\"3413\" data-end=\"3416\" \/>If news of a breach becomes public, it can undermine the confidence of clients, investors, and stakeholders. Customers may question your ability to protect sensitive data, and investors may see weak controls as poor management.<\/p>\n<p data-start=\"3347\" data-end=\"3895\">Additionally, the relationship with the impersonated vendor can strain, because payment detail verification should have happened before the transfer. If you operate in Malaysia, <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/pdpa-data-compliance\/\">PDPA discipline makes that trust<\/a> conversation even more serious.<\/p>\n<h3 data-start=\"3897\" data-end=\"3935\"><strong>Regulatory and Legal Repercussions<\/strong><\/h3>\n<p data-start=\"3937\" data-end=\"4417\">In many jurisdictions, businesses face strict frameworks for data protection and financial controls. If a billing scam involves a data breach that exposed PII or sensitive corporate data, regulators can impose heavy penalties. Furthermore, legal exposure can follow if you fail fiduciary duties or fail to report incidents under statutory requirements. In Malaysia, you should treat incident handling as both a security task and a compliance task, not an informal cleanup.<\/p>\n<h3 data-start=\"4419\" data-end=\"4466\"><strong>Operational Paralysis and Remediation Costs<\/strong><\/h3>\n<p data-start=\"4468\" data-end=\"4881\">After a successful scam, operational paralysis often follows. Your finance team drops routine work to investigate, coordinate with banks, and liaise with authorities to recover funds. Remediation costs add up fast, external consultants, forensic audits, and new systems can compound the original loss. In Malaysia, rapid response matters, NSRC 997 exists to support quick action when you discover a scam.<\/p>\n<h2 data-start=\"4883\" data-end=\"4937\"><strong>A Clear View of the Most Common Invoice Fraud Types<\/strong><\/h2>\n<p data-start=\"4939\" data-end=\"5199\">To build effective defenses, you need to know the ways billing scams can show up.<br data-start=\"5020\" data-end=\"5023\" \/>Scammers keep evolving tactics, but most deceptive practices fall into a few primary categories.<\/p>\n<p data-start=\"4939\" data-end=\"5199\">You do not need panic, you need a practical checklist your team can follow.<\/p>\n<h3 data-start=\"5201\" data-end=\"5241\"><strong>Vendor Impersonation (Mandate Fraud)<\/strong><\/h3>\n<p data-start=\"5243\" data-end=\"5753\">This is arguably the most common and devastating form of billing scam.<br data-start=\"5313\" data-end=\"5316\" \/>As described in the execution phase above, scammers pose as an existing, trusted supplier.<br data-start=\"5406\" data-end=\"5409\" \/>They contact AP, usually via email, claiming banking details changed due to an audit, provider change, or restructuring.<\/p>\n<p data-start=\"5243\" data-end=\"5753\">They request that all future payments be routed to the new account. Because the request rides on trust, it often gets processed without independent verification, so you need a strict vendor bank account change policy.<\/p>\n<h3 data-start=\"5755\" data-end=\"5793\"><strong>Internal Fraud and Shell Companies<\/strong><\/h3>\n<p data-start=\"5795\" data-end=\"6348\">Not all threats come from outside, internal access can drive some of the worst outcomes.<br data-start=\"5883\" data-end=\"5886\" \/>A rogue employee with AP access creates a fictitious vendor profile, often called a shell company. This profile exists on paper with a fabricated name, address, and bank account controlled by the employee.<\/p>\n<p data-start=\"5795\" data-end=\"6348\">Then fake bills appear for intangible services like consulting or marketing research, which are hard to verify physically. Over time, money drains quietly unless you enforce strong vendor onboarding controls and periodic vendor master data reviews.<\/p>\n<h3 data-start=\"6350\" data-end=\"6379\"><strong>Duplicate Invoicing Scams<\/strong><\/h3>\n<p data-start=\"6381\" data-end=\"6825\">Duplicate billing can happen accidentally and maliciously. In a malicious context, a scammer or unethical vendor submits the same bill multiple times with small changes to the number or date. They rely on AP volume to slip duplicates past manual checks. If you lack automated duplicate invoice detection rules that flag matching amounts and PO numbers, you can pay twice. That is a preventable leak when your controls stay consistent.<\/p>\n<h3 data-start=\"6827\" data-end=\"6861\"><strong>Overbilling and Inflated Scams<\/strong><\/h3>\n<p data-start=\"6863\" data-end=\"7329\">In this scenario, a legitimate vendor inflates costs, adds unauthorized surcharges, or bills for items never delivered. It can look like a dispute, but when done systematically with intent to deceive, it becomes fraud. This type is insidious because the vendor is real and the baseline transaction is legitimate, so inflated charges hide in routine reviews. You catch it faster when you enforce invoice line item validation and three way matching discipline.<\/p>\n<h3 data-start=\"7331\" data-end=\"7365\"><strong>CEO Fraud (Executive Spoofing)<\/strong><\/h3>\n<p data-start=\"7367\" data-end=\"7808\"><span id=\"Red\">Closely related to vendor impersonation, CEO fraud involves spoofing a high ranking executive email. The scammer sends an urgent, confidential message to someone in finance to push an immediate transfer for a secret deal. Under pressure, the recipient bypasses standard verification and authorizes payment. You block this with an executive payment request verification workflow, plus a rule that urgency never overrides confirmation.<\/span><\/p>\n<h2 data-start=\"7810\" data-end=\"7869\"><strong>Red Flags That Help You Catch a Fraudulent Invoice Early<\/strong><\/h2>\n<p data-start=\"7871\" data-end=\"8133\">Scammers work hard to make fabricated documents look authentic, but small inconsistencies usually show up. Training AP to recognize red flags becomes a core part of your defense strategy.<\/p>\n<p data-start=\"7871\" data-end=\"8133\">You can build muscle memory with short refreshers and real examples.<\/p>\n<h3 data-start=\"8135\" data-end=\"8172\"><strong>Sudden Changes in Payment Details<\/strong><\/h3>\n<p data-start=\"8174\" data-end=\"8621\">The most glaring red flag is an unexpected request to change a supplier\u2019s banking information. Legitimate businesses rarely change primary accounts, and when they do, they provide formal, verifiable documentation. Any email requesting routing updates, especially one that tells you to ignore previous instructions, should trigger an immediate halt. Verify independently before you move money, every time, even when the email looks perfect.<\/p>\n<h3 data-start=\"8623\" data-end=\"8669\"><strong>Induced Urgency and Emotional Manipulation<\/strong><\/h3>\n<p data-start=\"8671\" data-end=\"9157\" data-is-last-node=\"\" data-is-only-node=\"\">Scammers use psychological pressure to bypass logical controls.<br data-start=\"8734\" data-end=\"8737\" \/>They mark emails as Urgent, Confidential, or Overdue, then threaten late fees, legal action, or service suspension. This manufactured urgency aims to push you into skipping approval workflows.<\/p>\n<p data-start=\"8671\" data-end=\"9157\" data-is-last-node=\"\" data-is-only-node=\"\">Legitimate vendors may follow up, but professional requests still respect contractual terms and verification steps. That is why your team needs a clear process for handling urgent payment emails without breaking controls.<\/p>\n<h3 data-start=\"0\" data-end=\"51\"><strong>Discrepancies in Documentation and Formatting<\/strong><\/h3>\n<p data-start=\"52\" data-end=\"527\">A keen eye can often spot physical anomalies on a fabricated document. Look for low resolution logos, spelling and grammatical errors, or formatting that differs from previous submissions by the same vendor. Additionally, critical tax information must get close scrutiny. For example, when you review a <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/vat-invoice\/\">VAT compliant invoice<\/a>, make sure registration numbers match official records and align with what you already keep on file.<\/p>\n<h3 data-start=\"529\" data-end=\"567\"><strong>Irregular Communication Channels<\/strong><\/h3>\n<p data-start=\"568\" data-end=\"995\">Pay close attention to the sender\u2019s email address. Fraudsters often use typosquatting, where they register a domain that looks almost identical to a legitimate vendor domain.<br data-start=\"744\" data-end=\"747\" \/>They may use rn instead of m, or swap dot com for dot co, and it still looks believable at a glance. If a vendor usually uses a portal or an account manager but suddenly emails from Gmail or Yahoo, treat it as a red alert and pause the payment.<\/p>\n<h3 data-start=\"997\" data-end=\"1049\"><strong>Mismatched Amounts and Lack of Purchase Orders<\/strong><\/h3>\n<p data-start=\"1050\" data-end=\"1497\">Bills that arrive without a corresponding <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/purchase-order\/\">Purchase Order number<\/a>, or that reference a PO that does not exist in your system, are highly suspect. Similarly, if the billed amount does not match the agreed contract price, you need to stop and verify. Watch for vague lines like professional services rendered without itemized detail. When details do not line up, do not release funds until you reconcile the invoice with your internal records.<\/p>\n<h3 data-start=\"1499\" data-end=\"1550\"><strong>Leveraging Technology to Combat Invoice Fraud<\/strong><\/h3>\n<p data-start=\"1551\" data-end=\"1992\">As fraudsters deploy increasingly sophisticated digital tools, you need to fight fire with fire.<br data-start=\"1647\" data-end=\"1650\" \/>Modernizing accounts payable through technology is no longer a luxury, it is a defensive move that reduces exposure. In Malaysia, cleaner digital records also support compliance readiness as LHDN rolls out e Invoice in phases. So the goal is not just speed, it is control you can repeat every time.<\/p>\n<h3 data-start=\"1994\" data-end=\"2027\"><strong>Accounts Payable Automation<\/strong><\/h3>\n<p data-start=\"2028\" data-end=\"2425\">Manual data entry is slow, error prone, and it creates gaps scammers can exploit. AP automation software digitizes the lifecycle from receipt to approval to payment. OCR extracts data from incoming documents, populates fields, and routes items through predefined workflows. When you reduce manual touchpoints, you reduce the chances that someone gets nudged into approving the wrong thing.<\/p>\n<h3 data-start=\"2427\" data-end=\"2460\"><strong>Advanced Matching Protocols<\/strong><\/h3>\n<p data-start=\"2461\" data-end=\"2923\">Automated AP systems can run fast multi point checks that manual review cannot maintain at scale. Implementing a <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/3-way-matching-invoice\/\">three document invoice matching<\/a> \u00a0protocol reduces the risk of paying for goods never received or prices you never agreed to. It cross checks the invoice against the Purchase Order and the receiving report, then flags mismatches for review.<br data-start=\"2815\" data-end=\"2818\" \/>If a PO is missing or quantities do not align, the system blocks the transaction before any funds move.<\/p>\n<h3 data-start=\"2925\" data-end=\"2975\"><strong>Artificial Intelligence and Machine Learning<\/strong><\/h3>\n<p data-start=\"2976\" data-end=\"3367\">Newer financial software uses AI and ML to spot anomalies that humans miss. These models analyze historical payment patterns to build a baseline for each vendor. If a request breaks that baseline, like a sudden jump in amount or a strange billing time, the system flags it as high risk. Over time, the detection gets sharper because the model learns from new patterns and exceptions.<\/p>\n<h3 data-start=\"3369\" data-end=\"3414\"><strong>Digital Audit Trails and Secure Portals<\/strong><\/h3>\n<p data-start=\"3415\" data-end=\"3871\"><span id=\"Step\">Comprehensive accounting systems maintain <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/tax-invoice\/\">tamper resistant audit<\/a> trails. Every action gets recorded, who uploaded, who approved, who changed vendor details, and when it happened. Secure vendor portals with multi factor authentication add another barrier against impersonation attempts. If your records include personal data, PDPA discipline should shape how you store, access, and share it in daily operations.<\/span><\/p>\n<h2 data-start=\"3873\" data-end=\"3940\"><strong>Step-by-Step Incident Response: What to Do If You Fall Victim<\/strong><\/h2>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-17218\" src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/Step-by-Step-Incident-Response-What-to-Do-If-You-Fall-Victim.webp\" alt=\"Step by Step Incident Response What to Do-If You Fall Victim.\" width=\"800\" height=\"533\" srcset=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/Step-by-Step-Incident-Response-What-to-Do-If-You-Fall-Victim.webp 800w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/Step-by-Step-Incident-Response-What-to-Do-If-You-Fall-Victim-300x200.webp 300w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/Step-by-Step-Incident-Response-What-to-Do-If-You-Fall-Victim-768x512.webp 768w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/Step-by-Step-Incident-Response-What-to-Do-If-You-Fall-Victim-630x420.webp 630w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/Step-by-Step-Incident-Response-What-to-Do-If-You-Fall-Victim-150x100.webp 150w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/Step-by-Step-Incident-Response-What-to-Do-If-You-Fall-Victim-696x464.webp 696w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/p>\n<p data-start=\"3941\" data-end=\"4347\">Despite preventative measures, breaches can still occur, and time matters. A swift response can decide whether you recover funds or absorb the full loss. In Malaysia, NSRC exists to speed up scam response coordination, so treat escalation as immediate, not optional. Do you already have a clear internal escalation path, or does everyone improvise in a crisis?<\/p>\n<h3 data-start=\"4349\" data-end=\"4397\"><strong>Immediate Containment and Financial Triage<\/strong><\/h3>\n<p data-start=\"4398\" data-end=\"4833\">The first step is to contact your bank immediately and share the transfer details.<br data-start=\"4480\" data-end=\"4483\" \/>If the transfer is recent, the bank may freeze funds or attempt a recall before money disperses further. At the same time, lock down access, reset passwords, and enforce multi factor authentication if you have not done it yet. If a compromised email account enabled the scam, cutting off access fast stops attackers from watching your response.<\/p>\n<h3 data-start=\"4835\" data-end=\"4883\"><strong>Engaging Law Enforcement and Legal Counsel<\/strong><\/h3>\n<p data-start=\"4884\" data-end=\"5421\">After you address the immediate financial risk, report the incident to the appropriate authorities with complete evidence. Provide email headers, fraudulent documents, and transfer records, because details drive investigation speed.<\/p>\n<p data-start=\"4884\" data-end=\"5421\">Consult legal counsel to manage reporting duties, especially if exposed emails include employee or customer data. If the case involves movement of criminal proceeds, Malaysia\u2019s AMLA framework can become relevant to how the incident is handled and documented.<\/p>\n<h3 data-start=\"5423\" data-end=\"5469\"><strong>Post-Incident Auditing and Documentation<\/strong><\/h3>\n<p data-start=\"5470\" data-end=\"5968\">After the initial crisis, run a forensic audit to pinpoint how the breach happened. Was it weak access security, a rushed approval, or a control gap in vendor master data. Then document every correction so finance stays accurate, consistent, and audit ready.<\/p>\n<p data-start=\"5470\" data-end=\"5968\">If a transaction gets reversed or recovered, manage paperwork cleanly, including a <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/refund-note-malaysia\/\">Malaysia refund credit note<\/a>, so the ledger stays compliant with local practice and reporting expectations.<\/p>\n<h3 data-start=\"5970\" data-end=\"6001\"><strong>Transparent Communication<\/strong><\/h3>\n<p data-start=\"6002\" data-end=\"6390\">Depending on the scale of the fraud, you may need to inform stakeholders and the impersonated vendor. It can feel uncomfortable, but transparency protects long term trust better than silence. Clear communication also helps the vendor take defensive steps on their side. Keep updates factual, focused on actions taken, and aligned with your internal and regulatory reporting needs.<\/p>\n<p data-start=\"6002\" data-end=\"6390\"><style>\r\n    #custom-quote {\r\n        background-color: #f0f0f0;\r\n        padding: 20px;\r\n        border-radius: 12px;\r\n        margin: 20px;\r\n        display: flex;\r\n        flex-direction: column;\r\n    }\r\n\r\n    #custom-quote .quote-body {\r\n        display: flex;\r\n        flex-direction: row;\r\n        align-items: flex-start;\r\n        gap: 15px;\r\n        font-size: 16px;\r\n        line-height: 1.5;\r\n        font-style: italic;\r\n    }\r\n\r\n    #custom-quote .quote-icon {\r\n        width: 40px;\r\n        height: 40px;\r\n        flex-shrink: 0;\r\n    }\r\n\r\n    #custom-quote .quote-author-wrapper {\r\n        margin-top: 15px;\r\n        align-self: flex-start;\r\n        margin-left: 55px; \r\n\t\tmargin-bottom: 0px;\r\n    }\r\n\r\n    #custom-quote em {\r\n        font-family: 'Roboto Serif', serif !important;\r\n        font-size: 12px;\r\n        font-weight: bold;\r\n        font-style: normal;\r\n    }\r\n\r\n    @media screen and (max-width: 768px) {\r\n        #custom-quote {\r\n            margin: 15px 0;\r\n            padding: 15px;\r\n        }\r\n        \r\n        #custom-quote .quote-body {\r\n            gap: 12px;\r\n        }\r\n\r\n        #custom-quote .quote-author-wrapper {\r\n            margin-left: 52px;\r\n        }\r\n    }\r\n\r\n    @media screen and (max-width: 480px) {\r\n        #custom-quote {\r\n            margin: 10px 0;\r\n            padding: 12px;\r\n        }\r\n\r\n        #custom-quote .quote-body {\r\n            font-size: 14px;\r\n            gap: 10px;\r\n        }\r\n\r\n        #custom-quote .quote-icon {\r\n            width: 32px;\r\n            height: 32px;\r\n        }\r\n\r\n        #custom-quote .quote-author-wrapper {\r\n            margin-top: 10px;\r\n            margin-left: 42px;\r\n        }\r\n    }\r\n<\/style>\r\n\r\n<div id=\"custom-quote\">\r\n    <div class=\"quote-body\">\r\n        <img decoding=\"async\" src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/12\/quote.webp\" alt=\"Quote Icon\" class=\"quote-icon\">\r\n        <div>\r\n            In invoice fraud, the first hour decides the outcome. Call the bank, lock down access, and document every step. In Malaysia, escalate quickly through NSRC, but only if your team follows a clear response playbook        <\/div>\r\n    <\/div>\r\n    <p class=\"quote-author-wrapper\">\r\n        <em>Angela Tan, Regional Manager<\/em>\r\n    <\/p>\r\n<\/div><\/p>\n<h2 data-start=\"6392\" data-end=\"6447\"><strong>Building a Human Firewall: Training and Awareness<\/strong><\/h2>\n<p data-start=\"6448\" data-end=\"6784\">Even the best technology fails when someone approves a payment under pressure. So you want your workforce to act like a human firewall, not a weak point. That means practical habits, clear playbooks, and permission to slow down when something feels off.<br data-start=\"6705\" data-end=\"6708\" \/>When security becomes everyone\u2019s job, manipulation loses its easiest path.<\/p>\n<h3 data-start=\"6786\" data-end=\"6830\"><strong>Continuous Security Awareness Training<\/strong><\/h3>\n<p data-start=\"6831\" data-end=\"7159\">Annual generic training no longer matches how fast scams evolve. Keep training continuous, engaging, and tailored to AP, procurement, and finance roles. Teach not just the rules, but the why behind them, so people apply them under stress. When training ties to real workflows, it sticks and it prevents costly shortcuts.<\/p>\n<h3 data-start=\"7161\" data-end=\"7211\"><strong>Phishing Simulations and Practical Exercises<\/strong><\/h3>\n<p data-start=\"7212\" data-end=\"7551\">Simulated attacks train faster than theory because they mirror real decision moments. Send safe test emails and fake vendor requests to measure vigilance without blame. When someone slips, give immediate constructive feedback and targeted refreshers. These drills keep the threat fresh and expose process gaps that need tightening.<\/p>\n<h3 data-start=\"7553\" data-end=\"7595\"><strong>Establishing a Culture of Skepticism<\/strong><\/h3>\n<p data-start=\"7596\" data-end=\"7921\">The hardest change is cultural, but it pays off the most. Encourage healthy skepticism, even when a request looks like it came from a top executive or major vendor. Praise verification over speed, especially for urgent payment requests. When diligence gets rewarded, scammers lose the pressure tactics they depend on.<\/p>\n<h2 data-start=\"7923\" data-end=\"7976\"><strong>Industry-Specific Vulnerabilities and Use Cases<\/strong><\/h2>\n<p data-start=\"7977\" data-end=\"8359\">Invoice fraud hits every sector, but some industries carry extra exposure due to vendor churn and time pressure. So you should tailor controls to the way billing works in your environment, not a generic template. Use cases below show where scammers like to hide and why teams miss it. When you match controls to context, prevention becomes realistic instead of aspirational.<\/p>\n<h3 data-start=\"8361\" data-end=\"8767\"><strong>Construction and Real Estate<\/strong><\/h3>\n<p data-start=\"8361\" data-end=\"8767\">These industries rely on rotating subcontractors, independent tradespeople, and material suppliers. Scammers exploit project billing chaos by submitting invoices for materials never delivered or services never rendered. They know timelines pressure approvals, so verification can slip. Tighten proof of delivery and vendor change verification to reduce this exposure.<\/p>\n<h3 data-start=\"8769\" data-end=\"9127\"><strong>Healthcare and Pharmaceuticals<\/strong><\/h3>\n<p data-start=\"8769\" data-end=\"9127\">High volume procurement and urgent needs make healthcare a prime target. Scammers spoof medical vendors and push high value payments during stressful periods. Admin fatigue helps fraud blend into routine purchasing noise. Stronger approval gates for bank detail changes and unusual amounts make a big difference here.<\/p>\n<h3 data-start=\"9129\" data-end=\"9530\"><strong>Manufacturing and Logistics<\/strong><\/h3>\n<p data-start=\"9129\" data-end=\"9530\">Global supply chains bring cross border transactions, multiple currencies, and extended payment terms. Attackers may intercept vendor communications and alter transfer details to divert large payments. The fraud can hide until reconciliation, because shipments still move. Verify payment instruction changes out of band and treat bank details like sensitive data.<\/p>\n<h2 data-start=\"9532\" data-end=\"9589\"><strong>Strategic Implementation Steps for Fraud Prevention<\/strong><\/h2>\n<p data-start=\"9590\" data-end=\"9934\">Moving from reactive to proactive security needs a structured rollout.<br data-start=\"9660\" data-end=\"9663\" \/>You can strengthen controls without freezing operations, but you need clear steps and ownership. Focus on visibility, segregation of duties, and automated verification first.<br data-start=\"9839\" data-end=\"9842\" \/>Then standardize vendor master file controls so changes never slip through on email alone.<\/p>\n<h3 data-start=\"9936\" data-end=\"10220\"><strong>Conduct a Comprehensive AP Audit<\/strong><\/h3>\n<p data-start=\"9936\" data-end=\"10220\">Map every touchpoint in your payment lifecycle and identify where manual work creates gaps. Document who approves, who edits vendor data, and where handoffs break down.<br data-start=\"10141\" data-end=\"10144\" \/>Once you see the flow clearly, fixes become targeted instead of guesswork.<\/p>\n<h3 data-start=\"10222\" data-end=\"10509\"><strong>Enforce Strict Segregation of Duties<\/strong><\/h3>\n<p data-start=\"10222\" data-end=\"10509\">Make sure the person who creates or edits vendor records cannot also approve final payment release. This control blocks both internal fraud and external social engineering pressure. It sounds basic, but it stops a huge portion of real losses.<\/p>\n<h3 data-start=\"10511\" data-end=\"10787\"><strong>Deploy Automated Verification Systems<\/strong><\/h3>\n<p data-start=\"10511\" data-end=\"10787\">Integrate AP automation that enforces matching and approval rules consistently.<br data-start=\"10630\" data-end=\"10633\" \/>Automated checks reduce reliance on memory and manual attention during peak periods.<br data-start=\"10717\" data-end=\"10720\" \/>When exceptions appear, your team reviews only what needs review.<\/p>\n<h3 data-start=\"10789\" data-end=\"11084\"><strong>Establish a Vendor Master File Protocol<\/strong><\/h3>\n<p data-start=\"10789\" data-end=\"11084\">Require out of band verification for any change in bank details, routing numbers, or key contacts. Use known numbers and trusted contacts, not whatever appears in the request email. When you standardize this, scammers lose their favorite shortcut.<\/p>\n<h2 data-start=\"11086\" data-end=\"11139\"><strong>Advanced Practices and Next-Generation Defenses<\/strong><\/h2>\n<p data-start=\"11140\" data-end=\"11593\">As scammers adopt more sophisticated tools, defenses need to evolve too.<br data-start=\"11212\" data-end=\"11215\" \/>AI and ML can flag subtle anomalies like unusual billing frequency, unexpected amounts, or odd access patterns. Some teams explore blockchain and smart contracts to reduce silent tampering with vendor identities and payment routing history.<\/p>\n<p data-start=\"11140\" data-end=\"11593\">Combine predictive monitoring with zero trust habits and dynamic vendor authentication, and invoice fraud becomes far harder to land.<\/p>\n<h2 data-start=\"11140\" data-end=\"11593\"><strong>Conclution<\/strong><\/h2>\n<p data-start=\"656\" data-end=\"895\">Invoice fraud looks normal on purpose, that is what makes it dangerous. When a fake invoice matches your vendor style and timing, it can slip through even solid teams, then you pay the price in cash flow, trust, and operational disruption.<\/p>\n<p data-start=\"897\" data-end=\"1193\" data-is-last-node=\"\" data-is-only-node=\"\">So treat AP like a control point, not admin work. Tighten verification for any change in payment details, reinforce human habits through training and simulations, and back it up with automation and traceable audit trails so you can block scams early and respond quickly if one still gets through.<\/p>\n<h2><strong>Frequently Asked Questions About Invoice Fraud<\/strong><\/h2>\n<ul class=\"bottom_faq\">\n<li>\n<details>\n<summary><strong>What is invoice fraud in accounts payable (AP)?<\/strong><\/summary>\n<p>Invoice fraud is when a scammer manipulates your AP process so money gets paid on a fake invoice or redirected to a fraudulent bank account. It often looks like a normal vendor request, which is why it\u2019s so risky.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Why does invoice fraud look so legitimate?<\/strong><\/summary>\n<p>Scammers mirror real vendor habits such as invoice layout, email tone, and payment timing. They want your team to treat it like a routine request and approve it without a second check.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>What\u2019s the typical pattern of a malicious billing scam?<\/strong><\/summary>\n<p>Most scams follow a repeatable flow. The scammer studies your business, slips into communication channels, then triggers payment through a realistic invoice or a bank detail change.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>What is Business Email Compromise (BEC), and why is it dangerous?<\/strong><\/summary>\n<p>BEC is when a scammer accesses or impersonates a legitimate email account to send convincing payment-related instructions. It\u2019s dangerous because the request appears to come from a trusted vendor or executive, so people skip verification.<\/p>\n<\/details>\n<\/li>\n<\/ul>\n<p><script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [{\n    \"@type\": \"Question\",\n    \"name\": \"What is invoice fraud in accounts payable (AP)?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"Invoice fraud is when a scammer manipulates your AP process so money gets paid on a fake invoice or redirected to a fraudulent bank account. It often looks like a normal vendor request, which is why it\u2019s so risky.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"Why does invoice fraud look so legitimate?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"Scammers mirror real vendor habits such as invoice layout, email tone, and payment timing. They want your team to treat it like a routine request and approve it without a second check.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"What\u2019s the typical pattern of a malicious billing scam?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"Most scams follow a repeatable flow. The scammer studies your business, slips into communication channels, then triggers payment through a realistic invoice or a bank detail change.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"What is Business Email Compromise (BEC), and why is it dangerous?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"BEC is when a scammer accesses or impersonates a legitimate email account to send convincing payment-related instructions. It\u2019s dangerous because the request appears to come from a trusted vendor or executive, so people skip verification.\"\n    }\n  }]\n}\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In today\u2019s corporate world, your accounts payable workflow can feel like the engine that keeps everything moving. You pay suppliers on time, you protect the supply chain, and you keep cash flow predictable. But here\u2019s the uncomfortable truth: invoice fraud now sits right in the middle of that process, because scammers rarely hack their way [&hellip;]<\/p>\n","protected":false},"author":39,"featured_media":17211,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[221],"tags":[],"class_list":{"0":"post-17177","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>Invoice Fraud in AP: Red Flags and Prevention in Malaysia<\/title>\n<meta name=\"description\" content=\"Invoice fraud in accounts payable uses email deception. Learn scam stages, red flags, and Malaysia controls PDPA, AMLA, NSRC 997.\" \/>\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\/invoice-fraud\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Invoice Fraud in AP: Red Flags and Prevention in Malaysia\" \/>\n<meta property=\"og:description\" content=\"Invoice fraud in accounts payable uses email deception. Learn scam stages, red flags, and Malaysia controls PDPA, AMLA, NSRC 997.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/my\/blog\/invoice-fraud\/\" \/>\n<meta property=\"og:site_name\" content=\"HashMicro Malaysia\" \/>\n<meta property=\"article:published_time\" content=\"2026-03-05T09:07:50+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-05T09:30:01+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/Invoice-Fraud-Red-Flags-Prevention-in-Malaysia.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"450\" \/>\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=\"17 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\/invoice-fraud\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/invoice-fraud\/\"},\"author\":{\"name\":\"Siti binti Rahman\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/e4dba2ae170a31d8f85bf173ebfbf7a5\"},\"headline\":\"Invoice Fraud in AP: Red Flags and Prevention in Malaysia\",\"datePublished\":\"2026-03-05T09:07:50+00:00\",\"dateModified\":\"2026-03-05T09:30:01+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/invoice-fraud\/\"},\"wordCount\":3686,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/invoice-fraud\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/Invoice-Fraud-Red-Flags-Prevention-in-Malaysia.webp\",\"articleSection\":[\"Invoicing\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.hashmicro.com\/my\/blog\/invoice-fraud\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/invoice-fraud\/\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/invoice-fraud\/\",\"name\":\"Invoice Fraud in AP: Red Flags and Prevention in Malaysia\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/invoice-fraud\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/invoice-fraud\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/Invoice-Fraud-Red-Flags-Prevention-in-Malaysia.webp\",\"datePublished\":\"2026-03-05T09:07:50+00:00\",\"dateModified\":\"2026-03-05T09:30:01+00:00\",\"description\":\"Invoice fraud in accounts payable uses email deception. Learn scam stages, red flags, and Malaysia controls PDPA, AMLA, NSRC 997.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/invoice-fraud\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.hashmicro.com\/my\/blog\/invoice-fraud\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/invoice-fraud\/#primaryimage\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/Invoice-Fraud-Red-Flags-Prevention-in-Malaysia.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/Invoice-Fraud-Red-Flags-Prevention-in-Malaysia.webp\",\"width\":800,\"height\":450,\"caption\":\"Invoice Fraud Red Flags Prevention in Malaysia\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/invoice-fraud\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.hashmicro.com\/my\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Invoice Fraud in AP: Red Flags and Prevention in Malaysia\"}]},{\"@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":"Invoice Fraud in AP: Red Flags and Prevention in Malaysia","description":"Invoice fraud in accounts payable uses email deception. Learn scam stages, red flags, and Malaysia controls PDPA, AMLA, NSRC 997.","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\/invoice-fraud\/","og_locale":"en_US","og_type":"article","og_title":"Invoice Fraud in AP: Red Flags and Prevention in Malaysia","og_description":"Invoice fraud in accounts payable uses email deception. Learn scam stages, red flags, and Malaysia controls PDPA, AMLA, NSRC 997.","og_url":"https:\/\/www.hashmicro.com\/my\/blog\/invoice-fraud\/","og_site_name":"HashMicro Malaysia","article_published_time":"2026-03-05T09:07:50+00:00","article_modified_time":"2026-03-05T09:30:01+00:00","og_image":[{"width":800,"height":450,"url":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/Invoice-Fraud-Red-Flags-Prevention-in-Malaysia.webp","type":"image\/webp"}],"author":"Siti binti Rahman","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Siti binti Rahman","Est. reading time":"17 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hashmicro.com\/my\/blog\/invoice-fraud\/#article","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/invoice-fraud\/"},"author":{"name":"Siti binti Rahman","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/e4dba2ae170a31d8f85bf173ebfbf7a5"},"headline":"Invoice Fraud in AP: Red Flags and Prevention in Malaysia","datePublished":"2026-03-05T09:07:50+00:00","dateModified":"2026-03-05T09:30:01+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/invoice-fraud\/"},"wordCount":3686,"commentCount":0,"publisher":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/#organization"},"image":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/invoice-fraud\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/Invoice-Fraud-Red-Flags-Prevention-in-Malaysia.webp","articleSection":["Invoicing"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.hashmicro.com\/my\/blog\/invoice-fraud\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/my\/blog\/invoice-fraud\/","url":"https:\/\/www.hashmicro.com\/my\/blog\/invoice-fraud\/","name":"Invoice Fraud in AP: Red Flags and Prevention in Malaysia","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/invoice-fraud\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/invoice-fraud\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/Invoice-Fraud-Red-Flags-Prevention-in-Malaysia.webp","datePublished":"2026-03-05T09:07:50+00:00","dateModified":"2026-03-05T09:30:01+00:00","description":"Invoice fraud in accounts payable uses email deception. Learn scam stages, red flags, and Malaysia controls PDPA, AMLA, NSRC 997.","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/invoice-fraud\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/my\/blog\/invoice-fraud\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/my\/blog\/invoice-fraud\/#primaryimage","url":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/Invoice-Fraud-Red-Flags-Prevention-in-Malaysia.webp","contentUrl":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/Invoice-Fraud-Red-Flags-Prevention-in-Malaysia.webp","width":800,"height":450,"caption":"Invoice Fraud Red Flags Prevention in Malaysia"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/my\/blog\/invoice-fraud\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/my\/blog\/"},{"@type":"ListItem","position":2,"name":"Invoice Fraud in AP: Red Flags and Prevention in Malaysia"}]},{"@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\/17177","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=17177"}],"version-history":[{"count":4,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/posts\/17177\/revisions"}],"predecessor-version":[{"id":17225,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/posts\/17177\/revisions\/17225"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/media\/17211"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/media?parent=17177"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/categories?post=17177"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/tags?post=17177"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}