{"id":18852,"date":"2026-04-24T06:33:18","date_gmt":"2026-04-24T06:33:18","guid":{"rendered":"https:\/\/www.hashmicro.com\/my\/blog\/?p=18852"},"modified":"2026-05-29T08:35:19","modified_gmt":"2026-05-29T08:35:19","slug":"procure-to-pay-process","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/my\/blog\/procure-to-pay-process\/","title":{"rendered":"Procure to Pay (P2P) Malaysia: Complete Guide (2026)"},"content":{"rendered":"<!-- <div id=\"toc_group_article\" style=''>\r\n\t<p style='font-size:25px;font-weight:bold; margin-bottom:0px'>\r\n\t\tTable of Content\r\n\t<\/p>\r\n\t<ul id=\"list_toc\" class='list_toc'><\/ul>\r\n<\/div>\r\n\r\n<div class=\"dropdown-fixed-top\" id=\"dropdown-fixed-top\">\r\n\t<div class=\"row\">\r\n\t\t<p id=\"pilihDaftarIsi\">Content Lists<\/p>\r\n\t\t<p><i class=\"td-icon-menu-down\"><\/i><\/p>\r\n\t<\/div>\r\n\t\r\n\t<div>\r\n\t\t<ul id=\"list_toc_top\" class='list_toc'><\/ul>\r\n\t<\/div>\r\n<\/div> -->\r\n\r\n<!-- TOC mobile -->\r\n<div id=\"placeholder-toc\"><\/div>\r\n<div id=\"toc\">\r\n    <div class=\"header\">\r\n\t<span class=\"toc-title\" id=\"toc-title\">Table of Content<\/span>\t\r\n\t <i class=\"toc-icon\">\r\n        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"30\" height=\"30\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#000\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"header-icon\">\r\n          <path d=\"m6 9 6 6 6-6\" \/>\r\n        <\/svg>\r\n      <\/i>\r\n\t<\/div>\r\n    <div class=\"list\">\r\n      <ul id=\"toc-list\"><\/ul>\r\n    <\/div>\r\n <\/div>\r\n<!-- TOC mobile -->\r\n\r\n<style>\r\n\t@media (max-width: 992px) {\r\n\t\t#toc_group_article {\r\n\t\t\tpadding-top: 24px;\r\n\t\t}\r\n\t}\r\n\t\r\n\t#list_toc_float {\r\n\t\tmax-height: calc(100vh - 250px);\r\n\t\toverflow-y: auto;\r\n\t}\r\n\t\r\n\t#list_toc_top {\r\n\t\tdisplay: none;\r\n\t\tbackground: #fff;\r\n\t\tmargin-bottom: 4px;\r\n\t}\r\n\t\r\n\t#list_toc_top li {\r\n\t\tdisplay: block;\r\n\t\tmargin-left: 0;\r\n\t\tlist-style: none;\r\n\t}\r\n\t\r\n\t#list_toc_top a {\r\n\t\tpadding: 5px;\r\n\t\tdisplay: block;\r\n\t}\r\n\t\r\n\t#list_toc_top.show {\r\n\t\tdisplay: block;\r\n\t}\r\n\r\n\t#list_toc_top a {\r\n\t\tcolor: #434343;\r\n\t\tborder-bottom: 1px solid #bbb;\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top {\r\n\t\tposition: fixed;\r\n\t\ttop: 59px;\r\n\t\twidth: 100%;\r\n\t\tz-index: 99;\r\n\t\tborder-bottom: 2px solid #9c171e;\r\n\t\tpadding: 12px;\r\n\t\tbackground: #fff;\r\n\t\twidth: 100%;\r\n\t\tcursor: pointer;\r\n\t\tdisplay: none;\r\n\t\tleft: 0;\r\n\t\tbox-shadow: 0 -2px 7px 6px rgba(0, 0, 0, 0.17);\r\n\t}\r\n\t\r\n\t#dropdown-fixed-top.show {\r\n\t\tanimation: showAnim 0.5s ease;\r\n\t\tdisplay: block;\r\n\t\topacity: 1;\r\n\t}\r\n\t\r\n\t@keyframes showAnim {\r\n\t\tfrom {\r\n\t\t\tdisplay: none;\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t\tto {\r\n\t\t\tdisplay: block;\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top #list_toc_top {\r\n\t\tmax-height: calc(50vh - 110px);\r\n\t\toverflow-y: scroll;\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top .row {\r\n\t\tdisplay: flex;\r\n\t\tjustify-content: space-between\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top .row p {\r\n\t\tmargin-bottom: 0;\r\n\t}\r\n\t\r\n\t#pilihDaftarIsi {\r\n\t\tmax-width: 100%;\r\n\t\toverflow: hidden;\r\n\t\twhite-space: nowrap;\r\n\t}\r\n\t\r\n\t@media (min-width: 1018px) {\r\n\t\t.dropdown-fixed-top {\r\n\t\t\tdisplay: none;\r\n\t\t}\r\n\t}\r\n\t\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc > li > ul {padding-left: 20px;margin-bottom: 0;}\r\n\t#list_toc{height:max-content;transition:ease-in-out}\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc_float li.active > a {color:#b1252d;background: #ffe1e3;}\r\n\t#list_toc_top li.active > a {color:#b1252d;background: #ffe1e3;}\r\n\t#list_toc_float li a {padding:3px 7px}\r\n\t#list_toc_float li a {\r\n\t\tdisplay: block;\r\n\t\tcolor: #000;\r\n\t\tmargin-bottom: 6px;\r\n\t\tpadding-top: 2px;\r\n\t\tpadding-bottom: 2px;\r\n\t\ttransition: all 0.2s ease-in-out;\r\n\t\tfont-size: 15px;\r\n\t\tline-height: 18px;\r\n\t}\r\n\t#list_toc_float li{list-style:none;list-style-position:inside; margin-left:0;}\r\n\t#list_toc_float a:hover{color:#b1252d;}\r\n\t\r\n\t#toc_group_float{\r\n\t\tline-height: 24px;\r\n\t\tmax-height: calc(100vh - 100px);\r\n\t\toverflow: auto;\r\n\t\tz-index: 99;\r\n\t\tdisplay:none!important;\r\n\t\tbackground:#fff;\r\n\t\ttransition:all 0.5s linear\r\n\t}\r\n\t\r\n\t@media (min-width:1019px){\r\n\t\t#toc_group_float {\r\n\t\t\tdisplay:block!important;\r\n\t\t}\r\n\t\t#toc_group_article {\r\n\t\t\tdisplay:none;\r\n\t\t}\t\t\t\t\r\n\t}\r\n\r\n<\/style>\r\n\r\n<style>\r\n\t@media (max-width: 992px) {\r\n\t\t#toc_group_article {\r\n\t\t\tpadding-top: 24px;\r\n\t\t}\r\n\t}\r\n\t\r\n\t#list_toc_float {\r\n\t\tmax-height: calc(100vh - 250px);\r\n\t\toverflow-y: auto;\r\n\t}\r\n\t\r\n\t#list_toc_top {\r\n\t\tdisplay: none;\r\n\t\tbackground: #fff;\r\n\t\tmargin-bottom: 4px;\r\n\t}\r\n\t\r\n\t#list_toc_top li {\r\n\t\tdisplay: block;\r\n\t\tmargin-left: 0;\r\n\t\tlist-style: none;\r\n\t}\r\n\t\r\n\t#list_toc_top a {\r\n\t\tpadding: 5px;\r\n\t\tdisplay: block;\r\n\t}\r\n\t\r\n\t#list_toc_top.show {\r\n\t\tdisplay: block;\r\n\t}\r\n\r\n\t#list_toc_top a {\r\n\t\tcolor: #434343;\r\n\t\tborder-bottom: 1px solid #bbb;\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top {\r\n\t\tposition: fixed;\r\n\t\ttop: 59px;\r\n\t\twidth: 100%;\r\n\t\tz-index: 99;\r\n\t\tborder-bottom: 2px solid #9c171e;\r\n\t\tpadding: 12px;\r\n\t\tbackground: #fff;\r\n\t\twidth: 100%;\r\n\t\tcursor: pointer;\r\n\t\tdisplay: none;\r\n\t\tleft: 0;\r\n\t\tbox-shadow: 0 -2px 7px 6px rgba(0, 0, 0, 0.17);\r\n\t}\r\n\t\r\n\t#dropdown-fixed-top.show {\r\n\t\tanimation: showAnim 0.5s ease;\r\n\t\tdisplay: block;\r\n\t\topacity: 1;\r\n\t}\r\n\t\r\n\t@keyframes showAnim {\r\n\t\tfrom {\r\n\t\t\tdisplay: none;\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t\tto {\r\n\t\t\tdisplay: block;\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top #list_toc_top {\r\n\t\tmax-height: calc(50vh - 110px);\r\n\t\toverflow-y: scroll;\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top .row {\r\n\t\tdisplay: flex;\r\n\t\tjustify-content: space-between\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top .row p {\r\n\t\tmargin-bottom: 0;\r\n\t}\r\n\t\r\n\t#pilihDaftarIsi {\r\n\t\tmax-width: 100%;\r\n\t\toverflow: hidden;\r\n\t\twhite-space: nowrap;\r\n\t}\r\n\t\r\n\t@media (min-width: 1018px) {\r\n\t\t.dropdown-fixed-top {\r\n\t\t\tdisplay: none;\r\n\t\t}\r\n\t}\r\n\t\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc > li > ul {padding-left: 20px;margin-bottom: 0;}\r\n\t#list_toc{height:max-content;transition:ease-in-out}\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc_float li.active > a {color:#b1252d;background: #ffe1e3;}\r\n\t#list_toc_top li.active > a {color:#b1252d;background: #ffe1e3;}\r\n\t#list_toc_float li a {padding:3px 7px}\r\n\t#list_toc_float li a {\r\n\t\tdisplay: block;\r\n\t\tcolor: #000;\r\n\t\tmargin-bottom: 6px;\r\n\t\tpadding-top: 2px;\r\n\t\tpadding-bottom: 2px;\r\n\t\ttransition: all 0.2s ease-in-out;\r\n\t\tfont-size: 15px;\r\n\t\tline-height: 18px;\r\n\t}\r\n\t#list_toc_float li{list-style:none;list-style-position:inside; margin-left:0;}\r\n\t#list_toc_float a:hover{color:#b1252d;}\r\n\t\r\n\t#toc_group_float{\r\n\t\tline-height: 24px;\r\n\t\tmax-height: calc(100vh - 100px);\r\n\t\toverflow: auto;\r\n\t\tz-index: 99;\r\n\t\tdisplay:none!important;\r\n\t\tbackground:#fff;\r\n\t\ttransition:all 0.5s linear\r\n\t}\r\n\t\r\n\t@media (min-width:1019px){\r\n\t\t#toc_group_float {\r\n\t\t\tdisplay:block!important;\r\n\t\t\t}\r\n\t\t\t\t#toc_group_article {\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\t}\r\n\r\n<\/style>\r\n\r\n<!-- START ToC styling  -->\r\n<style>\r\n\t\/* Simple styling for the TOC *\/\r\n\t\r\n\t#toc ul li:last-child {\r\n    padding-bottom: 16px; \/* Adjust the value as needed *\/\r\n}\r\n\r\n.td-fix-index {\r\n\t transform: unset !important;\r\n     -webkit-transform: unset !important; \r\n}\r\n.footer-contact .td-fix-index {\r\n\t transform: translateZ(0) !important;\r\n     -webkit-transform: translateZ(0) !important; \r\n}\r\n\t.tdb_single_content .tdb-block-inner.td-fix-index{\r\n\t\tposition: static;\r\n\t}\r\n\t\r\n\r\n\t\r\n#toc {\r\n  background-color: #FFF;\r\n\tpadding: 17px 24px 0px 24px !important;\r\n  margin-bottom: 20px;\r\n\/*   border: 1px solid #9C171E; *\/\r\n  border-radius: 6px;\r\n\tdisplay: none;\r\n  max-width: 100%;\r\n  transition: .4s ease height;\r\n\tmargin-left: 0;\r\n\toverflow: hidden;\r\n}\r\n\r\n#toc .header{\r\n  display: flex;\r\n  align-items: center;\r\n  justify-content: space-between;\r\n\tbackground-color: transparent;\r\n}\r\n\t\r\n\t#toc.sticky .header{\r\n\t\tpadding: 4px 0;\r\n\t}\r\n\t\r\n.header p{\r\n  font-size: 18px !important;\r\n  font-weight: 600 !important;\r\n  color: #393939;\r\n   margin-bottom: 0;\r\n  \/* margin-top: 20px; *\/\r\n}\r\n\r\n.toc-icon{\r\n  float: right;\r\n\/*   visibility: hidden; *\/\r\n}\r\n\r\n\t.toc-title{\r\n\t\tmargin-right: auto;\r\n\/* \t\tpadding-left: 20px; *\/\r\n\t\tfont-weight: 600;\r\n\t\talign-self: center;\t}\t\r\n\r\n#toc ul {\r\n  list-style-type: none;\r\n  padding-left: 0;\r\n}\r\n\t\r\n#toc.sticky ul{\r\n\toverflow-y: auto;\r\n\tmax-height: 250px;\r\n\tmargin-top: 0px;\r\n\tpadding-top: 20px;\r\n\/* \tborder-top: 1px solid #d3d3d3; *\/\r\n}\r\n\t\r\n#toc ul li {\r\n\/*   margin-bottom: 10px; *\/\r\n  margin-bottom: 10px;\r\n\tmargin-left: 0;\r\n\ttransition: .2s ease;\r\n\tcursor: pointer;\r\n}\r\n\t\r\n\t#toc.sticky ul li {\r\n\t  margin-right: 10px;\r\n\t}\r\n\t\r\n.td-post-content #toc-list li a:hover, .td-post-content #toc-list a.active{\r\n\tbackground-color: #FFF;\r\n\/* \tpadding: 8px 16px 8px 16px; *\/\r\n\tpadding: 4px 16px 4px 16px;\r\n\tborder-radius: 6px;\r\n\tcolor: #9c171e !important;\r\n\tfont-weight: 600 !important;\r\n}\r\n\t\r\n\t.td-post-content #toc-list li:hover a, .td-post-content #toc-list a.active{\r\n\t\tcolor: #9C171E !important;\r\n\t\tfont-weight: 600 !important;\r\n\t}\r\n\t\r\n.td-post-content #toc-list a.active{\r\n\tfont-weight: bold !important;\r\n\tcolor: #9C171E !important;\r\n}\r\n\t\r\n#toc a, .td-post-content #toc-list a {\r\n  text-decoration: none;\r\n  color: #ea1717 !important;\r\n  transition: .2s ease;\r\n\tfont-weight: 400 !important;\r\n\tdisplay: block;\r\n\t\r\n\tpadding: 4px 16px 4px 0;\r\n}\r\n\r\n#toc.sticky {\r\n  position: fixed;\r\n\/*   top: 73px; *\/\r\n\tbottom: 0;\r\n  z-index: 100; \r\n  box-shadow: 0 2px 5px rgba(0,0,0,0.1); \r\n\twidth: 100%; \r\n\tbackground-color: #FFF;\r\n\/* \tbackground-color: #FFF1F1; *\/\r\n\tborder-bottom: 1px solid #ea1717;\r\n\/*   border: 1px solid #393939; *\/\r\n  box-shadow: 0px 0px 14px 0px #00000040;\r\n  cursor: pointer;\r\n\tanimation: fadein .3s ease;\r\n\tpadding: 12px 16px !important;\r\n}\r\n\t\r\n\t.fadein{\r\n\t\tanimation: fadein .3s ease;\r\n\t}\r\n\t\r\n\t.fadeout{\r\n\t\tanimation: fadeout .3s ease;\r\n\t}\r\n\t\r\n\t\r\n\t@keyframes fadein{\r\n\t\t0% {\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t\t100%{\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@keyframes fadeout{\r\n\t\t0% {\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t\t100%{\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t}\r\n\r\n\t\r\n#toc.sticky .header p{\r\n\tmargin-bottom: 10px;\r\n\tmargin-top: 10px;\r\n}\r\n\r\n#toc.sticky .toc-icon{\r\n  visibility: visible;\r\n\/* \ttransition: 0.4s ease; *\/\r\n}\r\n\t\r\n\t.toc-icon{\r\n\t\talign-items: center;\r\n    \tdisplay: flex;\r\n\t}\r\n\t\r\n\tsvg.header-icon{\r\n\/* \t\tbackground-color: #9c171e; *\/\r\n\t\tbackground-color: #FFF;\r\n\t\tborder-radius: 30px;\r\n\t\tpadding: 5px;\r\n\t}\r\n\r\n#toc.sticky .list{\r\n\/*   max-height: 0; *\/\r\n  transition: height 0.4s ease;\r\n}\r\n\t\r\n\t#toc .list{\r\n\/*   max-height: 0; *\/\r\n  transition: height 0.4s ease;\r\n}\r\n\r\n#toc .header.active .toc-icon{\r\n\ttransform: rotate(0deg); \r\n\topacity: 1;\r\n}\r\n\r\n\t#toc .header.active + .list {\r\n\t  max-height: 200px; \/* Adjust this value as needed *\/\r\n\t  opacity: 1;\r\n\t}\r\n\t\r\n\t#placeholder-toc{\r\n\/* \t\tdisplay: none; *\/\r\n\t}\r\n\t\r\n\t@media (min-width: 768px) and (max-width: 991px){\r\n\t\t#toc.sticky{\r\n\/* \t\t\ttop: 104px; *\/\r\n\t\t\tbottom: 0px;\r\n\t\t}\r\n\t\t\r\n\t\t#toc{\r\n\t\t\twidth: unset !important;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@media (max-width: 767px){\r\n\t\t#toc{\r\n\t\t\twidth: 100% !important;\r\n\t\t\tdisplay: inline-block;\r\n\t\t}\r\n\t\t\r\n\t\t#toc.sticky{\r\n\t\t\twidth: 90% !important;\r\n\/* \t\t\ttop: 81px; *\/\r\n\t\t\tbottom: 60px;\r\n\t\t\tmargin-left: auto;\r\n\t\t\tmargin-right: auto;\r\n\t\t\tpadding: 0 16px;\r\n\t\t\tright: 5%;\r\n\t\t}\r\n\t}\r\n\t\r\n\t<\/style>\r\n<!-- END ToC styling  -->\r\n\r\n<!-- ToC List for mobile -->\r\n<script>\r\n \/\/ Generate TOC based on headings\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  \/\/ Get the element that will contain the TOC\r\n  const tocList = document.getElementById('toc-list');\r\n\r\n  \/\/ Get the element with the ID 'article-left'\r\n  const article = document.querySelector('.td-post-content');\r\n\r\n  \/\/ Find all h2 elements within 'myarticle'\r\n  const headers = article.getElementsByTagName('h2');\r\n\r\n  \/\/ Loop through the h2 elements and create a list item for each one\r\n  for (let i = 0; i < headers.length; i++) {\r\n    const header = headers[i];\r\n    const headerText = header.textContent;\r\n\/\/     const headerId = 'header-' + i;\r\n    const headerId = headerText\r\n    .toLowerCase()\r\n    .trim()\r\n    .replace(\/[^\\w\\s-]\/g, '')  \/\/ hapus tanda baca\r\n    .replace(\/\\s+\/g, '-'); \/\/ ganti spasi jadi \"-\"\r\n\r\n    \/\/ Set an ID for the header if it doesn't have one\r\n    header.setAttribute('id', headerId);\r\n\r\n    \/\/ Create a list item for the TOC\r\n    const listItem = document.createElement('li');\r\n\r\n    \/\/ Create a link for the list item\r\n    const link = document.createElement('a');\r\n    link.setAttribute('href', '#' + headerId);\r\n    link.textContent = headerText;\r\n\r\n    \/\/ Append the link to the list item\r\n    listItem.appendChild(link);\r\n\r\n    \/\/ Append the list item to the TOC list\r\n    tocList.appendChild(listItem);\r\n  }\r\n});\r\n\r\n\/\/ Keep height and placement of content using placeholder in place of TOC\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  const toc = document.querySelector('#toc');\r\n  const placeholderToc = document.querySelector('#placeholder-toc');\r\n\r\n  function setPlaceholderHeight() {\r\n    placeholderToc.style.height = `${toc.offsetHeight}px`;\r\n  }\r\n\r\n  \/\/ Set the initial height of the placeholder\r\n  setPlaceholderHeight();\r\n\r\n  \/\/ Update the height on window resize\r\n  window.addEventListener('resize', setPlaceholderHeight);\r\n});\r\n  const tocTitle = document.querySelector('#toc-title'); \/\/ Assuming header-faq is the element for TOC title\r\n\r\n\/\/ Sticky TOC and update heading\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  const toc = document.querySelector('#toc');\r\n  const footer = document.querySelector('.td-footer-template-wrap');\r\n  const tocParent = toc.parentElement;\r\n  const divTop = tocParent.getBoundingClientRect().top + window.pageYOffset;\r\n  const tocHeight = toc.offsetHeight;\r\n  const triggerPoint = divTop + tocHeight + 700;\r\n  const footerHeight = footer.offsetHeight;\r\n  const triggerFooterPoint = footer.getBoundingClientRect().top + window.pageYOffset - footerHeight - footerHeight - footerHeight;\r\n  const phtoc = document.querySelector('#placeholder-toc');\r\n  const headers = document.querySelectorAll('.td-post-content h2');\r\n  const navLinks = document.querySelectorAll('#toc-list a');\r\n\t\r\n\tconst panel2 = document.querySelector(\"#toc .list\");\r\n\tvar icon = document.querySelector(\".toc-icon\");\r\n\r\n  let activeLink = null; \/\/ Declare activeLink outside the loop\r\n\t\r\n  \/\/ Function to handle scroll and add\/remove .sticky class\r\n  function handleScroll() {\r\n    const windowTop = window.pageYOffset || document.documentElement.scrollTop;\r\n    let currentHeader = '';\r\n\r\n    \/\/ Highlight user progress as the heading comes\r\n    headers.forEach(header => {\r\n\t\tconst headerTop = header.offsetTop;\r\n\t\tconst headerHeight = header.clientHeight;\r\n\t\tif (window.scrollY >= (headerTop - headerHeight + 700)) {\r\n\t\t\tconst currentHeaderId = header.getAttribute('id');\r\n\t\t\tconst currentHeaderText = document.getElementById(currentHeaderId).textContent;\r\n\/\/ \t\t\tconsole.log(\"current header text:\", currentHeaderText);\r\n\t\t\ttocTitle.textContent = currentHeaderText;\r\n\t\t\tcurrentHeader = currentHeaderId;\r\n\t\t\t\r\n\t\t\tif(window.innerWidth < 767){\r\n\t\t\t\ttocTitle.textContent = 'Table of Content';\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n    navLinks.forEach(link => {\r\n      link.classList.remove('active');\r\n      if(currentHeader != '') {\r\n\t\t  if (link.getAttribute('href').includes(currentHeader)) {\r\n\t\t\t  link.classList.add('active');\r\n\t\t  }\r\n\t  }\r\n    });\r\n\/\/     if (windowTop < triggerFooterPoint) {\r\n\/\/         toc.style.display = 'block';\r\n\/\/ \t}else{\r\n\/\/         toc.style.display = 'none';\r\n\/\/ \t}\r\n    \/\/ Update TOC title if sticky\r\n    if (windowTop > triggerPoint) {\r\n      if (!toc.classList.contains('sticky')) {\r\n        phtoc.style.display = \"block\";\r\n        toc.classList.add('sticky');\r\n        toc.style.width = `${tocParent.offsetWidth}px`; \/\/ Set width to match the parent element\r\n        toc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n        toc.style.backgroundColor = \"#FFF\";\r\n\t\tpanel2.style.height = '0px';\r\n\t\t  icon.style.transform = \"rotate(180deg)\";\r\n\t\t  if(window.innerWidth < 767){\r\n\/\/ \t\t\t  const tocs = document.querySelector('#toc.sticky');\r\n\t\t\t  tocTitle.textContent = 'Table of Content'; \/\/ Reset title\r\n       \t\t  toc.style.width = '150px'; \/\/ Set width to match the parent element\r\n\t\t  }\r\n      }\r\n      if (currentHeader) {\r\n\/\/         console.log(\"activeLink:\", activeLink);\r\n        if (activeLink) {\r\n\/\/           tocTitle.textContent = activeLink.textContent; \/\/ Update TOC title\r\n          tocTitle.textContent = activeLink ? activeLink.textContent : \"\"; \/\/ Update title only if activeLink exists\r\n        }\r\n      }\r\n    } else {\r\n      toc.classList.remove('sticky');\r\n      phtoc.style.display = \"none\";\r\n      toc.style.width = 'unset'; \/\/ Reset to original width\r\n      toc.style.backgroundColor = \"#FFF\";\r\n      tocTitle.textContent = 'Table of Content'; \/\/ Reset title\r\n\t\tpanel2.style.height = panel2.scrollHeight + \"px\";\r\n\t\ticon.style.transform = \"rotate(180deg)\";\r\n    }\r\n  }\r\n\r\n    \/\/ Attach the scroll event listener to the window\r\n    window.addEventListener('scroll', handleScroll);\r\n\r\n    \/\/ Initial call to handleScroll to set the correct state on load\r\n    handleScroll();\r\n});\r\n\t\r\n\t\/\/ Open toggle TOC\r\n\t  document.addEventListener(\"DOMContentLoaded\", function() {\r\n\t\tvar tocHeader = document.querySelector(\"#toc .header\");\r\n\t\tvar toc = document.querySelector(\"#toc\");\r\n\t\tvar icon = document.querySelector(\".toc-icon\");\r\n\t\tconst tocTitle = document.querySelector('#toc-title');\r\n\t\tconst tocs = document.querySelector('#toc.sticky');\r\n \t\tconst tocParent = toc.parentElement;\t\t  \r\n\r\n\t\t  tocHeader.addEventListener(\"click\", function() {\r\n\t\t\tvar panel = this.nextElementSibling;\r\n\t\t\tif (panel.style.height !== '0px') { \/\/ Check if height is not 0px\r\n\t\t\t  panel.style.height = '0px'; \/\/ Set height to 0 for full collapse\r\n\t\t\t  icon.style.transform = \"rotate(180deg)\";\r\n\/\/ \t\t\t\ttoc.style.paddingBottom = '6px'; \r\n\t\t\t\tif(window.innerWidth > 768){\r\n\t\t\t\t\tif(!toc.classList.contains('sticky')){\r\n\t\t\t\t\t\ttoc.style.width = \"unset\";\r\n\/\/ \t\t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (toc.classList.contains('sticky')){\r\n\t\t\t\t\t\ttoc.style.width = '${tocParent.offsetWidth}px';\r\n\t\t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif(window.innerWidth < 767){\r\n\t\t\t\t\ttoc.style.width = \"unset\"; \/\/ Reset width\r\n\t\t\t\t}\r\n\t\t\t\ttoc.style.backgroundColor = \"#FFF1F1\";\r\n\t\t\t} else {\r\n\t\t\t  panel.style.height = panel.scrollHeight + \"px\";\r\n\t\t\t  icon.style.transform = \"rotate(0deg)\";\r\n\t\t\t  toc.style.backgroundColor = \"#FFF\";\r\n\t\t\t  tocTitle.textContent = 'Table of Content'; \/\/ Reset title\r\n\t\t\t\ttoc.style.paddingBottom = '24px';\r\n\t\t\t \tif(window.innerWidth < 767){\r\n\t\t\t\t\ttoc.style.width = `${tocParent.offsetWidth}px`; \/\/ Set width to match the parent element\r\n\t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t  });\r\n\r\n\t\t  \/\/ Close TOC when a link inside it is clicked\r\n\t\t  var tocLinks = document.querySelectorAll(\"#toc .list a\");\r\n\t\t  tocLinks.forEach(function(link) {\r\n\t\t\tlink.addEventListener(\"click\", function() {\r\n\t\t\t  var panel = document.querySelector(\"#toc .list\");\r\n\t\t\t  panel.style.height = '0px'; \/\/ Set height to 0 for full collapse\r\n\t\t\t  icon.style.transform = \"rotate(180deg)\";\r\n\t\t\t  toc.style.backgroundColor = \"#FFF\";\r\n\t\t\t});\r\n\t\t  });\r\n\t\t});\r\n<\/script>\r\n\r\n<!-- <script>\r\n\tvar pilihDaftarIsi = document.getElementById('pilihDaftarIsi');\r\n\t\r\n\tdocument.addEventListener('DOMContentLoaded', function() {\r\n\t\tvar dropdownFixedTop = document.querySelector('.dropdown-fixed-top');\r\n\r\n\t\tdropdownFixedTop.addEventListener('click', function() {\r\n\t\t\tvar dropdownContent = this.querySelector('.list_toc');\r\n\t\t\tdropdownContent.classList.toggle('show');\r\n\t\t});\r\n\r\n\t\twindow.addEventListener('click', function(event) {\r\n\t\t\tvar listTocTop = document.getElementById('list_toc_top');\r\n\r\n\t\t\tif (!dropdownFixedTop.contains(event.target)) {\r\n\t\t\t\tlistTocTop.classList.remove('show');\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\t\r\n\tvar daftarIsiContainer = document.getElementById('toc_group_article');\r\n\tvar dropdownFixedTop = document.getElementById('dropdown-fixed-top');\r\n    var triggered = false; \/\/ Flag to keep track of whether the function has been triggered\r\n\r\n    window.addEventListener('scroll', function() {\r\n        if (!triggered && isCompletelyScrolledPast(daftarIsiContainer)) {\r\n            showSectionDropdownFixedTop(false);\r\n            triggered = true;\r\n        } else if (triggered && !isCompletelyScrolledPast(daftarIsiContainer)) {\r\n            showSectionDropdownFixedTop(true);\r\n            triggered = false;\r\n        }\r\n    });\r\n\r\n    function isCompletelyScrolledPast(element) {\r\n        var elementTop = element.getBoundingClientRect().top;\r\n        var elementBottom = element.getBoundingClientRect().bottom;\r\n        return elementTop < 0 && elementBottom < 0;\r\n    }\r\n\r\n    function showSectionDropdownFixedTop(show) {\r\n\t\tif (show) {\r\n\t\t\tdropdownFixedTop.classList.remove(\"show\");\r\n\t\t} else {\r\n\t\t\tdropdownFixedTop.classList.add(\"show\");\r\n\t\t}\r\n    }\r\n\r\n\/\/ Scrollspy function to highlight the active TOC item based on the scroll position\r\n  function scrollSpy(tocClass) {\r\n    const scrollPosition = window.scrollY;\r\n\r\n    \/\/ Find the active h2 and h3 headings based on their position in the corresponding TOC\r\n    let activeH2 = null;\r\n    let activeH3 = null;\r\n\r\n    const tocItems = document.querySelectorAll(`.${tocClass} li`);\r\n    tocItems.forEach(item => {\r\n      const a = item.querySelector('a');\r\n      if (!a) return;\r\n      const href = a.getAttribute('href');\r\n      const targetId = href.substring(1); \/\/ Remove the '#' from the href to get the target ID\r\n      const targetElement = document.getElementById(targetId);\r\n      if (!targetElement) return;\r\n\r\n      const targetTop = targetElement.getBoundingClientRect().top + scrollPosition;\r\n      const nextItem = item.nextElementSibling;\r\n      const nextTop = nextItem ? nextItem.getBoundingClientRect().top + scrollPosition : Infinity;\r\n\r\n      if (targetTop <= scrollPosition + 150) {\r\n        if (a.parentElement.parentElement === tocItems) {\r\n          \/\/ The h2 heading is at the root level of the TOC\r\n          activeH2 = { id: targetId, level: 'h2' };\r\n        } else {\r\n          \/\/ The h3 heading is nested under an h2 heading\r\n          const parentH2 = a.parentElement.parentElement.previousElementSibling;\r\n          if (parentH2) {\r\n            const h2Link = parentH2.querySelector('a');\r\n            if (h2Link) {\r\n              const h2Href = h2Link.getAttribute('href');\r\n              const h2Id = h2Href.substring(1);\r\n              activeH2 = { id: h2Id, level: 'h2' };\r\n            }\r\n          }\r\n          activeH3 = { id: targetId, level: 'h3' };\r\n        }\r\n      }\r\n\r\n      if (targetTop > scrollPosition + 150 && nextTop > scrollPosition + 150 && !activeH3) {\r\n        \/\/ Reset the activeH2 when there are no more active h3 headings\r\n        activeH2 = null;\r\n      }\r\n    });\r\n\r\n    \/\/ Update the active state for the TOC items\r\n    tocItems.forEach(item => {\r\n      item.classList.remove('active');\r\n      const a = item.querySelector('a');\r\n      if (a) {\r\n        const href = a.getAttribute('href');\r\n        const targetId = href.substring(1);\r\n        if ((activeH2 && activeH2.id === targetId) || (activeH3 && activeH3.id === targetId)) {\r\n          item.classList.add('active');\r\n\t\t  pilihDaftarIsi.innerHTML = a.textContent;\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  \/\/ Call scrollSpy for each TOC on window scroll\r\n  const tocClasses = ['list_toc', 'list_toc_float', 'list_toc_top']; \/\/ Add other TOC class names here if you have more than two instances\r\n  tocClasses.forEach(tocClass => {\r\n    window.addEventListener('scroll', () => scrollSpy(tocClass));\r\n  });\r\n<\/script> -->\r\n<!-- END script lama -->\r\n\t\r\n<script>\r\n    \/\/ Scrollspy function to highlight the active TOC item based on the scroll position\r\n  function scrollSpy(tocClass) {\r\n    const scrollPosition = window.scrollY;\r\n\r\n    \/\/ Find the active h2 and h3 headings based on their position in the corresponding TOC\r\n    let activeH2 = null;\r\n    let activeH3 = null;\r\n\r\n    const tocItems = document.querySelectorAll(`.${tocClass} li`);\r\n    tocItems.forEach(item => {\r\n      const a = item.querySelector('a');\r\n      if (!a) return;\r\n      const href = a.getAttribute('href');\r\n      const targetId = href.substring(1); \/\/ Remove the '#' from the href to get the target ID\r\n      const targetElement = document.getElementById(targetId);\r\n      if (!targetElement) return;\r\n\r\n      const targetTop = targetElement.getBoundingClientRect().top + scrollPosition;\r\n      const nextItem = item.nextElementSibling;\r\n      const nextTop = nextItem ? nextItem.getBoundingClientRect().top + scrollPosition : Infinity;\r\n\r\n      if (targetTop <= scrollPosition + 150) {\r\n        if (a.parentElement.parentElement === tocItems) {\r\n          \/\/ The h2 heading is at the root level of the TOC\r\n          activeH2 = { id: targetId, level: 'h2' };\r\n        } else {\r\n          \/\/ The h3 heading is nested under an h2 heading\r\n          const parentH2 = a.parentElement.parentElement.previousElementSibling;\r\n          if (parentH2) {\r\n            const h2Link = parentH2.querySelector('a');\r\n            if (h2Link) {\r\n              const h2Href = h2Link.getAttribute('href');\r\n              const h2Id = h2Href.substring(1);\r\n              activeH2 = { id: h2Id, level: 'h2' };\r\n            }\r\n          }\r\n          activeH3 = { id: targetId, level: 'h3' };\r\n        }\r\n      }\r\n\r\n      if (targetTop > scrollPosition + 150 && nextTop > scrollPosition + 150 && !activeH3) {\r\n        \/\/ Reset the activeH2 when there are no more active h3 headings\r\n        activeH2 = null;\r\n      }\r\n    });\r\n\r\n    \/\/ Update the active state for the TOC items\r\n    tocItems.forEach(item => {\r\n      item.classList.remove('active');\r\n      const a = item.querySelector('a');\r\n      if (a) {\r\n        const href = a.getAttribute('href');\r\n        const targetId = href.substring(1);\r\n        if ((activeH2 && activeH2.id === targetId) || (activeH3 && activeH3.id === targetId)) {\r\n          item.classList.add('active');\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  \/\/ Call scrollSpy for each TOC on window scroll\r\n  const tocClasses = ['list_toc', 'list_toc_float', 'list_toc_top']; \/\/ Add other TOC class names here if you have more than two instances\r\n  tocClasses.forEach(tocClass => {\r\n    window.addEventListener('scroll', () => scrollSpy(tocClass));\r\n  });\r\n<\/script>\r\n\t\r\n\r\n<!-- ToC List for desktop side bar, diganti jadi inject by php, di code snippet \"Sidebar Accordion\" -->\r\n<!-- <script>\r\n\tdocument.addEventListener('DOMContentLoaded', function() {\r\n        \/\/ Fungsi untuk mengubah teks menjadi format id\r\n        function formatId(text) {\r\n            return text.trim().replace(\/[^\\w\\d]+\/g, '_');\r\n        }\r\n\r\n        \/\/ Fungsi untuk membuat nested list\r\n        function createNestedList(parentNode, children) {\r\n            if (children.length === 0) return;\r\n\r\n            const nestedUl = document.createElement('ul');\r\n            children.forEach(child => {\r\n                const nestedLi = document.createElement('li');\r\n                const nestedA = document.createElement('a');\r\n                nestedA.textContent = child.title;\r\n                nestedA.href = `#${child.id}`;\r\n                nestedLi.appendChild(nestedA);\r\n                nestedUl.appendChild(nestedLi);\r\n\r\n                if (child.children.length > 0) {\r\n                    createNestedList(nestedLi, child.children);\r\n                }\r\n            });\r\n\r\n            parentNode.appendChild(nestedUl);\r\n        }\r\n\r\n        \/\/ Membuat objek untuk menyimpan daftar h2 dan h3 beserta judulnya\r\n        const headings = [];\r\n\r\n           \/\/ Mengambil semua elemen h2 dan h3\r\n        const elements = document.querySelectorAll('.td-post-content h2');\r\n\t\t\t\/\/, .td-post-content h3\r\n\r\n        elements.forEach(element => {\r\n            if (element.tagName === 'H2') {\r\n                const id = formatId(element.textContent);\r\n                element.id = id;\r\n\t\t\t\tif(element.textContent.toLowerCase() === \"key takeaways\") {return;} \/\/ Biar ga nampilin Key Takeaways di ToC\r\n                headings.push({ level: 'h2', id: id, title: element.textContent, children: [] });\r\n            } else if (element.tagName === 'H3') {\r\n                const id = formatId(element.textContent);\r\n                element.id = id;\r\n                if (headings.length > 0) {\r\n                    headings[headings.length - 1].children.push({ level: 'h3', id: id, title: element.textContent, children: [] });\r\n                }\r\n            }\r\n        });\r\n\r\n        \/\/ Membuat list HTML dari objek headings\r\n        const ul = document.getElementById('list_toc');\r\n        let currentUl = ul;\r\n        headings.forEach(heading => {\r\n            const li = document.createElement('li');\r\n            const a = document.createElement('a');\r\n            a.textContent = heading.title;\r\n            a.href = `#${heading.id}`;\r\n            li.appendChild(a);\r\n\r\n            if (heading.level === 'h2') {\r\n                \/\/ Menyimpan ul saat ini untuk menambahkan nested ul\r\n                currentUl = li;\r\n                ul.appendChild(li);\r\n            } else if (heading.level === 'h3') {\r\n                if (!currentUl.lastElementChild || currentUl.lastElementChild.tagName !== 'UL') {\r\n                    \/\/ Jika belum ada nested ul, buat satu\r\n                    const nestedUl = document.createElement('ul');\r\n                    currentUl.appendChild(nestedUl);\r\n                    currentUl = nestedUl;\r\n                }\r\n                currentUl.appendChild(li);\r\n            }\r\n\r\n            createNestedList(li, heading.children);\r\n        });\r\n\t\t\/\/ Dapatkan elemen ul dengan id 'list_toc_float'\r\nconst ulFloat = document.getElementById('list_toc');\r\nconst ulJourney = document.getElementById('list_journey');\r\n\r\n\/\/ Dapatkan isi (child elements) dari ul dengan id 'list_toc_float'\r\n\tif (ulFloat !== null) {\r\n\t\tconst clonedChildren = ulFloat.cloneNode(true).children;\r\n\t\tconst ulToc = document.getElementById('list_toc_float');\r\n\t\tconst ulTocTop = document.getElementById('list_toc_top');\r\n\t\tif ((ulToc !== null || ulToc !== undefined) && window.innerWidth > 1018){\r\n\t\t\tulToc.append(...clonedChildren);\r\n\t\t} else {\r\n\t\t\tulTocTop.append(...clonedChildren);\r\n\t\t}\r\n\t} \r\n\r\n\tif (ulJourney !== null) {\r\n\t\tconst clonedChildrenJourney = ulJourney.cloneNode(true).children;\r\n\t\tconst ulTocJourney = document.getElementById('list_toc_journey');\r\n\t\tulTocJourney.append(...clonedChildrenJourney);\r\n\t} \r\n\r\n\r\n\r\n\r\n\t\r\n        \/\/ Fungsi untuk mengambil tinggi navbar\r\n        function getNavbarHeight() {\r\n            const navbar = document.getElementById('tdi_34');\r\n            return navbar ? navbar.offsetHeight : 0;\r\n        }\r\n\r\n        \/\/ Fungsi untuk menambahkan offset posisi scroll\r\n        function scrollToElementWithOffset(elementId) {\r\n            const element = document.getElementById(elementId);\r\n            if (element) {\r\n                const offset = getNavbarHeight();\r\n                const elementPosition = element.getBoundingClientRect().top;\r\n                const offsetPosition = elementPosition - offset-40;\r\n\r\n                window.scrollBy({\r\n                    top: offsetPosition,\r\n                    behavior: 'smooth'\r\n                });\r\n            }\r\n        }\r\n\r\n        \/\/ Fungsi untuk menangani klik pada tautan judul\r\n        function handleTitleClick(event) {\r\n            event.preventDefault();\r\n            const href = event.target.getAttribute('href').substr(1);\r\n            scrollToElementWithOffset(href);\r\n        }\r\n\r\n        \/\/ Tambahkan event listener untuk semua tautan judul\r\n        const titleLinks = document.querySelectorAll('a[href^=\"#\"]');\r\n        titleLinks.forEach(link => {\r\n            link.addEventListener('click', handleTitleClick);\r\n        });\r\n\t});\r\n    <\/script> -->\r\n<!-- \t<style>#toc_group_float{display:block !important}<\/style> -->\r\n\n<p>Since Malaysia\u2019s e-Invoice rollout began, procurement is no longer only about issuing purchase orders and paying suppliers on time. Businesses now need clearer links between purchase requests, approvals, supplier invoices, tax details, and payment records so every transaction can be traced properly before it reaches finance.<\/p>\n<p>The Procure to Pay (P2P) process connects those steps into one end-to-end cycle, from identifying a business need to completing supplier payment. <a href=\"https:\/\/www.hasil.gov.my\/en\/e-invoice\/implementation-of-e-invoicing-in-malaysia\/e-invoice-implementation-timeline\/\" target=\"_blank\" rel=\"noopener\">According to LHDN\u2019s e-Invoice implementation timeline<\/a>, Malaysia\u2019s e-Invoice rollout is phased by annual turnover or revenue, making cleaner invoice, tax, and payment records more important for businesses entering their compliance phase.<\/p>\n<p>A well-structured P2P process helps Malaysian businesses improve transparency, stay compliant, and reduce maverick spending through a clearer <a href=\"https:\/\/www.hashmicro.com\/my\/procurement-and-purchasing-management-system\">procurement and purchasing management workflow<\/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: #990000; color: #ffffff; padding: 5px;\"><b>Key Takeaways<\/b><\/span><\/h3>\n<ul>\n<li>The<a href=\"#1\"> Procure to Pay (P2P) process <\/a>connects procurement and finance into one transparent workflow, from requisition to supplier payment.<\/li>\n<li>A well-structured <a href=\"#2\">P2P workflow <\/a>includes seven key stages, with three-way matching as the most critical control point to prevent overpayment and fraud.<\/li>\n<li>Optimising P2P delivers <a href=\"#3\">strategic benefits <\/a>such as stronger financial visibility, better supplier relationships, and full LHDN e-Invoice compliance for Malaysian businesses.<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>In reality, most procurement teams in Malaysia still juggle spreadsheets, scattered email approvals, and piles of paper invoices every single day. These manual habits quietly drain hours of productive time, create room for costly data errors, and make it harder to stay aligned with the new e-Invoice<span id=\"1\"><\/span> requirements.<\/p>\n\r\n    <div class=\"adjustable-banner-wrap\">\r\n        <a href=\"https:\/\/www.hashmicro.com\/my\/procurement-and-purchasing-management-system?medium=moneysite-banner\" target=\"_blank\">\r\n            <img decoding=\"async\" loading=\"lazy\"\r\n                 src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/my_procurement_desktop.webp\"\r\n                 data-desktop-src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/my_procurement_desktop.webp\"\r\n                 data-mobile-src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/my_procurement_mobile.webp\"\r\n                 alt=\"ProcurementGeneral\"\r\n                 class=\"responsive-image-banner\">\r\n\r\n            \r\n            <div class=\"adjustable-banner-overlay\" style=\"width: 53%\">\r\n                <p class=\"adjustable-banner-text\"><span class='adjustable-highlight'>Manage suppliers and orders<\/span> without the hassle.<\/p>\r\n                <div class=\"adjustable-banner-btn\">Schedule a Consultation<\/div>\r\n            <\/div>\r\n\r\n        <\/a>\r\n    <\/div>\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>\n<h2><strong>What is Procure to Pay (P2P)?<\/strong><\/h2>\n<p><strong>Procure to Pay (P2P)<\/strong> is the process of managing a purchase from the moment a business identifies a need until the supplier is fully paid. It connects procurement and finance so companies can control purchasing, track spending, and handle payments more efficiently.<\/p>\n<p>In simple terms, the procure to pay process combines purchasing, invoice management, and payment into one connected workflow. Instead of treating procurement and accounts payable as separate functions, P2P helps businesses improve visibility, reduce manual errors, and maintain better financial control.<\/p>\n<p>Today, this process is increasingly facilitated by <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/best-procurement-software\/\" target=\"_blank\" rel=\"noopener noreferrer\">modern procurement software<\/a>, which helps automate routine tasks, improve invoice accuracy, reduce fraud risk, and give businesses a clearer view of their spending.<\/p>\n<h2><strong>Procure to Pay (P2P) vs. Source to Pay (S2P)<\/strong><\/h2>\n<p>It is common to hear the terms P2P and S2P used interchangeably, but they represent different scopes of the procurement journey. Understanding the difference is key to building a comprehensive procurement strategy.<\/p>\n<table>\n<tbody>\n<tr>\n<td style=\"background-color: #990000; color: #ffffff; padding: 5px; text-align: center;\" width=\"25%\"><b>Aspect<\/b><\/td>\n<td style=\"background-color: #990000; color: #ffffff; padding: 5px; text-align: center;\" width=\"50%\"><b>Procure to Pay (P2P)<\/b><\/td>\n<td style=\"background-color: #990000; color: #ffffff; padding: 5px; text-align: center;\" width=\"50%\"><b>Source to Pay (S2P)<\/b><\/td>\n<\/tr>\n<tr>\n<td>Scope<\/td>\n<td>Transactional<\/td>\n<td>Strategic + Transactional<\/td>\n<\/tr>\n<tr>\n<td>Starts with<\/td>\n<td>Approved vendor &amp; signed contract<\/td>\n<td>Identifying new suppliers<\/td>\n<\/tr>\n<tr>\n<td>Includes<\/td>\n<td>Requisition \u2192 PO \u2192 Receipt \u2192 Payment<\/td>\n<td>Sourcing, contract management, supplier performance + everything in P2P<\/td>\n<\/tr>\n<tr>\n<td>Primary goal<\/td>\n<td>Operational efficiency &amp; financial accuracy<\/td>\n<td>Long-term value &amp; supplier strategy<\/td>\n<\/tr>\n<tr>\n<td>Best for<\/td>\n<td>Companies focused on &#8220;how we buy&#8221;<\/td>\n<td>Companies focused on &#8220;who we buy from and why&#8221;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>In short, most mature organisations first optimise their P2P cycle to gain immediate control over cash<span id=\"2\"><\/span> flow, then expand into a full S2P model to unlock long-term strategic value.<\/p>\n<h2><strong>The Comprehensive P2P Workflow: A Step-by-Step Breakdown<\/strong><\/h2>\n<p><img decoding=\"async\" class=\"size-full wp-image-18889 aligncenter\" src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/P2P-Workflow.webp\" alt=\"P2P Workflow\" width=\"1672\" height=\"941\" srcset=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/P2P-Workflow.webp 1672w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/P2P-Workflow-300x169.webp 300w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/P2P-Workflow-1024x576.webp 1024w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/P2P-Workflow-768x432.webp 768w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/P2P-Workflow-1536x864.webp 1536w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/P2P-Workflow-746x420.webp 746w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/P2P-Workflow-150x84.webp 150w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/P2P-Workflow-696x392.webp 696w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/P2P-Workflow-1068x601.webp 1068w\" sizes=\"(max-width: 1672px) 100vw, 1672px\" \/><\/p>\n<p>To fully grasp P2P, it helps to look at the specific stages that make up the cycle. Each step acts as a checkpoint to ensure that capital is spent wisely and that the organisation receives exactly what it paid for.<\/p>\n<h3><strong>1. Identification of Needs<\/strong><\/h3>\n<p>The cycle begins when a department identifies a specific need office supplies, raw materials, or <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/construction-procurement\/\">construction procurement<\/a>\u00a0for project-based companies. Clear specifications at this stage prevent costly returns and operational delays.<\/p>\n<h3><strong>2. Purchase Requisition (PR)<\/strong><\/h3>\n<p>Next, the requester submits a formal Purchase Requisition. This internal document includes the item, quantity, estimated cost, and budget code. In an automated system, the platform instantly checks whether the request fits within the remaining budget before routing it further.<\/p>\n<h3><strong>3. Requisition Approval<\/strong><\/h3>\n<p>Then, the PR is routed to the appropriate approver based on value and internal policy. A clear approval hierarchy is essential \u2014 too slow, and operations stall; too lax, and financial leakage follows. Modern P2P tools use automated workflows to push requests to the right stakeholder in seconds.<\/p>\n<h3><strong>4. Purchase Order (PO) Creation<\/strong><\/h3>\n<p>Once approved, the PR is converted into a\u00a0<strong>Purchase Order (PO)<\/strong> a legally binding document sent to the supplier. It specifies what is being bought, delivery timelines, and agreed pricing. Once accepted, the vendor is contractually obliged to deliver as stated.<\/p>\n<h3><strong>5. Goods Receipt and Inspection<\/strong><\/h3>\n<p>When the supplier delivers, the organisation records the receipt and inspects whether the goods match the PO in quantity and quality. Any discrepancy such as damaged goods\u00a0 should be flagged immediately, often triggering a <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/debit-note\/\">debit note<\/a>\u00a0to the supplier.<\/p>\n<h3><strong>6. Invoice Receipt and Three-Way Matching<\/strong><\/h3>\n<p>Subsequently, the supplier issues an invoice. This triggers the\u00a0<strong>three-way match<\/strong>, arguably the most critical control point in the entire P2P process. The accounts payable team compares:<\/p>\n<ul>\n<li>The\u00a0<strong>Purchase Order<\/strong>\u00a0(what we ordered)<\/li>\n<li>The\u00a0<strong>Goods Receipt<\/strong>\u00a0(what we received)<\/li>\n<li>The\u00a0<strong>Supplier Invoice<\/strong>\u00a0(what we are being charged)<\/li>\n<\/ul>\n<p>If all three align within tolerance, the invoice is approved. Otherwise, it is flagged for investigation preventing overpayment, duplicate payments, and payment for goods never received.<\/p>\n<h3><strong>7. Payment Fulfilment<\/strong><\/h3>\n<p>Finally, funds are transferred to the supplier. Timing here is strategic: some companies pay early to capture discounts, while others wait until the credit term ends to maximise cash flow. Once paid, the transaction closes in the accounting system and the cycle completes.<\/p>\n<h2><strong>How P2P Supports LHDN e-Invoice Compliance in Malaysia<\/strong><\/h2>\n<p>Since Malaysia&#8217;s e-Invoice rollout, every business transaction must be submitted to the\u00a0<strong>MyInvois portal<\/strong> for validation. A modern P2P system automatically generates compliant e-Invoice formats, submits them to LHDN, and stores validated QR-coded invoices all without manual effort.<\/p>\n<p>Consequently, Malaysian SMEs adopting a digital P2P system not only streamline operations but also stay aligned with local tax regulations, SST reporting, and cross-border compliance <span id=\"3\"><\/span>when trading with Singapore, Indonesia, or Thailand.<\/p>\n<h2><strong>Procure to Pay in Accounts Payable<\/strong><\/h2>\n<p>While P2P is often associated with procurement, its final stages invoice receipt, three-way matching, and payment fall squarely within the Accounts Payable (AP) function. In fact, how smoothly the AP team processes supplier invoices determines whether the entire P2P cycle ends with on-time payments or with disputes and late fees. A well-connected P2P workflow gives AP clear visibility into every PO and goods receipt, which removes the guesswork from invoice validation.<\/p>\n<p>For many Malaysian businesses, the biggest bottlenecks actually sit inside AP such as invoice backlog, duplicate entries, missed early-payment discounts, and long approval chains. Integrating AP tightly with procurement through a single system helps eliminate these issues and turns the finance team into a true strategic partner. If you are looking to benchmark options, this guide on the <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/best-accounts-payable-software\/\">best accounts payable software<\/a>\u00a0in Malaysia offers a practical starting point for evaluation.<\/p>\n<h2><strong>Strategic Benefits of P2P Optimization<\/strong><\/h2>\n<p><img decoding=\"async\" class=\"size-full wp-image-18903 aligncenter\" src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/Strategic-Benefits-of-P2P-Optimisation.webp\" alt=\"Strategic Benefits of P2P Optimisation\" width=\"1672\" height=\"941\" srcset=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/Strategic-Benefits-of-P2P-Optimisation.webp 1672w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/Strategic-Benefits-of-P2P-Optimisation-300x169.webp 300w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/Strategic-Benefits-of-P2P-Optimisation-1024x576.webp 1024w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/Strategic-Benefits-of-P2P-Optimisation-768x432.webp 768w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/Strategic-Benefits-of-P2P-Optimisation-1536x864.webp 1536w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/Strategic-Benefits-of-P2P-Optimisation-746x420.webp 746w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/Strategic-Benefits-of-P2P-Optimisation-150x84.webp 150w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/Strategic-Benefits-of-P2P-Optimisation-696x392.webp 696w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/Strategic-Benefits-of-P2P-Optimisation-1068x601.webp 1068w\" sizes=\"(max-width: 1672px) 100vw, 1672px\" \/>Optimizing the Procure to Pay process offers benefits that extend far beyond the procurement and finance departments. It impacts the entire organization&#8217;s bottom line and operational stability.<\/p>\n<ul>\n<li><strong>Enhanced Financial Visibility<\/strong><br \/>\nAbove all, a structured P2P process lets managers see where every ringgit is going in real time. Rather than waiting for end-of-month reports, leadership can monitor live data through integrated <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/purchasing-report\/\">purchasing reports<\/a>, spot anomalies instantly, and adjust budgets proactively.<\/li>\n<\/ul>\n<ul>\n<li><strong>Improved Supplier Relationships<\/strong><br \/>\nSuppliers value consistent, timely payment. When an organisation streamlines its P2P cycle, it becomes a &#8220;customer of choice&#8221; gaining better negotiation leverage, priority service during supply chain disruptions, and earlier access to vendor innovations.<\/li>\n<li><strong>Cost Savings and Efficiency<\/strong><br \/>\nManual P2P processes are expensive. In fact, the cost per invoice in manual systems can be up to <strong>5x higher<\/strong>\u00a0than in automated ones. Automation, therefore, significantly lowers\u00a0<a href=\"https:\/\/www.hashmicro.com\/my\/blog\/operating-expenses\/\">operating expenses<\/a> by reducing headcount needs and eliminating maverick spending through enforced use of preferred suppliers.<\/li>\n<li><strong>Regulatory Compliance and Fraud Prevention<br \/>\n<\/strong>Finally, a documented P2P audit trail who requested, who approved, when received, when paid acts as a powerful deterrent against internal fraud. In addition, it simplifies LHDN audits, SST reporting, and external financial reviews.<\/li>\n<\/ul>\n<p>To put the difference into perspective, the comparison below shows how key procurement metrics such as cost per invoice, PO cycle time, error rate, and straight-through processing\u00a0 typically shift when businesses move from manual workflows to an automated P2P system.<\/p>\n<table>\n<tbody>\n<tr>\n<td style=\"background-color: #990000; color: #ffffff; padding: 5px; text-align: center;\" width=\"20%\"><b>Metric<\/b><\/td>\n<td style=\"background-color: #990000; color: #ffffff; padding: 5px; text-align: center;\" width=\"50%\"><b>Manual Process<\/b><\/td>\n<td style=\"background-color: #990000; color: #ffffff; padding: 5px; text-align: center;\" width=\"50%\"><b>Automated P2P<\/b><\/td>\n<\/tr>\n<tr>\n<td>Cost per invoice<\/td>\n<td>RM 40 \u2013 RM 60<\/td>\n<td>RM 8 \u2013 RM 15<\/td>\n<\/tr>\n<tr>\n<td>PO cycle time<\/td>\n<td>5 \u2013 10 days<\/td>\n<td>&lt; 1 day<\/td>\n<\/tr>\n<tr>\n<td>Invoice error rate<\/td>\n<td>15 \u2013 20%<\/td>\n<td>&lt; 2%<\/td>\n<\/tr>\n<tr>\n<td>Straight-through rate<\/td>\n<td>&lt; 10%<\/td>\n<td>60 \u2013 80%<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><strong>How to Overcome Common P2P Challenges (Best Practices)<\/strong><\/h2>\n<p><img decoding=\"async\" class=\"size-full wp-image-18884 aligncenter\" src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/common-p2p-challenges-1.webp\" alt=\"common p2p challenges\" width=\"1672\" height=\"941\" srcset=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/common-p2p-challenges-1.webp 1672w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/common-p2p-challenges-1-300x169.webp 300w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/common-p2p-challenges-1-1024x576.webp 1024w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/common-p2p-challenges-1-768x432.webp 768w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/common-p2p-challenges-1-1536x864.webp 1536w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/common-p2p-challenges-1-746x420.webp 746w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/common-p2p-challenges-1-150x84.webp 150w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/common-p2p-challenges-1-696x392.webp 696w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/common-p2p-challenges-1-1068x601.webp 1068w\" sizes=\"(max-width: 1672px) 100vw, 1672px\" \/><\/p>\n<p>Implementing a successful P2P process requires more than software it demands process discipline. Here are the most common pitfalls and how to solve them.<\/p>\n<h3><strong>1. Tackle Maverick Spending Head-On<\/strong><\/h3>\n<p>Maverick spending happens when employees bypass the official process due to slow approvals. To fix this, simplify the requisition UX, empower managers with reasonable spending limits, and make preferred-supplier catalogues easy to search.<\/p>\n<h3><strong>2. Break Down Data Silos<\/strong><\/h3>\n<p>When procurement and finance use different systems, discrepancies multiply. For this reason, Malaysian enterprises increasingly adopt\u00a0<a href=\"https:\/\/www.hashmicro.com\/my\/blog\/two-tier-erp\/\">two-tier ERP<\/a>\u00a0or unified platforms to create a single source of truth across departments and regional offices.<\/p>\n<h3><strong>3. Eliminate Paper-Based Workflows<\/strong><\/h3>\n<p>Even in 2026, many businesses still rely on physical signatures and paper invoices. However, with LHDN mandating digital invoicing, the shift to paperless P2P is now unavoidable and overdue.<\/p>\n<h3><strong>4. Standardise &amp; Centralise the Process<\/strong><\/h3>\n<p>Use the same forms, approval workflows, and vendor master data across the entire organisation. Additionally, centralise procurement and accounts payable so a dedicated team can negotiate enterprise-wide contracts and maintain tighter cash flow control.<\/p>\n<h3><strong>5. Enable Your Suppliers<\/strong><\/h3>\n<p>Encourage suppliers to adopt digital invoicing and use vendor portals. In some cases, offering training or incentives for early adopters speeds up the transition to a fully digital PO-to-payment loop.<\/p>\n<h2><strong>Essential P2P KPIs to Track<\/strong><\/h2>\n<p>To manage P2P effectively, you must measure it. These KPIs highlight bottlenecks and justify further investment in automation.<\/p>\n<table>\n<tbody>\n<tr>\n<td style=\"background-color: #990000; color: #ffffff; padding: 5px; text-align: center;\" width=\"20%\"><b>KPI<\/b><\/td>\n<td style=\"background-color: #990000; color: #ffffff; padding: 5px; text-align: center;\" width=\"50%\"><b>What It Measures<\/b><\/td>\n<td style=\"background-color: #990000; color: #ffffff; padding: 5px; text-align: center;\" width=\"50%\"><b>Target Benchmark<\/b><\/td>\n<\/tr>\n<tr>\n<td>PO Cycle Time<\/td>\n<td>Days from requisition to PO sent<\/td>\n<td>&lt; 1 day<\/td>\n<\/tr>\n<tr>\n<td>Invoice Processing Cost<\/td>\n<td>Cost per invoice processed<\/td>\n<td>&lt; RM 15<\/td>\n<\/tr>\n<tr>\n<td>Straight-Through Invoice %<\/td>\n<td>Invoices with zero human intervention<\/td>\n<td>&gt; 60%<\/td>\n<\/tr>\n<tr>\n<td>Maverick Spend Ratio<\/td>\n<td>% of spend outside formal P2P process<\/td>\n<td>&lt; 5%<\/td>\n<\/tr>\n<tr>\n<td>Supplier Lead Time Accuracy<\/td>\n<td>Delivery on promised date<\/td>\n<td>&gt; 95%<\/td>\n<\/tr>\n<tr>\n<td>First-Time Match Rate<\/td>\n<td>Invoices matched on first attempt<\/td>\n<td>&gt; 85%<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><strong>Case Example: A Malaysian Distribution Company<\/strong><\/h2>\n<p>A mid-sized distribution company based in Selangor previously processed over 1,200 invoices monthly using spreadsheets and email approvals. As a result, PO cycle time averaged 7 days and invoice errors hit 18%. After implementing an automated P2P system:<\/p>\n<ul>\n<li>PO cycle time dropped to\u00a0<strong>under 24 hours<\/strong>\u00a0(86% reduction)<\/li>\n<li>Invoice errors fell to\u00a0<strong>below 2%<\/strong><\/li>\n<li>The company achieved\u00a0<strong>full LHDN e-Invoice compliance<\/strong>\u00a0within 3 months<\/li>\n<li>Annual savings on processing costs exceeded\u00a0<strong>RM 320,000<\/strong><\/li>\n<\/ul>\n<p>This illustrates how even mid-market Malaysian businesses can realise measurable ROI through P2P digitalisation.<\/p>\n<h2 id=\"p2p-technology\"><strong>The Role of Technology in Modern P2P<\/strong><\/h2>\n<p><img decoding=\"async\" class=\"size-full wp-image-18924 aligncenter\" src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/procurement-portal.webp\" alt=\"procurement portal\" width=\"1920\" height=\"1493\" srcset=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/procurement-portal.webp 1920w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/procurement-portal-300x233.webp 300w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/procurement-portal-1024x796.webp 1024w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/procurement-portal-768x597.webp 768w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/procurement-portal-1536x1194.webp 1536w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/procurement-portal-540x420.webp 540w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/procurement-portal-150x117.webp 150w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/procurement-portal-696x541.webp 696w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/procurement-portal-1068x830.webp 1068w\" sizes=\"(max-width: 1920px) 100vw, 1920px\" \/><\/p>\n<div style=\"margin: 30px 0; font-family: Arial, sans-serif;\">\n<h2 style=\"font-size: 32px; line-height: 1.25; font-weight: bold; color: #111; margin: 0 0 20px 0;\">How Technology Improves Modern Procure-to-Pay (P2P) Processes<\/h2>\n<div style=\"width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch;\">\n<table style=\"width: 100%; min-width: 1200px; border-collapse: collapse; table-layout: fixed; background: #fff; border: 1px solid #d9d9d9;\">\n<thead>\n<tr>\n<th style=\"background: #990000; color: #fff; padding: 14px 12px; border: 1px solid #d9d9d9; text-align: left; width: 35%; font-size: 15px; line-height: 1.5; font-weight: bold;\">Feature<\/th>\n<th style=\"background: #990000; color: #fff; padding: 14px 12px; border: 1px solid #d9d9d9; text-align: left; width: 65%; font-size: 15px; line-height: 1.5; font-weight: bold;\">Why It Matters for Malaysian Businesses<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"background: #f3f3f3; padding: 18px 14px; border: 1px solid #d9d9d9; vertical-align: top; font-size: 15px; line-height: 1.8; font-weight: bold; color: #111;\">Optical Character Recognition (OCR)<\/td>\n<td style=\"background: #f3f3f3; padding: 18px 14px; border: 1px solid #d9d9d9; vertical-align: top; font-size: 15px; line-height: 1.8; color: #222;\">OCR technology automatically reads invoice data and transfers it into the procurement system without manual input. This helps Malaysian businesses reduce data entry errors, accelerate invoice processing, and improve overall finance team productivity.<\/td>\n<\/tr>\n<tr>\n<td style=\"background: #ffffff; padding: 18px 14px; border: 1px solid #d9d9d9; vertical-align: top; font-size: 15px; line-height: 1.8; font-weight: bold; color: #111;\">AI-Powered Workflow Automation<\/td>\n<td style=\"background: #ffffff; padding: 18px 14px; border: 1px solid #d9d9d9; vertical-align: top; font-size: 15px; line-height: 1.8; color: #222;\">Artificial intelligence can perform automated three-way matching between purchase orders, invoices, and goods receipts within seconds. This allows finance teams to focus only on discrepancies and exceptions instead of repetitive verification work.<\/td>\n<\/tr>\n<tr>\n<td style=\"background: #f3f3f3; padding: 18px 14px; border: 1px solid #d9d9d9; vertical-align: top; font-size: 15px; line-height: 1.8; font-weight: bold; color: #111;\">Cloud-Based Supplier Portals<\/td>\n<td style=\"background: #f3f3f3; padding: 18px 14px; border: 1px solid #d9d9d9; vertical-align: top; font-size: 15px; line-height: 1.8; color: #222;\">Vendor portals give suppliers the ability to upload invoices, monitor payment progress, and maintain their own account information. This self-service functionality minimizes administrative workload while improving supplier communication and transparency.<\/td>\n<\/tr>\n<tr>\n<td style=\"background: #ffffff; padding: 18px 14px; border: 1px solid #d9d9d9; vertical-align: top; font-size: 15px; line-height: 1.8; font-weight: bold; color: #111;\">Mobile Approval Capabilities<\/td>\n<td style=\"background: #ffffff; padding: 18px 14px; border: 1px solid #d9d9d9; vertical-align: top; font-size: 15px; line-height: 1.8; color: #222;\">Mobile approvals allow managers to review and approve purchase requests or invoices directly from smartphones or tablets. This prevents workflow bottlenecks, speeds up procurement cycles, and supports faster supplier payments even when decision-makers are away from the office.<\/td>\n<\/tr>\n<tr>\n<td style=\"background: #f3f3f3; padding: 18px 14px; border: 1px solid #d9d9d9; vertical-align: top; font-size: 15px; line-height: 1.8; font-weight: bold; color: #111;\">Automated Remittance Notifications<\/td>\n<td style=\"background: #f3f3f3; padding: 18px 14px; border: 1px solid #d9d9d9; vertical-align: top; font-size: 15px; line-height: 1.8; color: #222;\">Modern P2P systems can automatically send remittance advice after payments are completed. This improves payment visibility for suppliers, reduces payment-related disputes, and strengthens long-term vendor relationships.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h2><strong>Conclusion<\/strong><\/h2>\n<p>The Procure to Pay (P2P) process sits at the heart of how a business manages spending, suppliers, and financial accuracy. From raising a requisition to creating a PO, receiving goods, and performing three-way matching, every stage ensures capital is used wisely. When these stages are connected through a structured workflow, businesses gain real-time visibility and reduce manual errors.<\/p>\n<p>For Malaysian businesses, the urgency to optimise P2P has never been greater. With the LHDN e-Invoice mandate and rising expectations around SST compliance, manual processes are no longer sustainable. Adopting digital P2P practices backed by standardised workflows, clean data, and clear KPIs helps businesses stay compliant and build stronger supplier partnerships over time.<\/p>\n<p>If you are curious to see how a modern P2P system could work within your own operations, you are welcome to explore HashMicro&#8217;s Procurement Software through a\u00a0<a href=\"https:\/\/apollo.hashmicro.com\/artifacts\/olWxeugpP4\/#\">free product demo<\/a>.<a href=\"https:\/\/www.hashmicro.com\/my\/free-product-demo\/?medium=free-product-demo\" target=\"_blank\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/08\/free-demo-desktop-my.webp\" data-desktop-src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/08\/free-demo-desktop-my.webp\" data-mobile-src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2024\/07\/free-demo-mobile-my.jpg\" alt=\"FreeDemo\" class=\"responsive-image-banner\"><\/a>\r\n\r\n<script>\r\n    \/\/ check which image to use based on screensize\r\n    document.addEventListener(\"DOMContentLoaded\", function() {\r\n        function updateImageSource() {\r\n            var images = document.querySelectorAll('.responsive-image-banner');\r\n            var screenWidth = window.innerWidth;\r\n\r\n            images.forEach(function(img) {\r\n                var mobileSrc = img.getAttribute('data-mobile-src');\r\n                var desktopSrc = img.getAttribute('data-desktop-src');\r\n\r\n                if (screenWidth < 576 && mobileSrc) {\r\n                    img.setAttribute('src', mobileSrc);\r\n                } else {\r\n                    img.setAttribute('src', desktopSrc);\r\n                }\r\n            });\r\n        }\r\n\r\n        \/\/ Initial check\r\n        updateImageSource();\r\n\r\n        \/\/ Update on resize\r\n        window.addEventListener('resize', updateImageSource);\r\n    });\r\n<\/script><\/p>\n<h2><strong>FAQ About Procure to Pay (P2P)<\/strong><\/h2>\n<ul class=\"bottom_faq\">\n<li>\n<details open=\"open\">\n<summary><strong>What is the procure to pay (P2P) process in simple terms?<\/strong><\/summary>\n<p>Procure to pay is the complete cycle of buying goods or services for a business starting from identifying a need, creating a purchase order, receiving the goods, and ending with paying the supplier. It connects procurement and finance into one continuous workflow.<\/p>\n<\/details>\n<\/li>\n<li>\n<details open=\"open\">\n<summary><strong>Why is three-way matching important in the P2P process?<\/strong><\/summary>\n<p>Three-way matching compares the purchase order, goods receipt, and supplier invoice to make sure the company only pays for what was actually ordered and received. It helps prevent overpayment, duplicate payments, and fraud.<\/p>\n<\/details>\n<\/li>\n<li>\n<details open=\"open\">\n<summary><strong>What are the main benefits of automating the procure to pay process?<\/strong><\/summary>\n<p>Automating P2P reduces manual errors, shortens approval cycles, improves spending visibility, and cuts the cost per invoice significantly. It also strengthens supplier relationships through faster, more reliable payments.<\/p>\n<\/details>\n<\/li>\n<li>\n<details open=\"open\">\n<summary><strong>What KPIs should I track to measure P2P performance?<\/strong><\/summary>\n<p>The most important P2P KPIs include purchase order cycle time, invoice processing cost, percentage of straight-through invoices, maverick spend ratio, and supplier lead time accuracy. Tracking these helps identify bottlenecks and areas for improvement.<\/p>\n<\/details>\n<\/li>\n<li>\n<details open=\"open\">\n<summary><strong>Which businesses in Malaysia benefit most from P2P automation?<\/strong><\/summary>\n<p>Mid-sized and large enterprises, distribution companies, manufacturers, construction firms, and any business handling more than 200 invoices per month benefit the most. SMEs scaling their operations also gain significant ROI from P2P automation.<\/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 the procure to pay (P2P) process in simple terms?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"Procure to pay is the complete cycle of buying goods or services for a business starting from identifying a need, creating a purchase order, receiving the goods, and ending with paying the supplier. It connects procurement and finance into one continuous workflow.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"Why is three-way matching important in the P2P process?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"Three-way matching compares the purchase order, goods receipt, and supplier invoice to make sure the company only pays for what was actually ordered and received. It helps prevent overpayment, duplicate payments, and fraud.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"What are the main benefits of automating the procure to pay process?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"Automating P2P reduces manual errors, shortens approval cycles, improves spending visibility, and cuts the cost per invoice significantly. It also strengthens supplier relationships through faster, more reliable payments.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"What KPIs should I track to measure P2P performance?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"The most important P2P KPIs include purchase order cycle time, invoice processing cost, percentage of straight-through invoices, maverick spend ratio, and supplier lead time accuracy. Tracking these helps identify bottlenecks and areas for improvement.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"Which businesses in Malaysia benefit most from P2P automation?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"Mid-sized and large enterprises, distribution companies, manufacturers, construction firms, and any business handling more than 200 invoices per month benefit the most. SMEs scaling their operations also gain significant ROI from P2P automation.\"\n    }\n  }]\n}\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Since Malaysia\u2019s e-Invoice rollout began, procurement is no longer only about issuing purchase orders and paying suppliers on time. Businesses now need clearer links between purchase requests, approvals, supplier invoices, tax details, and payment records so every transaction can be traced properly before it reaches finance. The Procure to Pay (P2P) process connects those steps [&hellip;]<\/p>\n","protected":false},"author":38,"featured_media":18886,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[60],"tags":[],"class_list":{"0":"post-18852","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-procurement"},"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>Procure to Pay (P2P) Malaysia: Complete Guide (2026)<\/title>\n<meta name=\"description\" content=\"Procure to Pay (P2P) is the process of managing a purchase from the moment a business identifies a need until the supplier is fully paid.\" \/>\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\/procure-to-pay-process\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Procure to Pay (P2P) Malaysia: Complete Guide (2026)\" \/>\n<meta property=\"og:description\" content=\"Procure to Pay (P2P) is the process of managing a purchase from the moment a business identifies a need until the supplier is fully paid.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/my\/blog\/procure-to-pay-process\/\" \/>\n<meta property=\"og:site_name\" content=\"HashMicro Malaysia\" \/>\n<meta property=\"article:published_time\" content=\"2026-04-24T06:33:18+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-29T08:35:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/Procure-to-Pay-P2P-The-Ultimate-2026-Strategic-Guide.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"400\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Zulkarnain bin Idris\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Zulkarnain bin Idris\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 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\/procure-to-pay-process\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/procure-to-pay-process\/\"},\"author\":{\"name\":\"Zulkarnain bin Idris\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/f6667e0b454a9938c0688e22064ff64c\"},\"headline\":\"Procure to Pay (P2P) Malaysia: Complete Guide (2026)\",\"datePublished\":\"2026-04-24T06:33:18+00:00\",\"dateModified\":\"2026-05-29T08:35:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/procure-to-pay-process\/\"},\"wordCount\":2397,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/procure-to-pay-process\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/Procure-to-Pay-P2P-The-Ultimate-2026-Strategic-Guide.webp\",\"articleSection\":[\"Procurement\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.hashmicro.com\/my\/blog\/procure-to-pay-process\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/procure-to-pay-process\/\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/procure-to-pay-process\/\",\"name\":\"Procure to Pay (P2P) Malaysia: Complete Guide (2026)\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/procure-to-pay-process\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/procure-to-pay-process\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/Procure-to-Pay-P2P-The-Ultimate-2026-Strategic-Guide.webp\",\"datePublished\":\"2026-04-24T06:33:18+00:00\",\"dateModified\":\"2026-05-29T08:35:19+00:00\",\"description\":\"Procure to Pay (P2P) is the process of managing a purchase from the moment a business identifies a need until the supplier is fully paid.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/procure-to-pay-process\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.hashmicro.com\/my\/blog\/procure-to-pay-process\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/procure-to-pay-process\/#primaryimage\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/Procure-to-Pay-P2P-The-Ultimate-2026-Strategic-Guide.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/Procure-to-Pay-P2P-The-Ultimate-2026-Strategic-Guide.webp\",\"width\":800,\"height\":400,\"caption\":\"Procure to Pay (P2P) The Ultimate 2026 Strategic Guide\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/procure-to-pay-process\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.hashmicro.com\/my\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Procure to Pay (P2P) Malaysia: Complete Guide (2026)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#website\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/\",\"name\":\"HashMicro Malaysia\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.hashmicro.com\/my\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#organization\",\"name\":\"HashMicro Malaysia\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/09\/logo.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/09\/logo.webp\",\"width\":422,\"height\":255,\"caption\":\"HashMicro Malaysia\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/f6667e0b454a9938c0688e22064ff64c\",\"name\":\"Zulkarnain bin Idris\",\"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-Zulkarnain-bin-Idris-BG-Tangga-1080x1080-1-96x96.webp\",\"contentUrl\":\"http:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/10\/cropped-Zulkarnain-bin-Idris-BG-Tangga-1080x1080-1-96x96.webp\",\"caption\":\"Zulkarnain bin Idris\"},\"description\":\"Zulkarnain bin Idris focuses on writing articles tailored to various industries, including manufacturing, distribution, and construction. He ensures each piece addresses industry-specific challenges and trends, helping readers understand how technology can transform their operations. By staying updated on market shifts, he develops fresh, relevant content that resonates with professionals in diverse sectors.\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/author\/zulkarnain-bin-idris\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Procure to Pay (P2P) Malaysia: Complete Guide (2026)","description":"Procure to Pay (P2P) is the process of managing a purchase from the moment a business identifies a need until the supplier is fully paid.","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\/procure-to-pay-process\/","og_locale":"en_US","og_type":"article","og_title":"Procure to Pay (P2P) Malaysia: Complete Guide (2026)","og_description":"Procure to Pay (P2P) is the process of managing a purchase from the moment a business identifies a need until the supplier is fully paid.","og_url":"https:\/\/www.hashmicro.com\/my\/blog\/procure-to-pay-process\/","og_site_name":"HashMicro Malaysia","article_published_time":"2026-04-24T06:33:18+00:00","article_modified_time":"2026-05-29T08:35:19+00:00","og_image":[{"width":800,"height":400,"url":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/Procure-to-Pay-P2P-The-Ultimate-2026-Strategic-Guide.webp","type":"image\/webp"}],"author":"Zulkarnain bin Idris","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Zulkarnain bin Idris","Est. reading time":"12 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hashmicro.com\/my\/blog\/procure-to-pay-process\/#article","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/procure-to-pay-process\/"},"author":{"name":"Zulkarnain bin Idris","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/f6667e0b454a9938c0688e22064ff64c"},"headline":"Procure to Pay (P2P) Malaysia: Complete Guide (2026)","datePublished":"2026-04-24T06:33:18+00:00","dateModified":"2026-05-29T08:35:19+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/procure-to-pay-process\/"},"wordCount":2397,"commentCount":0,"publisher":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/#organization"},"image":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/procure-to-pay-process\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/Procure-to-Pay-P2P-The-Ultimate-2026-Strategic-Guide.webp","articleSection":["Procurement"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.hashmicro.com\/my\/blog\/procure-to-pay-process\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/my\/blog\/procure-to-pay-process\/","url":"https:\/\/www.hashmicro.com\/my\/blog\/procure-to-pay-process\/","name":"Procure to Pay (P2P) Malaysia: Complete Guide (2026)","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/procure-to-pay-process\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/procure-to-pay-process\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/Procure-to-Pay-P2P-The-Ultimate-2026-Strategic-Guide.webp","datePublished":"2026-04-24T06:33:18+00:00","dateModified":"2026-05-29T08:35:19+00:00","description":"Procure to Pay (P2P) is the process of managing a purchase from the moment a business identifies a need until the supplier is fully paid.","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/procure-to-pay-process\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/my\/blog\/procure-to-pay-process\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/my\/blog\/procure-to-pay-process\/#primaryimage","url":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/Procure-to-Pay-P2P-The-Ultimate-2026-Strategic-Guide.webp","contentUrl":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/04\/Procure-to-Pay-P2P-The-Ultimate-2026-Strategic-Guide.webp","width":800,"height":400,"caption":"Procure to Pay (P2P) The Ultimate 2026 Strategic Guide"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/my\/blog\/procure-to-pay-process\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/my\/blog\/"},{"@type":"ListItem","position":2,"name":"Procure to Pay (P2P) Malaysia: Complete Guide (2026)"}]},{"@type":"WebSite","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#website","url":"https:\/\/www.hashmicro.com\/my\/blog\/","name":"HashMicro Malaysia","description":"","publisher":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.hashmicro.com\/my\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#organization","name":"HashMicro Malaysia","url":"https:\/\/www.hashmicro.com\/my\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/09\/logo.webp","contentUrl":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/09\/logo.webp","width":422,"height":255,"caption":"HashMicro Malaysia"},"image":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/f6667e0b454a9938c0688e22064ff64c","name":"Zulkarnain bin Idris","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-Zulkarnain-bin-Idris-BG-Tangga-1080x1080-1-96x96.webp","contentUrl":"http:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/10\/cropped-Zulkarnain-bin-Idris-BG-Tangga-1080x1080-1-96x96.webp","caption":"Zulkarnain bin Idris"},"description":"Zulkarnain bin Idris focuses on writing articles tailored to various industries, including manufacturing, distribution, and construction. He ensures each piece addresses industry-specific challenges and trends, helping readers understand how technology can transform their operations. By staying updated on market shifts, he develops fresh, relevant content that resonates with professionals in diverse sectors.","url":"https:\/\/www.hashmicro.com\/my\/blog\/author\/zulkarnain-bin-idris\/"}]}},"order_j":"","_links":{"self":[{"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/posts\/18852","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\/38"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/comments?post=18852"}],"version-history":[{"count":13,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/posts\/18852\/revisions"}],"predecessor-version":[{"id":19627,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/posts\/18852\/revisions\/19627"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/media\/18886"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/media?parent=18852"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/categories?post=18852"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/tags?post=18852"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}