{"id":62149,"date":"2024-09-02T02:51:06","date_gmt":"2024-09-02T02:51:06","guid":{"rendered":"https:\/\/www.hashmicro.com\/blog\/?p=62149"},"modified":"2025-03-14T08:47:26","modified_gmt":"2025-03-14T08:47:26","slug":"source-to-pay","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/blog\/source-to-pay\/","title":{"rendered":"Source-to-Pay (S2P): Definition, Benefits, and Step-by-Steps"},"content":{"rendered":"<p>Many businesses struggle with inefficiencies in their Source-to-Pay processes, especially when dealing with manual, time-consuming tasks. These inefficiencies can lead to higher costs and missed opportunities for improvement.<\/p>\n<p>To tackle this, companies are turning to automation. In fact, 88% of order placement and receipt tasks in Source-to-Pay can be automated, <a href=\"https:\/\/www.mckinsey.com\/capabilities\/operations\/our-insights\/a-road-map-for-digitizing-source-to-pay\" target=\"_blank\" rel=\"noopener\">reducing manual effort<\/a> and errors. Payment processing is even more promising, with 93% of tasks ready for automation, streamlining workflows and minimizing delays.<\/p>\n<p>Automating source-to-pay not only cuts costs but also unlocks potential in strategic areas. For instance, 47% of vendor selection and negotiation tasks can be automated, allowing companies to improve supplier management and move closer to a fully digitized procurement process.<\/p>\n<table style=\"border-collapse: collapse; background-color: #fffacd; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); border-radius: 25px 25px 25px 25px;\" width=\"100%\">\n<tbody>\n<tr>\n<td style=\"padding: 15px; border: none;\">\n<h3 style=\"margin-bottom: 10px;\"><span style=\"background-color: #990000; color: #ffffff; padding: 5px;\"><b>Key Takeaways<\/b><\/span><\/h3>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\">Automating Source-to-Pay (S2P) can significantly reduce manual tasks, cut costs, and improve efficiency across procurement processes.<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\">Key benefits of S2P automation include better visibility into procurement, faster contract signings, enhanced compliance, and improved collaboration with suppliers.<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\">Managing supplier risk is essential, and automation helps track performance, ensure compliance, and streamline payment processes.<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\">HashMicro&#8217;s <a href=\"https:\/\/www.hashmicro.com\/procurement-and-purchasing-management-system\">Procurement Management Software<\/a> offers a comprehensive, automated solution to optimize procurement activities and reduce manual effort.<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span data-sheets-root=\"1\"><a href=\"https:\/\/www.hashmicro.com\/free-product-tour\/?medium=free-product-tour\" target=\"_blank\"><img decoding=\"async\" loading=\"lazy\" width=\"712\" src=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/11\/Free-Product-Tour-resized.webp\" alt=\"Free Demo\"><\/a><!-- <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\">Table of Content<\/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<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\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<!-- 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\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\r\n\r\n\r\n\t\r\n\/\/ \tmake the heading at the center of the viewport\r\n\/\/ \tdocument.addEventListener('DOMContentLoaded', function() {\r\n\/\/     \/\/ Add click event listener to all links in the TOC list\r\n\/\/     document.querySelectorAll('#toc-list a').forEach(anchor => {\r\n\/\/         anchor.addEventListener('click', function (e) {\r\n\/\/             e.preventDefault(); \/\/ Prevent the default behavior of jumping to the anchor\r\n\/\/ \/\/ \t\t\tconsole.log(\"prevent default\");\r\n\/\/             const targetId = this.getAttribute('href').substring(1); \/\/ Get the ID of the target element\r\n\/\/             const targetElement = document.getElementById(targetId); \/\/ Get the target element\r\n\r\n\/\/             if (targetElement) {\r\n\/\/                 const headerHeight = document.querySelector('#toc .header').offsetHeight; \/\/ Get the height of the fixed header\r\n\/\/                 const windowHeight = window.innerHeight; \/\/ Get the height of the viewport\r\n\/\/                 const targetOffset = targetElement.offsetTop; \/\/ Get the top offset of the target element\r\n\/\/                 const scrollTo = targetOffset + (windowHeight \/ 2) + (headerHeight); \/\/ Calculate the scroll position to center the target element\r\n\r\n\/\/                 \/\/ Scroll to the calculated position smoothly\r\n\/\/                 window.scrollTo({\r\n\/\/                     top: scrollTo,\r\n\/\/                     behavior: 'smooth'\r\n\/\/                 });\r\n\/\/             }\r\n\/\/         });\r\n\/\/     });\r\n\/\/ });\r\n<\/script>\r\n\r\n<!-- START script lama -->\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<\/script> -->\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\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']; \/\/ 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\nToC List for desktop side bar, diganti jadi inject by php, di code snippet \"Sidebar Accordion\"\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;} \/\/ Kalau Key Takeaways, jangan dimasukin\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\tDapatkan elemen ul dengan id 'list_toc_float'\r\nconst ulFloat = document.getElementById('list_toc');\r\nconst ulJourney = document.getElementById('list_journey');\r\n\r\nDapatkan 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\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<\/span><\/p>\n<h2><b>What is Source-to-Pay?<\/b><\/h2>\n<p><b>Source-to-Pay (S2P)<\/b> is a comprehensive procurement process that encompasses all activities from sourcing goods and services to completing supplier payments. It begins with analyzing expenditures, identifying procurement needs, and selecting appropriate suppliers.<\/p>\n<p>The next process is sourcing events, negotiating contracts, and receiving goods or services. The final steps include processing supplier invoices and executing payments. It should be noted that effective supplier management and risk assessment are crucial throughout the S2P process.<\/p>\n<p>The objective of source-to-pay is to optimize procurement operations, reduce costs, and ensure timely and cost-effective acquisition of goods and services while fostering strong supplier relationships.<\/p>\n<h2><b>What\u2019s the Difference between Source-to-Pay and Procure-to-Pay?<\/b><\/h2>\n<p>Source-to-Pay (S2P) and <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/procure-to-pay-p2p\/\">Procure-to-Pay<\/a> (P2P) are closely related, with P2P being a subset of S2P. While S2P covers the full range of procurement activities\u2014both strategic and operational\u2014P2P focuses on the operational aspects.<\/p>\n<p>S2P includes everything from supplier selection and negotiation to contracting, spend analysis, and supplier lifecycle management. It integrates these processes to streamline procurement strategies, leading to cost savings, improved efficiency, and better supplier relationships.<\/p>\n<p>On the other hand, P2P handles the transactional side of procurement. It ensures efficient procurement and payment processes, typically following five key steps: request, requisition, purchase order, receipt, and invoice payment, along with their related approval workflows.<\/p>\n<p>In short, P2P is part of the broader S2P process, focusing specifically on execution and payment.<\/p>\n<h2><b>Benefits of Source-to-Pay Automation for Business<\/b><\/h2>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-large wp-image-62150\" src=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/source-to-pay-cycle-1024x576.webp\" alt=\"source to pay cycle\" width=\"696\" height=\"392\" srcset=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/source-to-pay-cycle-1024x576.webp 1024w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/source-to-pay-cycle-300x169.webp 300w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/source-to-pay-cycle-768x432.webp 768w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/source-to-pay-cycle-747x420.webp 747w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/source-to-pay-cycle-150x84.webp 150w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/source-to-pay-cycle-696x392.webp 696w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/source-to-pay-cycle-1068x601.webp 1068w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/source-to-pay-cycle.webp 1200w\" sizes=\"auto, (max-width: 696px) 100vw, 696px\" \/><\/p>\n<p>Automating Source-to-Pay with <a href=\"https:\/\/www.hashmicro.com\/blog\/procurement-software\/\">procurement software<\/a> can greatly simplify procurement and cut costs. By making each step\u2014from choosing suppliers to making payments\u2014more efficient, businesses can run smoother, reduce mistakes, and improve performance.<\/p>\n<p>Here are some key benefits that come with automating your S2P process:<\/p>\n<h3><b>1. Increased visibility into procurement<\/b><\/h3>\n<p>Automating Source-to-Pay provides a clear view of all procurement activities. With instant access to spending data and supplier performance, you can quickly spot savings opportunities.<\/p>\n<p>This level of <a href=\"https:\/\/www.mckinsey.com\/capabilities\/operations\/our-insights\/a-road-map-for-digitizing-source-to-pay\" target=\"_blank\" rel=\"noopener\">increased visibility<\/a> can save businesses 3-4% of their total spend by highlighting inefficiencies, helping to cut unnecessary transaction costs, and making smarter, more cost-effective decisions. For a company spending $2 billion annually, this could translate to $70 million in savings.<\/p>\n<p>If you want to improve visibility into your procurement processes, you can use procurement management software. Prominent features like Tracking Purchase Orders can monitor order status, be it request or delivery, in real-time.<\/p>\n<p>Furthermore, procurement software has a myriad of other features to bring the entire procurement process into order. If you\u2019re interested in knowing more, you can try out the <a href=\"https:\/\/www.hashmicro.com\/free-product-tour\/\">free demo<\/a> for the software.<\/p>\n<h3><b>2. Faster signed contracts<\/b><\/h3>\n<p>By bringing all procurement processes into one platform, automation speeds up everything from approvals to contract signing. No more back-and-forth emails or delays in communication\u2014just a smooth path to closing deals faster and more efficiently.<\/p>\n<h3><b>3. Enhanced compliance<\/b><\/h3>\n<p>Automation ensures that every step of the procurement process follows set rules and regulations. It keeps track of contract terms and alerts you to any compliance risks, minimizing the chance of errors and protecting your business from costly penalties.<\/p>\n<h3><b>4. Improved collaboration with trading partners<\/b><\/h3>\n<p>With automated <a href=\"https:\/\/www.hashmicro.com\/blog\/erp-system-procurement\/\">procurement systems<\/a>, buyers and suppliers can easily share information, which leads to better communication and trust.<\/p>\n<p>This collaboration leads to more efficient problem-solving and quicker responses to supply chain disruptions, which is especially crucial for avoiding the 3-4% waste in external spend due to inefficiencies.<\/p>\n<h3><b>5. Better pricing and forecasting<\/b><\/h3>\n<p>Data from automation helps you negotiate better deals with suppliers by giving you clear insights into pricing trends and supplier performance. It also improves your forecasting accuracy, making inventory management easier and helping avoid stock shortages or excess.<\/p>\n<h2><b>8 Steps of Source-to-Pay<\/b><\/h2>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-large wp-image-62152\" src=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/source-to-pay-solutions-1024x576.webp\" alt=\"source-to-pay solutions\" width=\"696\" height=\"392\" srcset=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/source-to-pay-solutions-1024x576.webp 1024w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/source-to-pay-solutions-300x169.webp 300w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/source-to-pay-solutions-768x432.webp 768w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/source-to-pay-solutions-747x420.webp 747w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/source-to-pay-solutions-150x84.webp 150w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/source-to-pay-solutions-696x392.webp 696w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/source-to-pay-solutions-1068x601.webp 1068w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/source-to-pay-solutions.webp 1200w\" sizes=\"auto, (max-width: 696px) 100vw, 696px\" \/><\/p>\n<p>Having a repeatable process is crucial for managing procurement effectively. That\u2019s why each S2P project follows a series of steps to ensure the right goods are procured at the best price\u2014and delivered on time. While internal processes may differ, a typical S2P cycle involves the following:<\/p>\n<h3><b>1. Identifying the need<\/b><\/h3>\n<p>A stakeholder recognizes the requirement for a particular product or material. As a first step, they outline the project\u2019s requirements, including timelines or specific details needed for success. In some organizations, this may involve completing a requisition form to initiate the sourcing process.<\/p>\n<h3><b>2. Creating a vendor shortlist<\/b><\/h3>\n<p>In line with strategic sourcing practices, the stakeholder identifies potential suppliers based on the outlined criteria. For S2P, these are usually new vendors under evaluation. In contrast, P2P may involve existing vendors from a preferred list.<\/p>\n<h3><b>3. Issuing RFPs or conducting e-auctions<\/b><\/h3>\n<p>Once a shortlist is made, the process moves forward with requests for proposals (RFP), requests for quotes (RFQ), or e-auctions.<\/p>\n<h3><b>4. Negotiating the contract<\/b><\/h3>\n<p>After identifying the best supplier through the RFP process, the buyer negotiates contract terms, conducting due diligence to agree on pricing, payment, and delivery arrangements.<\/p>\n<h3><b>5. Submitting the purchase order<\/b><\/h3>\n<p>After finalizing the terms, the buyer sends a formal purchase order. The supplier then fulfills the order as agreed and delivers the goods for inspection and acceptance.<\/p>\n<h3><b>6. Delivery and acceptance of goods<\/b><\/h3>\n<p>Upon receiving the goods, the buyer inspects the delivery for any issues regarding compliance or quality. If everything meets the standards, the goods are accepted, and payment arrangements are made.<\/p>\n<h3><b>7. Payment<\/b><\/h3>\n<p>Once the goods are accepted, payment is made according to the agreed terms. The process includes a &#8220;three-way match,&#8221; ensuring the purchase order, invoice, and goods receipt align, which helps prevent errors or fraud.<\/p>\n<p>If your procurement system supports automation, this matching process and payment can be handled within a single platform, eliminating manual work.<\/p>\n<h3><b>8. Vendor evaluation\u00a0<\/b><\/h3>\n<p>Although not directly part of the payment process, a post-purchase evaluation is essential for strategic sourcing. This review should assess how well the supplier met pricing, compliance, and delivery standards. It will also provide key insights for future supplier performance management and influence their potential inclusion on future preferred vendor lists.<\/p>\n<h2><b>Key Points to Consider for Managing Supplier Risk<\/b><\/h2>\n<p>Effectively managing supplier risk is essential for ensuring smooth operations and avoiding costly disruptions. Here are some important factors to keep in mind when managing supplier risk:<\/p>\n<ol>\n<li aria-level=\"1\"><b>Supplier Risk Management:<\/b> Identify and classify potential risks associated with suppliers, including financial instability, geopolitical issues, natural disasters, or quality control concerns.<\/li>\n<li aria-level=\"1\"><b>Supplier Evaluation:<\/b> Evaluate suppliers based on their risk profile, considering factors such as financial stability, reputation, past performance, and geographical location.<\/li>\n<li aria-level=\"1\"><b>Supplier Collaboration:<\/b> Work closely with suppliers to address risks, enhance performance, and develop joint solutions, including opportunities for innovation.<\/li>\n<li aria-level=\"1\"><b>Supplier Diversification:<\/b> Diversify your supplier network to reduce reliance on a single supplier and minimize the impact of potential disruptions.<\/li>\n<li aria-level=\"1\"><b>Contractual Protections:<\/b> Structure contracts with risk mitigation in mind, incorporating clauses for penalties, dispute resolution, and contingency plans.<\/li>\n<li aria-level=\"1\"><b>Supply Chain Visibility:<\/b> Enhance visibility throughout the supply chain to better track product flow and identify potential risks early.<\/li>\n<li aria-level=\"1\"><b>Data and Analytics:<\/b> Leverage data and analytics to gain deeper insights into supplier performance, dependencies, and risks, enabling more informed decision-making.<\/li>\n<\/ol>\n<h2><b>Automate Your Source-to-Pay with HashMicro Procurement Software<\/b><\/h2>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-62153\" src=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/E-Procurement.webp\" alt=\"procurement software\" width=\"782\" height=\"479\" srcset=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/E-Procurement.webp 782w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/E-Procurement-300x184.webp 300w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/E-Procurement-768x470.webp 768w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/E-Procurement-686x420.webp 686w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/E-Procurement-150x92.webp 150w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/E-Procurement-696x426.webp 696w\" sizes=\"auto, (max-width: 782px) 100vw, 782px\" \/><\/p>\n<p>HashMicro offers an all-in-one solution for businesses looking to optimize their procurement process. Imagine an automated system that handles everything from supplier selection to payment processing\u2014effortless, efficient, and accurate. It\u2019s a real game-changer for your procurement operations, right?<\/p>\n<p>HashMicro provides all the tools you need to take full control of your procurement activities:<\/p>\n<ul>\n<li aria-level=\"1\"><b>E-Procurement for online tenders and RFQ \/ ITQ<\/b> \u2013 This is directly tied to the sourcing phase of S2P, where online tenders and requests for quotes are crucial for supplier selection and price negotiation.<\/li>\n<li aria-level=\"1\"><b>Vendor portal<\/b> \u2013 The vendor portal facilitates digital procurement and negotiation between the company and suppliers, streamlining communication and ensuring transparency, which is essential for managing the supplier relationship throughout the S2P cycle.<\/li>\n<li aria-level=\"1\"><b>Automatic Vendor Rating (Punctuality, Pricing Index, Completeness)<\/b> \u2013 Automatically evaluating vendor performance based on key criteria such as punctuality and pricing aligns with the supplier evaluation and management stages of S2P.<\/li>\n<li aria-level=\"1\"><b>Cost Savings tracking and reporting<\/b> \u2013 Tracking cost savings is crucial for measuring the effectiveness of procurement activities and achieving S2P goals like reducing costs and improving operational efficiency.<\/li>\n<li aria-level=\"1\"><b>Budget tracking &amp; limit per purchase<\/b> \u2013 Managing procurement costs and ensuring that purchases stay within budget are critical for the financial and operational efficiency goals of the S2P process.<\/li>\n<\/ul>\n<p>With HashMicro\u2019s <a href=\"https:\/\/www.hashmicro.com\/procurement-and-purchasing-management-system\">procurement management software<\/a>, you can streamline every step of the Source-to-Pay process. Supplier onboarding, contract management, and invoice processing are all automated, ensuring everything runs smoothly without manual effort.<\/p>\n<p>No more scrambling to meet deadlines or dealing with lost paperwork\u2014everything is done in real time, so you&#8217;re always ahead of the curve.<\/p>\n<p>This system doesn\u2019t just improve procurement efficiency; it saves your business significant time and money. By reducing manual tasks and minimizing errors, your procurement process becomes more productive and cost-effective. It\u2019s really a win-win!<\/p>\n<h2><b>Conclusion<\/b><\/h2>\n<p>A strong Source-to-Pay (S2P) system is essential for businesses to keep their procurement operations efficient and cost-effective. S2P automation streamlines procurement, reduces manual errors, improves supplier collaboration, and enhances overall process visibility.<\/p>\n<p>By automating key steps and integrating with other business systems, procurement management becomes more reliable, transparent, and easier to control.<\/p>\n<p>If you&#8217;re looking to elevate your procurement process, consider HashMicro&#8217;s <a href=\"https:\/\/www.hashmicro.com\/procurement-and-purchasing-management-system\">Procurement Software<\/a>. HashMicro offers a comprehensive solution tailored to businesses&#8217; procurement needs. With features like automated supplier management, contract tracking, and real-time spend analysis, HashMicro\u2019s system helps boost efficiency and control costs.<\/p>\n<p>See how HashMicro\u2019s procurement software can transform your business with a <a href=\"https:\/\/www.hashmicro.com\/free-product-tour\/\">free demo<\/a> today!<\/p>\n<p><span data-sheets-root=\"1\"><a href=\"https:\/\/www.hashmicro.com\/procurement-and-purchasing-management-system?medium=moneysite-banner\" target=\"_blank\"><img decoding=\"async\" loading=\"lazy\" width=\"712\" src=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/06\/Procurement.webp\" alt=\"Procurement\"><\/a><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Many businesses struggle with inefficiencies in their Source-to-Pay processes, especially when dealing with manual, time-consuming tasks. These inefficiencies can lead to higher costs and missed opportunities for improvement. To tackle this, companies are turning to automation. In fact, 88% of order placement and receipt tasks in Source-to-Pay can be automated, reducing manual effort and errors. [&hellip;]<\/p>\n","protected":false},"author":206,"featured_media":62151,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1128],"tags":[],"class_list":{"0":"post-62149","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-procurement"},"acf":{"content_type_custom_acf":false,"box_1":{"title":"","description":""},"box_2":{"title":"","description":""},"box_3":{"title":"","description":""},"post_reviewer":null},"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>Source-to-Pay (S2P): Definition, Benefits, and Step-by-Steps<\/title>\n<meta name=\"description\" content=\"Source-to-pay (S2P) is the process covering all procurement activities, from identifying a need to paying the supplier.\" \/>\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\/blog\/source-to-pay\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Source-to-Pay (S2P): Definition, Benefits, and Step-by-Steps\" \/>\n<meta property=\"og:description\" content=\"Source-to-pay (S2P) is the process covering all procurement activities, from identifying a need to paying the supplier.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/blog\/source-to-pay\/\" \/>\n<meta property=\"og:site_name\" content=\"BusinessTech\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/web.facebook.com\/hashmicro\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-09-02T02:51:06+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-03-14T08:47:26+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/source-to-pay.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"675\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Nur Fi&#039;llia Nugrahani\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@hashmicro\" \/>\n<meta name=\"twitter:site\" content=\"@hashmicro\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Nur Fi&#039;llia Nugrahani\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/source-to-pay\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/source-to-pay\/\"},\"author\":{\"name\":\"Nur Fi'llia Nugrahani\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#\/schema\/person\/82334ae4c96d5887773cadf8bbe9e2fc\"},\"headline\":\"Source-to-Pay (S2P): Definition, Benefits, and Step-by-Steps\",\"datePublished\":\"2024-09-02T02:51:06+00:00\",\"dateModified\":\"2025-03-14T08:47:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/source-to-pay\/\"},\"wordCount\":1779,\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/source-to-pay\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/source-to-pay.webp\",\"articleSection\":[\"Procurement\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/source-to-pay\/\",\"url\":\"https:\/\/www.hashmicro.com\/blog\/source-to-pay\/\",\"name\":\"Source-to-Pay (S2P): Definition, Benefits, and Step-by-Steps\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/source-to-pay\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/source-to-pay\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/source-to-pay.webp\",\"datePublished\":\"2024-09-02T02:51:06+00:00\",\"dateModified\":\"2025-03-14T08:47:26+00:00\",\"description\":\"Source-to-pay (S2P) is the process covering all procurement activities, from identifying a need to paying the supplier.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/source-to-pay\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.hashmicro.com\/blog\/source-to-pay\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/source-to-pay\/#primaryimage\",\"url\":\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/source-to-pay.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/source-to-pay.webp\",\"width\":1200,\"height\":675,\"caption\":\"source to pay\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/source-to-pay\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.hashmicro.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Source-to-Pay (S2P): Definition, Benefits, and Step-by-Steps\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#website\",\"url\":\"https:\/\/www.hashmicro.com\/blog\/\",\"name\":\"BusinessTech\",\"description\":\"Business Management Blog\",\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.hashmicro.com\/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\/blog\/#organization\",\"name\":\"HashMicro\",\"url\":\"https:\/\/www.hashmicro.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2016\/02\/bt_logo-1.png\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2016\/02\/bt_logo-1.png\",\"width\":334,\"height\":51,\"caption\":\"HashMicro\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/web.facebook.com\/hashmicro\/\",\"https:\/\/x.com\/hashmicro\",\"https:\/\/www.linkedin.com\/company\/hashmicro\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#\/schema\/person\/82334ae4c96d5887773cadf8bbe9e2fc\",\"name\":\"Nur Fi'llia Nugrahani\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/08\/cropped-foto-profil-nuri-96x96.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/08\/cropped-foto-profil-nuri-96x96.webp\",\"caption\":\"Nur Fi'llia Nugrahani\"},\"description\":\"A content writer specializing in crafting insightful and thought-provoking articles about technology. With a passion for making complex topics accessible, she delivers engaging and informative content for a wide audience.\",\"url\":\"https:\/\/www.hashmicro.com\/blog\/author\/fillia-nugrahanihashmicro-com-sg\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Source-to-Pay (S2P): Definition, Benefits, and Step-by-Steps","description":"Source-to-pay (S2P) is the process covering all procurement activities, from identifying a need to paying the supplier.","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\/blog\/source-to-pay\/","og_locale":"en_US","og_type":"article","og_title":"Source-to-Pay (S2P): Definition, Benefits, and Step-by-Steps","og_description":"Source-to-pay (S2P) is the process covering all procurement activities, from identifying a need to paying the supplier.","og_url":"https:\/\/www.hashmicro.com\/blog\/source-to-pay\/","og_site_name":"BusinessTech","article_publisher":"https:\/\/web.facebook.com\/hashmicro\/","article_published_time":"2024-09-02T02:51:06+00:00","article_modified_time":"2025-03-14T08:47:26+00:00","og_image":[{"width":1200,"height":675,"url":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/source-to-pay.webp","type":"image\/webp"}],"author":"Nur Fi'llia Nugrahani","twitter_card":"summary_large_image","twitter_creator":"@hashmicro","twitter_site":"@hashmicro","twitter_misc":{"Written by":"Nur Fi'llia Nugrahani","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hashmicro.com\/blog\/source-to-pay\/#article","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/blog\/source-to-pay\/"},"author":{"name":"Nur Fi'llia Nugrahani","@id":"https:\/\/www.hashmicro.com\/blog\/#\/schema\/person\/82334ae4c96d5887773cadf8bbe9e2fc"},"headline":"Source-to-Pay (S2P): Definition, Benefits, and Step-by-Steps","datePublished":"2024-09-02T02:51:06+00:00","dateModified":"2025-03-14T08:47:26+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hashmicro.com\/blog\/source-to-pay\/"},"wordCount":1779,"publisher":{"@id":"https:\/\/www.hashmicro.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.hashmicro.com\/blog\/source-to-pay\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/source-to-pay.webp","articleSection":["Procurement"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/blog\/source-to-pay\/","url":"https:\/\/www.hashmicro.com\/blog\/source-to-pay\/","name":"Source-to-Pay (S2P): Definition, Benefits, and Step-by-Steps","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/blog\/source-to-pay\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/blog\/source-to-pay\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/source-to-pay.webp","datePublished":"2024-09-02T02:51:06+00:00","dateModified":"2025-03-14T08:47:26+00:00","description":"Source-to-pay (S2P) is the process covering all procurement activities, from identifying a need to paying the supplier.","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/blog\/source-to-pay\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/blog\/source-to-pay\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/blog\/source-to-pay\/#primaryimage","url":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/source-to-pay.webp","contentUrl":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/09\/source-to-pay.webp","width":1200,"height":675,"caption":"source to pay"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/blog\/source-to-pay\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Source-to-Pay (S2P): Definition, Benefits, and Step-by-Steps"}]},{"@type":"WebSite","@id":"https:\/\/www.hashmicro.com\/blog\/#website","url":"https:\/\/www.hashmicro.com\/blog\/","name":"BusinessTech","description":"Business Management Blog","publisher":{"@id":"https:\/\/www.hashmicro.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.hashmicro.com\/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\/blog\/#organization","name":"HashMicro","url":"https:\/\/www.hashmicro.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2016\/02\/bt_logo-1.png","contentUrl":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2016\/02\/bt_logo-1.png","width":334,"height":51,"caption":"HashMicro"},"image":{"@id":"https:\/\/www.hashmicro.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/web.facebook.com\/hashmicro\/","https:\/\/x.com\/hashmicro","https:\/\/www.linkedin.com\/company\/hashmicro"]},{"@type":"Person","@id":"https:\/\/www.hashmicro.com\/blog\/#\/schema\/person\/82334ae4c96d5887773cadf8bbe9e2fc","name":"Nur Fi'llia Nugrahani","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/08\/cropped-foto-profil-nuri-96x96.webp","contentUrl":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/08\/cropped-foto-profil-nuri-96x96.webp","caption":"Nur Fi'llia Nugrahani"},"description":"A content writer specializing in crafting insightful and thought-provoking articles about technology. With a passion for making complex topics accessible, she delivers engaging and informative content for a wide audience.","url":"https:\/\/www.hashmicro.com\/blog\/author\/fillia-nugrahanihashmicro-com-sg\/"}]}},"order_j":"","_links":{"self":[{"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/posts\/62149","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/users\/206"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/comments?post=62149"}],"version-history":[{"count":4,"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/posts\/62149\/revisions"}],"predecessor-version":[{"id":69872,"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/posts\/62149\/revisions\/69872"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/media\/62151"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/media?parent=62149"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/categories?post=62149"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/tags?post=62149"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}