{"id":787,"date":"2026-02-02T12:06:24","date_gmt":"2026-02-02T01:06:24","guid":{"rendered":"https:\/\/www.hashmicro.com\/au\/blog\/?p=787"},"modified":"2026-04-24T16:13:24","modified_gmt":"2026-04-24T06:13:24","slug":"purchase-order","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/au\/blog\/purchase-order\/","title":{"rendered":"What is a Purchase Order &#038; Why Should Your Business Use It?"},"content":{"rendered":"<p data-start=\"62\" data-end=\"305\">Keeping finances organised and processes efficient is essential for any company. A purchase order (PO) supports this by formally requesting goods or services from a supplier. It outlines key details such as quantity, price, and delivery terms.<\/p>\n<p data-start=\"307\" data-end=\"561\">Although it may look like simple paperwork, a purchase order plays a critical role. It helps control spending, maintain accurate records, and keep communication clear with suppliers. Without it, companies risk unauthorised purchases and inventory issues.<\/p>\n<p data-start=\"563\" data-end=\"805\">Understanding purchase orders goes beyond filling out a form. It covers the full procurement flow, from identifying needs to receiving goods and processing payments. This guide explains how the purchase order process works and why it matters.<\/p>\n<p data-start=\"633\" data-end=\"928\" data-is-last-node=\"\" data-is-only-node=\"\"><!-- <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<\/p>\n<style>\r\n\t.takeaways-container {\r\n\t\tmargin: 20px 0;\r\n\t\tfont-family: sans-serif;\r\n\t}\r\n\t.box-content {\r\n\t\tbackground-color: #fffacd;\r\n\t\tbox-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);\r\n\t\tborder-radius: 25px;\r\n\t\tpadding: 25px;\r\n\t}\r\n\t.title {\r\n\t\tmargin-bottom: 20px;\r\n\t}\r\n\t.title p {\r\n\t\tdisplay: inline-block;\r\n\t\tbackground-color: #8A0E19;\r\n\t\tcolor: #ffffff;\r\n\t\tpadding: 8px 15px;\r\n\t\tborder-radius: 8px;\r\n\t\tfont-size: 22px;\r\n\t\tfont-weight: bold;\r\n\t\tmargin: 0;\r\n\t}\r\n\t.item {\r\n\t\tdisplay: flex;\r\n\t\talign-items: flex-start;\r\n\t\tmargin-bottom: 12px;\r\n\t}\r\n\t.item .circle {\r\n\t\twidth: 8px;\r\n\t\theight: 8px;\r\n\t\tbackground-color: #000000;\r\n\t\tborder-radius: 50%;\r\n\t\tmargin-right: 12px;\r\n\t\tflex-shrink: 0;\r\n\t\tmargin-top: 8px;\r\n\t}\r\n\t.item p {\r\n\t\tmargin: 0;\r\n\t\tfont-size: 16px;\r\n\t\tline-height: 1.6;\r\n\t}\r\n\t.item p a {\r\n\t\tcolor: #8A0E19;\r\n\t\tfont-weight: normal;\r\n\t\ttext-decoration: none;\r\n\t}\r\n\t.item p a:hover {\r\n\t\ttext-decoration: underline;\r\n\t}\r\n\t.button-wrapper {\r\n\t\tmargin-top: 25px;\r\n\t}\r\n\t.submit-button {\r\n\t\tbackground-color: #8a0e19;\r\n\t\tcolor: #fff !important;\r\n\t\ttransition: all .3s ease;\r\n\t\tpadding: 12px 28px;\r\n\t\tdisplay: inline-block;\r\n\t\tborder-radius: 12px;\r\n\t\tfont-size: 16px;\r\n\t\tfont-weight: bold;\r\n\t\ttext-decoration: none;\r\n\t}\r\n\t.submit-button:hover {\r\n\t\tbackground-color: #991b26;\r\n\t}\r\n\t@media (max-width: 767px) {\r\n\t\t.takeaways-container {\r\n\t\t\theight: auto;\r\n\t\t\tpadding: 0;\r\n\t\t}\r\n\t\t.box-content {\r\n\t\t\tpadding: 24px;\r\n\t\t}\r\n\t\t.content,\r\n\t\t.main-content,\r\n\t\t.list-item {\r\n\t\t\twidth: 100%;\r\n\t\t}\r\n\t}\r\n<\/style>\r\n\r\n<div class=\"takeaways-container\">\r\n\t<div class=\"box-content\">\r\n\t\t<div class=\"content\">\r\n\t\t\t<div class=\"title\">\r\n\t\t\t\t<p>Key Takeaways<\/p>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"main-content\">\r\n\t\t\t\t<div class=\"list-item\">\r\n\t\t\t\t\t<div class=\"item\">    <div class=\"circle\"><\/div>    <p><a href=\"#types-of-purchase-order\">Discover the various forms of<\/a> purchase orders and when to apply them so businesses can choose the most suitable PO type for different procurement situations and maintain better control over purchasing activities.<\/p><\/div><div class=\"item\">    <div class=\"circle\"><\/div>    <p><a href=\"#the-purchase-order-process-step-by-step\">Learn the step-by-step workflow from<\/a> requisition to payment to understand how each stage of the purchase order process helps ensure proper approvals, accurate documentation, and smooth supplier transactions.<\/p><\/div><div class=\"item\">    <div class=\"circle\"><\/div>    <p>Avoiding <a href=\"#avoiding-common-purchase-order-mistakes\">common purchase order mistakes<\/a>, such as maverick spending and vague descriptions, can help streamline operations and reduce costly errors.<\/p><\/div><div class=\"item\">    <div class=\"circle\"><\/div>    <p>An in-depth explanation of <a href=\"#purchase-order-vs-invoice-whats-the-difference\">Purchase Order vs. Invoice<\/a>, to help businesses understand the role of each document in the procurement process, from placing an order with suppliers to completing the final payment.<\/p><\/div>\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t<\/div>\r\n<\/div>\n<p><span data-sheets-root=\"1\">\r\n    <div class=\"adjustable-banner-wrap\">\r\n        <a href=\"https:\/\/www.hashmicro.com\/au\/procurement-and-purchasing-management-system?medium=moneysite-banner\" target=\"_blank\">\r\n            <img decoding=\"async\" loading=\"lazy\"\r\n                 src=\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/03\/procurement_desktop_1-scaled.webp\"\r\n                 data-desktop-src=\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/03\/procurement_desktop_1-scaled.webp\"\r\n                 data-mobile-src=\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/03\/procurement_mobile_1.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\">Need an<\/span> expert to make <span class=\"adjustable-highlight\">faster financial decisions?<\/span><\/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><\/span><\/p>\n<h2 id=\"what-is-a-purchase-order\"><strong>What Is a Purchase Order?<\/strong><\/h2>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-954\" src=\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/02\/what-is-po.webp\" alt=\"\" width=\"800\" height=\"400\" srcset=\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/02\/what-is-po.webp 800w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/02\/what-is-po-300x150.webp 300w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/02\/what-is-po-768x384.webp 768w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/02\/what-is-po-150x75.webp 150w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/02\/what-is-po-696x348.webp 696w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/p>\n<p data-start=\"812\" data-end=\"1053\">A purchase order (PO) is a formal document sent by a buyer to request goods or services. It includes details like item type, quantity, price, and delivery terms. Once accepted, it becomes a legally binding agreement that protects both sides.<\/p>\n<p data-start=\"1055\" data-end=\"1299\">More than a request, a purchase order helps control spending and track commitments. Finance teams can monitor costs before payment, while inventory teams prepare for incoming goods. As a result, companies can avoid confusion and stay organised.<\/p>\n<p data-start=\"1301\" data-end=\"1564\">Many companies now rely on a <a href=\"https:\/\/www.hashmicro.com\/au\/procurement-and-purchasing-management-system\">comprehensive purchasing system<\/a> to manage purchase orders. These systems automate approvals and track transactions in real time. Therefore, businesses can improve visibility, manage suppliers better, and maintain accurate records.<\/p>\n<h2 id=\"what-should-a-purchase-order-include\"><strong>What Should a Purchase Order Include?<\/strong><\/h2>\n<p>For a purchase order to be effective, it must include clear and complete information. Missing or unclear details can lead to delivery delays, billing mistakes, or disputes between the buyer and supplier. To avoid these issues, a standard purchase order should contain several key elements that clearly define the order and its terms.<\/p>\n<h3>1. Unique purchase order number (PO #)<\/h3>\n<p><span style=\"color: #222222; font-family: Verdana, BlinkMacSystemFont, -apple-system, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; font-size: 15px;\">This is a unique reference number used to track the purchase order. It connects the order with related documents like invoices and delivery notes. Both the buyer and supplier use this number to easily monitor the order status.<\/span><\/p>\n<h3>2. Date of issue<\/h3>\n<p>This is the date when the purchase order is created. It helps track when the order was placed and sets the timeline for delivery and payment terms.<\/p>\n<h3>3. Vendor details<\/h3>\n<p>This section includes the supplier\u2019s name, address, contact person, and tax information. Accurate vendor details ensure the order is sent to the correct supplier and that payment is processed properly.<\/p>\n<h3>4. Buyer details<\/h3>\n<p>This shows the company placing the order, including the company name, address, and department or person requesting the items. It helps the supplier know who they are dealing with and who to contact if needed.<\/p>\n<h3>5. Shipping address<\/h3>\n<p>This is the location where the goods should be delivered. It may be different from the billing address, especially for companies with multiple offices or warehouses.<\/p>\n<h3>6. Billing address<\/h3>\n<p>This is where the supplier should send the invoice for payment. It can be a physical address or a dedicated accounts payable email.<\/p>\n<h3>7. Product or service description<\/h3>\n<p>This section clearly describes the items or services being purchased. It should include specific details like product names, model numbers, or SKUs to avoid confusion.<\/p>\n<h3>8. Quantity and unit of measure<\/h3>\n<p>This specifies how many items are being ordered and how they are measured, such as per unit, box, kilogram, or pallet. Clear units prevent mistakes in delivery.<\/p>\n<h3>9. Price per unit and total amount<\/h3>\n<p>This shows the price of each item and the total cost of the order. Including these details helps prevent pricing disputes later.<\/p>\n<h3>10. Tax information<\/h3>\n<p>Taxes such as VAT, GST, or sales tax should be included if applicable. This ensures the final amount accurately reflects the total cost.<\/p>\n<h3>11. Delivery date<\/h3>\n<p>This indicates when the supplier is expected to deliver the goods or complete the service. It helps both parties plan their schedules.<\/p>\n<h3>12. Payment terms<\/h3>\n<p>Payment terms explain when the buyer must pay the supplier, such as within 30 or 60 days after the invoice is issued.<\/p>\n<h3>13. Terms and conditions<\/h3>\n<p>This section outlines the legal rules of the agreement, including policies for returns, warranties, responsibilities, and dispute resolution.<\/p>\n<style>\r\n    #custom-quote {\r\n        background-color: #f0f0f0;\r\n        padding: 20px;\r\n        border-radius: 12px;\r\n        margin: 20px;\r\n        display: flex;\r\n        flex-direction: column;\r\n    }\r\n\r\n    #custom-quote .quote-body {\r\n        display: flex;\r\n        flex-direction: row;\r\n        align-items: flex-start;\r\n        gap: 15px;\r\n        font-size: 16px;\r\n        line-height: 1.5;\r\n        font-style: italic;\r\n    }\r\n\r\n    #custom-quote .quote-icon {\r\n        width: 40px;\r\n        height: 40px;\r\n        flex-shrink: 0;\r\n    }\r\n\r\n    #custom-quote .quote-author-wrapper {\r\n        margin-top: 15px;\r\n        align-self: flex-start;\r\n        margin-left: 55px; \r\n\t\tmargin-bottom: 0px;\r\n    }\r\n\r\n    #custom-quote em {\r\n        font-family: 'Roboto Serif', serif !important;\r\n        font-size: 12px;\r\n        font-weight: bold;\r\n        font-style: normal;\r\n    }\r\n\r\n    @media screen and (max-width: 768px) {\r\n        #custom-quote {\r\n            margin: 15px 0;\r\n            padding: 15px;\r\n        }\r\n        \r\n        #custom-quote .quote-body {\r\n            gap: 12px;\r\n        }\r\n\r\n        #custom-quote .quote-author-wrapper {\r\n            margin-left: 52px;\r\n        }\r\n    }\r\n\r\n    @media screen and (max-width: 480px) {\r\n        #custom-quote {\r\n            margin: 10px 0;\r\n            padding: 12px;\r\n        }\r\n\r\n        #custom-quote .quote-body {\r\n            font-size: 14px;\r\n            gap: 10px;\r\n        }\r\n\r\n        #custom-quote .quote-icon {\r\n            width: 32px;\r\n            height: 32px;\r\n        }\r\n\r\n        #custom-quote .quote-author-wrapper {\r\n            margin-top: 10px;\r\n            margin-left: 42px;\r\n        }\r\n    }\r\n<\/style>\r\n\r\n<div id=\"custom-quote\">\r\n    <div class=\"quote-body\">\r\n        <img decoding=\"async\" src=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/12\/quote.webp\" alt=\"Quote Icon\" class=\"quote-icon\">\r\n        <div>\r\n            With clear and complete informations, purchase orders bring structure and accountability to procurement. It ensures every purchase is clear, approved, and properly documented before money is spent.        <\/div>\r\n    <\/div>\r\n    <p class=\"quote-author-wrapper\">\r\n        <em>Luke Sheridan, Head of Finance Dept.<\/em>\r\n    <\/p>\r\n<\/div>\n<h2 id=\"types-of-purchase-orders\"><strong>Types of Purchase Orders<\/strong><\/h2>\n<p data-start=\"1600\" data-end=\"1856\">Different procurement needs require different types of purchase orders. For example, buying equipment is not the same as restocking supplies or managing long-term services. Understanding each type helps companies control spending and streamline purchasing.<\/p>\n<h3 data-section-id=\"j3srey\" data-start=\"1858\" data-end=\"1894\">1. Standard purchase order (SPO)<\/h3>\n<p data-start=\"1896\" data-end=\"2073\">A standard purchase order is the most common type. Companies use it when all details like quantity, price, and delivery date are clear. It suits one-off or occasional purchases.<\/p>\n<p data-start=\"2075\" data-end=\"2227\">For example, an IT team buying laptops would issue a standard PO. Everything is fixed from the start, so suppliers can fulfil the order without changes.<\/p>\n<h3 data-section-id=\"17ix225\" data-start=\"2229\" data-end=\"2264\">2. Planned purchase order (PPO)<\/h3>\n<p data-start=\"2266\" data-end=\"2471\">A planned purchase order suits situations where total quantity is known but delivery timing is flexible. Companies commit to a volume but schedule deliveries later. This helps manage storage and cash flow.<\/p>\n<p data-start=\"2473\" data-end=\"2631\">For example, a manufacturer may order materials for the year but receive them in smaller batches. Therefore, they avoid overstock while keeping supply steady.<\/p>\n<h3 data-section-id=\"1k31oih\" data-start=\"2633\" data-end=\"2668\">3. Blanket purchase order (BPO)<\/h3>\n<p data-start=\"2670\" data-end=\"2863\">A blanket purchase order is used for recurring purchases with uncertain quantities. It usually runs for a set period and includes a spending limit. This reduces the need to create multiple POs.<\/p>\n<p data-start=\"2865\" data-end=\"2999\">For example, companies often use it for office supplies or cleaning materials. Employees can order as needed under the same agreement.<\/p>\n<h3 data-section-id=\"1wgcy3a\" data-start=\"3001\" data-end=\"3037\">4. Contract purchase order (CPO)<\/h3>\n<p data-start=\"3039\" data-end=\"3236\">A contract purchase order sets long-term terms between a buyer and supplier. It defines conditions but may not include specific items upfront. Orders are then issued under the contract when needed.<\/p>\n<p data-start=\"3238\" data-end=\"3358\">This type works well for ongoing partnerships or large projects. It provides flexibility while keeping terms consistent.<\/p>\n<h3 data-section-id=\"10ebtgd\" data-start=\"3360\" data-end=\"3403\">5. Digital or electronic purchase order<\/h3>\n<p data-start=\"3405\" data-end=\"3584\">A digital purchase order refers to how the PO is created and shared. Many companies now use software instead of paper documents. This makes the process faster and easier to track.<\/p>\n<p data-start=\"3586\" data-end=\"3748\">ERP systems allow businesses to generate POs, automate approvals, and monitor orders in real time. As a result, companies can manage procurement more efficiently.<\/p>\n<h2 data-start=\"2041\" data-end=\"2474\"><strong>Purchase Order vs. Invoice<\/strong><\/h2>\n<p data-start=\"3786\" data-end=\"4035\">A purchase order and an invoice serve different purposes, even though they are closely related. A purchase order is created by the buyer to request goods or services. In contrast, an invoice is issued by the seller to request payment after delivery.<\/p>\n<p data-start=\"4037\" data-end=\"4234\">The timing also differs. A purchase order controls spending before a transaction, while an invoice confirms what has been delivered. Therefore, both documents support accuracy from start to finish.<\/p>\n<p data-start=\"566\" data-end=\"667\">To make the differences clearer, here is a simple comparison between a purchase order and an invoice:<\/p>\n<p data-start=\"669\" data-end=\"1138\">\r\n<style>\r\n\t#custom-shortcode-table {\r\n\t\twidth: 100%;\r\n\t\toverflow-x: scroll;\r\n\t}\r\n\t\r\n\t#custom-shortcode-table thead {\r\n\t\tbackground-color: #af2828;\r\n\t\tcolor: #ffffff;\r\n\t}\r\n\t\r\n\t#custom-shortcode-table th {\r\n\t\twhite-space: nowrap;\r\n\t\tfont-size: 16px;\r\n\t}\r\n\t\r\n\t#custom-shortcode-table td {\r\n\t\tfont-size: 14px;\r\n\t}\r\n\t\r\n\t#custom-shortcode-table tr:nth-child(even) {\r\n    \tbackground-color: #f7eaea;\r\n\t}\r\n\t\r\n\t@media (max-width: 767px) {\r\n\t\t#custom-shortcode-table th {\r\n\t\t\tfont-size: 12px;\r\n\t\t}\r\n\t\t\r\n\t\t#custom-shortcode-table td {\r\n\t\tfont-size: 10px;\r\n\t}\r\n\t}\r\n<\/style>\r\n\r\n<div id=\"custom-shortcode-table\">\r\n\t<table>\r\n\t\t<thead>\r\n\t\t\t<tr>\r\n\t\t\t\t\t\t\t\t\t<th>Aspect<\/th>\r\n\t\t\t\t\t\t\t\t\t<th>Purchase Order (PO)<\/th>\r\n\t\t\t\t\t\t\t\t\t<th>Invoice<\/th>\r\n\t\t\t\t\t\t\t<\/tr>\r\n\t\t<\/thead>\r\n\t\t<tbody>\r\n\t\t\t\t\t\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<td>Purpose<\/td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<td>Request goods or services<\/td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<td>Request payment for delivered goods or services<\/td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tr>\r\n\t\t\t\t\t\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<td>Created By<\/td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<td>Buyer<\/td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<td>Seller<\/td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tr>\r\n\t\t\t\t\t\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<td>Timing<\/td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<td>Before purchase<\/td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<td>After delivery<\/td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tr>\r\n\t\t\t\t\t\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<td>Legal Status<\/td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<td>Becomes legally binding once accepted<\/td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<td>Serves as a payment request<\/td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tr>\r\n\t\t\t\t\t\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<td>Key Details<\/td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<td>Items, quantity, price, delivery terms<\/td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<td>Items delivered, total amount due, payment terms<\/td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tr>\r\n\t\t\t\t\t\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<td>Function<\/td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<td>Controls spending and approvals<\/td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<td>Confirms transaction and requests payment<\/td>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tr>\r\n\t\t\t\t\t<\/tbody>\r\n\t<\/table>\r\n<\/div><\/p>\n<p data-start=\"1140\" data-end=\"1300\">Most companies match the purchase order, delivery record, and invoice before payment. This process helps prevent errors and ensures everything aligns correctly.<\/p>\n<h2><strong>The Purchase Order Process Step by Step<\/strong><\/h2>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-971\" src=\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/02\/infografis-pruchase-order.webp\" alt=\"\" width=\"1536\" height=\"1024\" srcset=\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/02\/infografis-pruchase-order.webp 1536w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/02\/infografis-pruchase-order-300x200.webp 300w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/02\/infografis-pruchase-order-1024x683.webp 1024w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/02\/infografis-pruchase-order-768x512.webp 768w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/02\/infografis-pruchase-order-630x420.webp 630w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/02\/infografis-pruchase-order-150x100.webp 150w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/02\/infografis-pruchase-order-696x464.webp 696w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/02\/infografis-pruchase-order-1068x712.webp 1068w\" sizes=\"(max-width: 1536px) 100vw, 1536px\" \/><\/p>\n<p>The purchase order process follows a structured workflow, starting from identifying a need to completing the final payment. While small businesses may manage purchases informally, larger businesses rely on a clear process to control spending and maintain accurate records. A well-defined PO process helps reduce errors, prevent fraud, and make procurement more efficient.<\/p>\n<h3 data-start=\"538\" data-end=\"592\">1. Identify the need and raise a purchase requisition<\/h3>\n<p data-start=\"594\" data-end=\"873\">The process begins when a department identifies a need for goods or services. Instead of contacting a supplier directly, they submit a Purchase Requisition (PR) to the procurement team. This internal request explains what is needed, why it is required, and when it is needed.<\/p>\n<h3 data-start=\"594\" data-end=\"873\">2. Get approval<\/h3>\n<p data-start=\"898\" data-end=\"1159\">After the requisition is submitted, it goes through an approval process. Managers or finance teams review the request to confirm that it fits the company\u2019s budget and business needs. If approved, the request moves forward; if not, it may be rejected or revised.<\/p>\n<h3 data-start=\"898\" data-end=\"1159\">3. Select a supplier and create the purchase order<\/h3>\n<p data-start=\"1219\" data-end=\"1544\">Once the request is approved, the procurement team selects a supplier. If there is an existing vendor, the process is quick, but sometimes suppliers are asked to provide price quotations. After choosing a supplier, the team creates a Purchase Order (PO) with details such as items, quantities, prices, and delivery terms.<\/p>\n<h3 data-start=\"1219\" data-end=\"1544\">4. Send the purchase order to the supplier<\/h3>\n<p data-start=\"1596\" data-end=\"1887\">The purchase order is then sent to the supplier, usually through email or a <a href=\"https:\/\/www.hashmicro.com\/au\/blog\/procurement-software\/\">purchasing software for enterprise<\/a>. The supplier reviews the order to confirm they can meet the requested price, quantity, and delivery schedule. Once they accept the PO, the agreement between both parties becomes official.<\/p>\n<h3 data-start=\"1596\" data-end=\"1887\">5. Receive the goods or services<\/h3>\n<p data-start=\"1929\" data-end=\"2173\">When the order arrives, the receiving team checks the items against the purchase order. They verify the quantity, quality, and condition of the goods. If everything is correct, a <strong data-start=\"2108\" data-end=\"2136\">Goods Receipt Note (GRN)<\/strong> is recorded to confirm the delivery.<\/p>\n<h3 data-start=\"1929\" data-end=\"2173\">6. Perform three-way matching and process payment<\/h3>\n<p data-start=\"2232\" data-end=\"2512\" data-is-last-node=\"\" data-is-only-node=\"\">Finally, the supplier sends an invoice to the accounts payable team. Before making payment, the team compares three documents: the purchase order, the goods receipt note, and the invoice. If all the details match, the payment is approved; if not, the issue must be resolved first.<\/p>\n<h2 id=\"purchase-orders-across-industries\"><strong>Purchase Orders Across Different Industries<\/strong><\/h2>\n<div class=\"relative basis-auto flex-col -mb-(--composer-overlap-px) pb-(--composer-overlap-px) [--composer-overlap-px:28px] grow flex\">\n<div class=\"flex flex-col text-sm\">\n<div class=\"\" data-turn-id-container=\"request-WEB:d6986308-3465-492c-ae13-472a62170e52-6\" data-is-intersecting=\"true\">\n<section class=\"text-token-text-primary w-full focus:outline-none [--shadow-height:45px] has-data-writing-block:pointer-events-none has-data-writing-block:-mt-(--shadow-height) has-data-writing-block:pt-(--shadow-height) [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\" dir=\"auto\" data-turn-id=\"request-WEB:d6986308-3465-492c-ae13-472a62170e52-6\" data-testid=\"conversation-turn-2\" data-scroll-anchor=\"false\" data-turn=\"assistant\">\n<div class=\"text-base my-auto mx-auto pb-10 [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\">\n<div class=\"[--thread-content-max-width:40rem] @w-lg\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\">\n<div class=\"flex max-w-full flex-col gap-4 grow\">\n<div class=\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+&amp;]:mt-1\" dir=\"auto\" tabindex=\"0\" data-message-author-role=\"assistant\" data-message-id=\"0d6bd6b6-5725-4e7b-83e9-580309c7d9d0\" data-message-model-slug=\"gpt-5-3\" data-turn-start-message=\"true\">\n<div class=\"flex w-full flex-col gap-1 empty:hidden\">\n<div class=\"markdown prose dark:prose-invert w-full wrap-break-word dark markdown-new-styling\">\n<p data-start=\"4451\" data-end=\"4693\">While purchase orders serve the same core purpose, their use varies by industry. Each sector has different operational needs that shape how POs are created and managed. Understanding these differences helps companies apply the right approach.<\/p>\n<h3 data-section-id=\"hxnkcg\" data-start=\"4695\" data-end=\"4723\">1. Retail and e-commerce<\/h3>\n<p data-start=\"4725\" data-end=\"4932\">Retail businesses rely on purchase orders to manage inventory levels. They often deal with many products, so POs help ensure shelves stay stocked. Automated systems can even generate POs when stock runs low.<\/p>\n<p data-start=\"4934\" data-end=\"5043\">This approach helps maintain the right product mix. As a result, companies avoid stockouts and over-ordering.<\/p>\n<h3 data-section-id=\"ijrmhm\" data-start=\"5045\" data-end=\"5065\">2. Manufacturing<\/h3>\n<p data-start=\"5067\" data-end=\"5262\">Manufacturers use purchase orders to secure raw materials for production. These materials are often listed in a Bill of Materials, which guides procurement. Therefore, accurate POs are essential.<\/p>\n<p data-start=\"5264\" data-end=\"5402\">Many manufacturers also use blanket POs for ongoing supply. This allows them to receive materials in batches while reducing storage costs.<\/p>\n<h3 data-section-id=\"1fbjp6m\" data-start=\"5404\" data-end=\"5439\">3. Construction and development<\/h3>\n<p data-start=\"5441\" data-end=\"5637\">Construction companies tie purchase orders to specific projects. They issue POs for materials like steel and concrete, as well as subcontracted services. This helps track project spending closely.<\/p>\n<p data-start=\"5639\" data-end=\"5742\">POs also serve as records if disputes arise. Therefore, they support both budgeting and accountability.<\/p>\n<h3 data-section-id=\"t4vhuh\" data-start=\"5744\" data-end=\"5772\">4. Professional services<\/h3>\n<p data-start=\"5774\" data-end=\"5965\">Service-based companies use purchase orders for non-physical items. For example, they may cover freelance work or software subscriptions. These POs define scope, costs, and timelines clearly.<\/p>\n<p data-start=\"5967\" data-end=\"6086\" data-is-last-node=\"\" data-is-only-node=\"\">This ensures both parties stay aligned. As a result, companies reduce misunderstandings and manage expectations better.<\/p>\n<div class=\"\" data-turn-id-container=\"request-WEB:d6986308-3465-492c-ae13-472a62170e52-7\" data-is-intersecting=\"true\">\n<section class=\"text-token-text-primary w-full focus:outline-none [--shadow-height:45px] has-data-writing-block:pointer-events-none has-data-writing-block:-mt-(--shadow-height) has-data-writing-block:pt-(--shadow-height) [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\" dir=\"auto\" data-turn-id=\"request-WEB:d6986308-3465-492c-ae13-472a62170e52-7\" data-testid=\"conversation-turn-4\" data-scroll-anchor=\"false\" data-turn=\"assistant\">\n<div class=\"text-base my-auto mx-auto pb-10 [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\">\n<div class=\"[--thread-content-max-width:40rem] @w-lg\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\">\n<div class=\"flex max-w-full flex-col gap-4 grow\">\n<div class=\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+&amp;]:mt-1\" dir=\"auto\" tabindex=\"0\" data-message-author-role=\"assistant\" data-message-id=\"4a19edd0-b447-43cd-ab9e-439ed0681421\" data-message-model-slug=\"gpt-5-3\" data-turn-start-message=\"true\">\n<div class=\"flex w-full flex-col gap-1 empty:hidden\">\n<div class=\"markdown prose dark:prose-invert w-full wrap-break-word dark markdown-new-styling\">\n<h2 data-section-id=\"1oizxo5\" data-start=\"69\" data-end=\"155\"><strong>How Procurement Solutions Help Streamline Purchase Orders for Australian Businesses<\/strong><\/h2>\n<p data-start=\"157\" data-end=\"500\">Many businesses are planning to adopt modern procurement tools to improve efficiency. According to <span class=\"hover:entity-accent entity-underline inline cursor-pointer align-baseline\"><span class=\"whitespace-normal\">PwC<\/span><\/span>\u2019s <a href=\"https:\/\/www.pwc.com.au\/important-problems\/cfodirect\/digital-procurement-survey-australia.pdf\"><span class=\"hover:entity-accent entity-underline inline cursor-pointer align-baseline\"><span class=\"whitespace-normal\">PwC\u2019s Digital Procurement Survey<\/span><\/span><\/a>, 72% of respondents aim to invest in Source-to-Pay technology, including PO automation. You can explore the full findings here: <span class=\"hover:entity-accent entity-underline inline cursor-pointer align-baseline\"><span class=\"whitespace-normal\">PwC\u2019s Digital Procurement Survey<\/span><\/span>.<\/p>\n<p data-start=\"502\" data-end=\"762\">This trend shows that purchase order creation is shifting towards automation. Therefore, companies are looking for ways to simplify workflows and gain better control over procurement. With that in mind, here is how procurement software improves the PO process:<\/p>\n<ol data-start=\"764\" data-end=\"2034\">\n<li data-section-id=\"bqtua\" data-start=\"764\" data-end=\"940\"><strong data-start=\"767\" data-end=\"804\">Automates purchase order creation<\/strong><br data-start=\"804\" data-end=\"807\" \/>Procurement systems generate POs directly from approved requisitions. As a result, companies reduce manual input and minimise errors.<\/li>\n<li data-section-id=\"ivos4a\" data-start=\"942\" data-end=\"1108\"><strong data-start=\"945\" data-end=\"977\">Speeds up approval workflows<\/strong><br data-start=\"977\" data-end=\"980\" \/>The system routes requests to the right approvers instantly. Then, managers can review and approve orders faster without delays.<\/li>\n<li data-section-id=\"1cjz467\" data-start=\"1110\" data-end=\"1285\"><strong data-start=\"1113\" data-end=\"1142\">Improves spend visibility<\/strong><br data-start=\"1142\" data-end=\"1145\" \/>Businesses can track all purchase orders in one dashboard. Therefore, finance teams can monitor budgets and committed costs more accurately.<\/li>\n<li data-section-id=\"uewptp\" data-start=\"1287\" data-end=\"1472\"><strong data-start=\"1290\" data-end=\"1322\">Enhances supplier management<\/strong><br data-start=\"1322\" data-end=\"1325\" \/>Procurement software stores supplier data in one place. This helps companies compare vendors, track performance, and maintain better relationships.<\/li>\n<li data-section-id=\"6stxmc\" data-start=\"1474\" data-end=\"1674\"><strong data-start=\"1477\" data-end=\"1511\">Ensures compliance and control<\/strong><br data-start=\"1511\" data-end=\"1514\" \/>Built-in rules enforce purchasing policies such as approved vendors and budgets. As a result, companies can reduce maverick spending and improve accountability.<\/li>\n<li data-section-id=\"15cj98t\" data-start=\"1676\" data-end=\"1840\"><strong data-start=\"1679\" data-end=\"1710\">Supports real-time tracking<\/strong><br data-start=\"1710\" data-end=\"1713\" \/>Teams can monitor order status from creation to delivery. This helps avoid delays and keeps procurement activities transparent.<\/li>\n<li data-section-id=\"kvbnvf\" data-start=\"1842\" data-end=\"2034\"><strong data-start=\"1845\" data-end=\"1874\">Simplifies record keeping<\/strong><br data-start=\"1874\" data-end=\"1877\" \/>All purchase orders are stored digitally and are easy to access. Therefore, businesses can maintain accurate records and prepare for audits with less effort<\/li>\n<\/ol>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<\/div>\n<\/div>\n<\/div>\n<h2 data-start=\"0\" data-end=\"43\"><strong>Avoiding Common Purchase Order Mistakes<\/strong><\/h2>\n<p>Even with a system in place, procurement processes can falter. Being aware of common traps helps in maintaining a healthy purchasing cycle.<\/p>\n<h3 data-start=\"45\" data-end=\"355\">1. Maverick spending<\/h3>\n<p data-start=\"45\" data-end=\"355\">Maverick spending happens when employees buy items without following the official purchase order process. This can lead to untracked expenses and budget overruns.<br data-start=\"231\" data-end=\"234\" \/><strong data-start=\"234\" data-end=\"247\" data-is-only-node=\"\">Solution:<\/strong> Enforce a <strong data-start=\"258\" data-end=\"277\">\u201cNo PO, No Pay\u201d<\/strong> policy so invoices are only processed if there is an approved purchase order.<\/p>\n<h3 data-start=\"357\" data-end=\"680\">2. Vague descriptions<\/h3>\n<p data-start=\"357\" data-end=\"680\">Using unclear product descriptions in a purchase order can cause suppliers to send the wrong items. For example, writing \u201coffice supplies\u201d instead of listing exact products can lead to confusion.<br data-start=\"577\" data-end=\"580\" \/><strong data-start=\"580\" data-end=\"593\" data-is-only-node=\"\">Solution:<\/strong> Always include detailed item descriptions, quantities, and SKUs on the purchase order.<\/p>\n<h3 data-start=\"682\" data-end=\"971\">3. Ignoring open purchase orders<\/h3>\n<p data-start=\"682\" data-end=\"971\" data-is-last-node=\"\" data-is-only-node=\"\">Leaving purchase orders open after they have been completed can create inaccurate financial records. It may make it seem like funds are still committed when they are not.<br data-start=\"888\" data-end=\"891\" \/><strong data-start=\"891\" data-end=\"904\" data-is-only-node=\"\">Solution:<\/strong> Regularly review and close completed or cancelled purchase orders.<\/p>\n<h2><strong>Conclusion<\/strong><\/h2>\n<p data-start=\"0\" data-end=\"314\">Purchase orders play a key role in helping businesses manage procurement in a clear and organised way. By defining product details, pricing, quantities, and delivery terms before a transaction begins, purchase orders help prevent misunderstandings between buyers and suppliers while keeping spending under control.<\/p>\n<p data-start=\"316\" data-end=\"856\" data-is-last-node=\"\" data-is-only-node=\"\">As businesses grow and purchasing becomes more complex, having a structured purchase order process becomes even more important. This is especially true for growing businesses in <strong data-start=\"695\" data-end=\"736\"><span class=\"hover:entity-accent entity-underline inline cursor-pointer align-baseline\"><span class=\"whitespace-normal\">Australia<\/span><\/span><\/strong>, where efficient procurement systems help businesses scale operations while maintaining accuracy and accountability.<\/p>\n<p data-start=\"316\" data-end=\"856\" data-is-last-node=\"\" data-is-only-node=\"\">Your business can participate in this benefit too, with our <a href=\"https:\/\/www.hashmicro.com\/au\/free-product-tour\/\">free consultation<\/a> services that will help navigate you on your journey of optimization. We can give you all the information you need to plan out the most efficient system and reach the financial success you deserve.<\/p>\n<p data-start=\"316\" data-end=\"856\" data-is-last-node=\"\" data-is-only-node=\"\"><span data-sheets-root=\"1\"><a href=\"https:\/\/www.hashmicro.com\/au\/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<div class=\"\" data-turn-id-container=\"request-WEB:d6986308-3465-492c-ae13-472a62170e52-8\" data-is-intersecting=\"true\">\n<section class=\"text-token-text-primary w-full focus:outline-none [--shadow-height:45px] has-data-writing-block:pointer-events-none has-data-writing-block:-mt-(--shadow-height) has-data-writing-block:pt-(--shadow-height) [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto R6Vx5W_threadScrollVars scroll-mb-[calc(var(--scroll-root-safe-area-inset-bottom,0px)+var(--thread-response-height))] scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\" dir=\"auto\" data-turn-id=\"request-WEB:d6986308-3465-492c-ae13-472a62170e52-8\" data-testid=\"conversation-turn-6\" data-scroll-anchor=\"false\" data-turn=\"assistant\">\n<div class=\"text-base my-auto mx-auto pb-10 [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\">\n<div class=\"[--thread-content-max-width:40rem] @w-lg\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\">\n<div class=\"flex max-w-full flex-col gap-4 grow\">\n<div class=\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+&amp;]:mt-1\" dir=\"auto\" tabindex=\"0\" data-message-author-role=\"assistant\" data-message-id=\"ad96cec2-67e4-4a5e-92e2-8eb9dd0a0b15\" data-message-model-slug=\"gpt-5-3\" data-turn-start-message=\"true\">\n<div class=\"flex w-full flex-col gap-1 empty:hidden\">\n<div class=\"markdown prose dark:prose-invert w-full wrap-break-word dark markdown-new-styling\">\n<p data-start=\"1328\" data-end=\"2037\" data-is-last-node=\"\" data-is-only-node=\"\"><h2 class=\"faqTitle\">Frequently Asked Question<\/h2>\r\n<style>\r\n\t#main-article p.faqTitle{\r\n\t\ttext-align: center;\r\n\t\tmargin-bottom: 0;\r\n\t\tmargin-top: 50px;\r\n\t\tfont-weight: bold;\r\n\t}\r\n\t\r\n\t.accordion-wrapper{\r\n\t\tbackground-color: white;\r\n\t\tborder: 1px solid #9c171e;\r\n\t\tborder-radius: 6px;\r\n\t\ttransition: 0.4s ease;\r\n\t\tmargin-bottom: 20px;\r\n\t\toverflow: hidden;\r\n\t}\r\n\t\r\n\t.header-faq{\r\n\t\tdisplay: flex;\r\n\t\tborder: none;\r\n\t\tborder-radius: 6px 6px 6px 6px;\r\n\t\tbackground: #FFF;\r\n\t\talign-items: center;\r\n\t\tpadding: 18px;\r\n\t\ttransition: 0.4s;\r\n\t\tcursor: pointer;\r\n\t\tjustify-content: space-between;\r\n\t}\r\n\t\r\n\t.header-faq p{\r\n\t\tmargin-bottom: 0;\r\n\t}\r\n\t\r\n\t.question {\r\n\t\tcolor: #3C3C3C;\r\n\t\twidth: 100%;\r\n\t\ttext-align: left;\r\n\t\tfont-size: 16px;\r\n\t\tline-height: 20px;\r\n\t \ttransition: 0.4s;\r\n\t\tborder: none;\r\n\t\tborder-radius: 6px 6px 6px 6px;\r\n\t\tbackground: #FFF;\r\n\t\tpadding: 0;\r\n\t\ttext-transform: uppercase;\r\n\t\tfont-weight: 700;\r\n\t\tdisplay: flex;\r\n\t\tjustify-content: space-between;\r\n\t\talign-items: center;\r\n\t}\r\n\r\n\t.header-faq.active {\r\n\t  background-color: #FFF;\r\n\t}\r\n\t\r\n\tbutton.question{\r\n\t\tcolor: unset;\r\n\t\tbackground-color: unset;\r\n\t}\r\n\t\r\n\tbutton.question::after{\r\n\t\tcontent: \"<\";\r\n\t\twidth: 2.2rem;\r\n\t\theight: 2.2rem;\r\n\t\tdisplay: flex;\r\n\t\tjustify-content: center;\r\n\t\talign-items: center;\r\n\t\tborder-radius: 50%;\r\n\t\tcolor: #FFF;\r\n\t\tflex-shrink: 0;\r\n\t\tfloat: right;\r\n\t\ttransition: 0.4s;\r\n\t\topacity: 0.4;\r\n\t\tposition: relative;\r\n\t\ttransform: rotate(-90deg);\r\n\t\tbackground-color: #9c171e;\r\n\t\tfont-family: monospace;\r\n\t}\r\n\r\n\t.answer {\r\n\t  padding: 0 18px;\r\n\t  max-height: 0;\r\n\t  overflow: hidden;\r\n\t  background-color: white;\r\n\t  border-radius: 0 0 6px 6px;\r\n\t  transition: max-height 0.4s ease, opacity 0.4s ease;\r\n\t  opacity: 0;\r\n\t}\r\n\r\n\t.answer p{\r\n\t\tfont-size: 16px;\r\n\t\tfont-weight: 400;\r\n\t\tline-height: 28px;\r\n\t\ttext-align: left;\r\n\t\ttext-transform: none;\r\n\t\tcolor: #494949;\r\n\t}\r\n\t\r\n\t.accordion-wrapper.active{\r\n\t\tbox-shadow: 0px 0px 20px 0px #4034AB38;\r\n\t}\r\n\t\r\n\t.header-faq.active .accordion-icon .vLine{\r\n\t\ttransform: translateX(-50%) rotate(0deg);\r\n\t}\r\n\r\n\t.header-faq.active + .answer {\r\n\t  opacity: 1;\r\n\t}\r\n\t\r\n\t.header-faq.active button.question::after{\r\n\t\ttransform: rotate(90deg);\r\n\t\topacity: 1;\r\n\t}\r\n\t\r\n\t.header-faq:hover button.question::after{\r\n\t\topacity: 1;\r\n\t}\r\n\t\r\n\t.faq-h3-addition {\r\n\t\tmargin: 0 !important;\r\n\t\tpadding-right: 15px;\r\n\t\tmin-width: 0;\r\n\t}\r\n<\/style>\r\n\r\n    <div class=\"accordion-wrapper\">\r\n        <div class=\"header-faq\">\r\n            <button class=\"question\">What is the purpose of a purchase order?<\/button>\r\n        <\/div>\r\n        <div class=\"answer\">\r\n            <p>A purchase order is used to formally request goods or services from a supplier while defining the price, quantity, and delivery terms.<\/p>\r\n        <\/div>\r\n    <\/div>\r\n    <div class=\"accordion-wrapper\">\r\n        <div class=\"header-faq\">\r\n            <button class=\"question\">Is a purchase order legally binding?<\/button>\r\n        <\/div>\r\n        <div class=\"answer\">\r\n            <p>Yes. Once the supplier accepts the purchase order, it becomes a legally binding agreement between the buyer and seller.<\/p>\r\n        <\/div>\r\n    <\/div>\r\n    <div class=\"accordion-wrapper\">\r\n        <div class=\"header-faq\">\r\n            <button class=\"question\">Who creates a purchase order?<\/button>\r\n        <\/div>\r\n        <div class=\"answer\">\r\n            <p>A purchase order is created by the buyer or the purchasing team within a company to request goods or services from a supplier.<\/p>\r\n        <\/div>\r\n    <\/div>\r\n    <div class=\"accordion-wrapper\">\r\n        <div class=\"header-faq\">\r\n            <button class=\"question\">Can a purchase order be changed after it is issued?<\/button>\r\n        <\/div>\r\n        <div class=\"answer\">\r\n            <p>Yes, but any changes must be agreed upon by both the buyer and the supplier, usually through a revised or amended purchase order.<\/p>\r\n        <\/div>\r\n    <\/div>\r\n\r\n<script>\r\n    function toggleAccordion() {\r\n        var acc = document.getElementsByClassName(\"header-faq\");\r\n        for (var i = 0; i < acc.length; i++) {\r\n            acc[i].addEventListener(\"click\", function() {\r\n                for (var j = 0; j < acc.length; j++) {\r\n                    if (acc[j] !== this && acc[j].classList.contains(\"active\")) {\r\n                        acc[j].classList.remove(\"active\");\r\n                        acc[j].closest('.accordion-wrapper').classList.remove('active');\r\n                        var panel = acc[j].nextElementSibling;\r\n                        panel.style.maxHeight = null;\r\n                    }\r\n                }\r\n\r\n                this.classList.toggle(\"active\");\r\n                var accordionWrapper = this.closest('.accordion-wrapper');\r\n                var panel = this.nextElementSibling;\r\n                if (this.classList.contains(\"active\")) {\r\n                    panel.style.maxHeight = panel.scrollHeight + \"px\";\r\n                    accordionWrapper.classList.add('active');\r\n                } else {\r\n                    panel.style.maxHeight = null;\r\n                    accordionWrapper.classList.remove('active');\r\n                }\r\n            });\r\n        }\r\n    }\r\n\r\n    document.addEventListener('DOMContentLoaded', toggleAccordion);\r\n<\/script>\r\n\r\n<!-- <script>\r\n    document.addEventListener('DOMContentLoaded', function() {\r\n        document.querySelectorAll('.header-faq .question').forEach(btn => {\r\n            const text = btn.textContent.trim();\r\n            const h3 = document.createElement('h3');\r\n            h3.textContent = text;\r\n            h3.className = \"faq-h3-addition\";\r\n            btn.textContent = '';\r\n            btn.appendChild(h3);\r\n        });\r\n    });\r\n<\/script> --><\/p>\n<p><script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [\n    {\n      \"@type\": \"Question\",\n      \"name\": \"What is the purpose of a purchase order?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"A purchase order is used to formally request goods or services from a supplier while defining the price, quantity, and delivery terms.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Is a purchase order legally binding?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Yes. Once the supplier accepts the purchase order, it becomes a legally binding agreement between the buyer and seller.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Who creates a purchase order?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"A purchase order is created by the buyer or the purchasing team within a company to request goods or services from a supplier.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Can a purchase order be changed after it is issued?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Yes, but any changes must be agreed upon by both the buyer and the supplier, usually through a revised or amended purchase order.\"\n      }\n    }\n  ]\n}\n<\/script><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Keeping finances organised and processes efficient is essential for any company. A purchase order (PO) supports this by formally requesting goods or services from a supplier. It outlines key details such as quantity, price, and delivery terms. Although it may look like simple paperwork, a purchase order plays a critical role. It helps control spending, [&hellip;]<\/p>\n","protected":false},"author":58,"featured_media":953,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"tdm_status":"","tdm_grid_status":"","footnotes":""},"categories":[65],"tags":[],"class_list":{"0":"post-787","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>Purchase Order: Key Facts for Modern Procurement<\/title>\n<meta name=\"description\" content=\"A complete guide to purchase orders, including types, processes, and common mistakes to avoid. Learn how businesses streamline procurement with modern systems.\" \/>\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\/au\/blog\/purchase-order\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"What is a Purchase Order &amp; Why Should Your Business Use It?\" \/>\n<meta property=\"og:description\" content=\"A complete guide to purchase orders, including types, processes, and common mistakes to avoid. Learn how businesses streamline procurement with modern systems.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/au\/blog\/purchase-order\/\" \/>\n<meta property=\"og:site_name\" content=\"HashMicro Australia\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-02T01:06:24+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-24T06:13:24+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/02\/purchase-order.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=\"Jasper Colefax\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jasper Colefax\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.hashmicro.com\/au\/blog\/purchase-order\/\",\"url\":\"https:\/\/www.hashmicro.com\/au\/blog\/purchase-order\/\",\"name\":\"Purchase Order: Key Facts for Modern Procurement\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/au\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/au\/blog\/purchase-order\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/au\/blog\/purchase-order\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/02\/purchase-order.webp\",\"datePublished\":\"2026-02-02T01:06:24+00:00\",\"dateModified\":\"2026-04-24T06:13:24+00:00\",\"author\":{\"@id\":\"https:\/\/www.hashmicro.com\/au\/blog\/#\/schema\/person\/5e36c3e21c6cb33505689d9822fabb49\"},\"description\":\"A complete guide to purchase orders, including types, processes, and common mistakes to avoid. Learn how businesses streamline procurement with modern systems.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.hashmicro.com\/au\/blog\/purchase-order\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.hashmicro.com\/au\/blog\/purchase-order\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/au\/blog\/purchase-order\/#primaryimage\",\"url\":\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/02\/purchase-order.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/02\/purchase-order.webp\",\"width\":800,\"height\":400},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.hashmicro.com\/au\/blog\/purchase-order\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.hashmicro.com\/au\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"What is a Purchase Order &#038; Why Should Your Business Use It?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.hashmicro.com\/au\/blog\/#website\",\"url\":\"https:\/\/www.hashmicro.com\/au\/blog\/\",\"name\":\"HashMicro Australia\",\"description\":\"Business Management Blog\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.hashmicro.com\/au\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.hashmicro.com\/au\/blog\/#\/schema\/person\/5e36c3e21c6cb33505689d9822fabb49\",\"name\":\"Jasper Colefax\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/au\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/02\/cropped-Jasper-Colefax-96x96.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/02\/cropped-Jasper-Colefax-96x96.webp\",\"caption\":\"Jasper Colefax\"},\"description\":\"I\u2019m a full-time business systems analyst and a part-time writer focused on procurement and supply chain management. In my day-to-day work, I help teams map purchasing workflows, clarify approval rules, and connect supplier and inventory data so decisions don\u2019t rely on guesswork.\",\"url\":\"https:\/\/www.hashmicro.com\/au\/blog\/author\/jasper-colefax\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Purchase Order: Key Facts for Modern Procurement","description":"A complete guide to purchase orders, including types, processes, and common mistakes to avoid. Learn how businesses streamline procurement with modern systems.","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\/au\/blog\/purchase-order\/","og_locale":"en_US","og_type":"article","og_title":"What is a Purchase Order & Why Should Your Business Use It?","og_description":"A complete guide to purchase orders, including types, processes, and common mistakes to avoid. Learn how businesses streamline procurement with modern systems.","og_url":"https:\/\/www.hashmicro.com\/au\/blog\/purchase-order\/","og_site_name":"HashMicro Australia","article_published_time":"2026-02-02T01:06:24+00:00","article_modified_time":"2026-04-24T06:13:24+00:00","og_image":[{"width":800,"height":400,"url":"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/02\/purchase-order.webp","type":"image\/webp"}],"author":"Jasper Colefax","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Jasper Colefax","Est. reading time":"13 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/au\/blog\/purchase-order\/","url":"https:\/\/www.hashmicro.com\/au\/blog\/purchase-order\/","name":"Purchase Order: Key Facts for Modern Procurement","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/au\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/au\/blog\/purchase-order\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/au\/blog\/purchase-order\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/02\/purchase-order.webp","datePublished":"2026-02-02T01:06:24+00:00","dateModified":"2026-04-24T06:13:24+00:00","author":{"@id":"https:\/\/www.hashmicro.com\/au\/blog\/#\/schema\/person\/5e36c3e21c6cb33505689d9822fabb49"},"description":"A complete guide to purchase orders, including types, processes, and common mistakes to avoid. Learn how businesses streamline procurement with modern systems.","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/au\/blog\/purchase-order\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/au\/blog\/purchase-order\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/au\/blog\/purchase-order\/#primaryimage","url":"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/02\/purchase-order.webp","contentUrl":"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/02\/purchase-order.webp","width":800,"height":400},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/au\/blog\/purchase-order\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/au\/blog\/"},{"@type":"ListItem","position":2,"name":"What is a Purchase Order &#038; Why Should Your Business Use It?"}]},{"@type":"WebSite","@id":"https:\/\/www.hashmicro.com\/au\/blog\/#website","url":"https:\/\/www.hashmicro.com\/au\/blog\/","name":"HashMicro Australia","description":"Business Management Blog","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.hashmicro.com\/au\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.hashmicro.com\/au\/blog\/#\/schema\/person\/5e36c3e21c6cb33505689d9822fabb49","name":"Jasper Colefax","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/au\/blog\/#\/schema\/person\/image\/","url":"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/02\/cropped-Jasper-Colefax-96x96.webp","contentUrl":"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/02\/cropped-Jasper-Colefax-96x96.webp","caption":"Jasper Colefax"},"description":"I\u2019m a full-time business systems analyst and a part-time writer focused on procurement and supply chain management. In my day-to-day work, I help teams map purchasing workflows, clarify approval rules, and connect supplier and inventory data so decisions don\u2019t rely on guesswork.","url":"https:\/\/www.hashmicro.com\/au\/blog\/author\/jasper-colefax\/"}]}},"_links":{"self":[{"href":"https:\/\/www.hashmicro.com\/au\/blog\/wp-json\/wp\/v2\/posts\/787","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hashmicro.com\/au\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hashmicro.com\/au\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/au\/blog\/wp-json\/wp\/v2\/users\/58"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/au\/blog\/wp-json\/wp\/v2\/comments?post=787"}],"version-history":[{"count":21,"href":"https:\/\/www.hashmicro.com\/au\/blog\/wp-json\/wp\/v2\/posts\/787\/revisions"}],"predecessor-version":[{"id":3390,"href":"https:\/\/www.hashmicro.com\/au\/blog\/wp-json\/wp\/v2\/posts\/787\/revisions\/3390"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/au\/blog\/wp-json\/wp\/v2\/media\/953"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/au\/blog\/wp-json\/wp\/v2\/media?parent=787"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/au\/blog\/wp-json\/wp\/v2\/categories?post=787"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/au\/blog\/wp-json\/wp\/v2\/tags?post=787"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}