{"id":162269,"date":"2025-05-22T15:54:30","date_gmt":"2025-05-22T08:54:30","guid":{"rendered":"https:\/\/www.hashmicro.com\/id\/blog\/?p=162269"},"modified":"2026-02-05T10:13:58","modified_gmt":"2026-02-05T03:13:58","slug":"three-way-matching","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/id\/blog\/three-way-matching\/","title":{"rendered":"Three Way Matching: Pengertian, Komponen, dan Cara Kerjanya"},"content":{"rendered":"<p>Dalam operasional bisnis, transaksi pembelian melibatkan beberapa dokumen yang saling terhubung dari awal pemesanan sampai penagihan. Three way matching membantu memastikan hubungan antar dokumen itu tetap rapi dan konsisten.<\/p>\n<p>Metode ini bekerja dengan mencocokkan purchase order, receiving report, dan invoice sebelum transaksi diproses. Fokusnya adalah memastikan detail utama seperti item, jumlah, dan harga selaras di ketiga dokumen.<\/p>\n<p>Secara lebih lanjut, proses approval menjadi lebih terstruktur dan mudah ditelusuri. Tim terkait juga punya acuan yang sama saat melakukan pencatatan dan administrasi pembelian.<\/p>\n<p><span style=\"font-weight: 400;\"><div id=\"toc_group_article\" style=''>\r\n\t<p style='font-size:25px;font-weight:bold; margin-bottom:0px'>\r\n\t\tDaftar Isi:\r\n\t<\/p>\r\n\t<ul id=\"list_toc\" class='list_toc'><\/ul>\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\">Daftar Isi<\/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\/* 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\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<style>\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_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: 10px;\r\n\t\ttransition:all 0.2s ease-in-out;\r\n\t\tfont-size:15px\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#list_toc_float li a{margin-bottom:0px}\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#toc_group_article {\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@media (max-width:768px){\r\n\t\t#toc_group_article {\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\t}\r\n\t\r\n\t \/* custom scrollbar style *\/\r\n::-webkit-scrollbar {\r\n    width: 7px;\r\n}\r\n::-webkit-scrollbar-track {\r\n    background: #d7a2a4;\r\n}\r\n::-webkit-scrollbar-thumb {\r\n    background: #b1252d;\r\n    border-radius: 15px;\r\n}\t\t\r\n\r\n<\/style>\r\n\r\n<script>\r\n\tdocument.addEventListener('DOMContentLoaded', function() {\r\n\t\t\/\/ Fungsi untuk menangani klik pada semua elemen <a> dengan href yang dimulai dengan #\r\n\t\tfunction handleTitleClick(event) {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tconst targetId = this.getAttribute('href').substring(1);\r\n\t\t\tconst targetElement = document.getElementById(targetId);\r\n\r\n\t\t\tif (targetElement) {\r\n\t\t\t\tconst headerHeight = document.querySelector('#toc .header').offsetHeight;\r\n\t\t\t\tconst navbarHeight = document.getElementById('tdi_34') ? document.getElementById('tdi_34').offsetHeight : 0;\r\n\t\t\t\tconst windowHeight = window.innerHeight;\r\n\t\t\t\tconst targetOffset = targetElement.offsetTop;\r\n\t\t\t\tconst scrollTo = targetOffset + (windowHeight \/ 2) + (headerHeight) - navbarHeight - 40;\r\n\r\n\t\t\t\twindow.scrollTo({\r\n\t\t\t\t\ttop: scrollTo,\r\n\t\t\t\t\tbehavior: 'smooth'\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t\/\/ Tambahkan event listener untuk semua elemen <a> di toc-list dan list-toc\r\n\t\tconst titleLinks = document.querySelectorAll('#toc-list a, #list_toc a');\r\n\t\ttitleLinks.forEach(link => {\r\n\t\t\tlink.addEventListener('click', handleTitleClick);\r\n\t\t});\r\n\t});\r\n<\/script>\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\n\/\/ document.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 = 'Daftar Isi';\r\n\/\/ \/\/ \t\t\t}\r\n\/\/ \/\/ \t\t}\r\n\/\/ \t\tif(window.innerWidth < 767){\r\n\/\/ \t\t\ttocTitle.textContent = 'Daftar Isi'; \/\/ Selalu pertahankan judul ini di mobile\r\n\/\/ \t\t} else {\r\n\/\/ \t\t\tif (window.scrollY >= (headerTop - headerHeight + 700)) {\r\n\/\/ \t\t\t\tconst currentHeaderId = header.getAttribute('id');\r\n\/\/ \t\t\t\tconst currentHeaderText = document.getElementById(currentHeaderId).textContent;\r\n\/\/ \t\t\t\ttocTitle.textContent = currentHeaderText;\r\n\/\/ \t\t\t\tcurrentHeader = currentHeaderId;\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 = 'Daftar Isi'; \/\/ 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 = 'Daftar isi'; \/\/ 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 = 'Daftar isi'; \/\/ 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\/\/ START new JS for ToC improvements\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 + 1750;\r\n\tconsole.log(triggerPoint)\r\n  const footerHeight = footer.offsetHeight;\r\n  const triggerFooterPoint = footer.getBoundingClientRect().top + window.pageYOffset - footerHeight*3;\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  \r\n  const panel2 = document.querySelector(\"#toc .list\");\r\n  const icon = document.querySelector(\".toc-icon\");\r\n  const tocTitle = document.querySelector('#toc-title');\r\n\r\n  let activeLink = null;\r\n  let userClosedTOC = false; \/\/ Flag user menutup TOC\r\n\r\n  function handleScroll() {\r\n    const windowTop = window.pageYOffset || document.documentElement.scrollTop;\r\n    let currentHeader = '';\r\n\r\n    \/\/ Update TOC title sesuai header yang terlihat\r\n    headers.forEach(header => {\r\n      const headerTop = header.offsetTop;\r\n      const headerHeight = header.clientHeight;\r\n      if(window.innerWidth < 767){\r\n        tocTitle.textContent = 'Daftar Isi'; \r\n      } else {\r\n        if (window.scrollY >= (headerTop - headerHeight + 1750)) {\r\n          const currentHeaderId = header.getAttribute('id');\r\n          const currentHeaderText = document.getElementById(currentHeaderId).textContent;\r\n          tocTitle.textContent = currentHeaderText;\r\n          currentHeader = currentHeaderId;\r\n        }\r\n      }\r\n    });\r\n\r\n    navLinks.forEach(link => {\r\n      link.classList.remove('active');\r\n      if(currentHeader && link.getAttribute('href').includes(currentHeader)) {\r\n        link.classList.add('active');\r\n      }\r\n    });\r\n\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`;\r\n        toc.style.backgroundColor = \"#FFF\";\r\n        \/\/ Saat sticky, TOC otomatis tertutup\r\n        panel2.style.height = '0px';\r\n        icon.style.transform = \"rotate(180deg)\";\r\n        userClosedTOC = true; \/\/ Set flag supaya tidak terbuka saat scroll\r\n      }\r\n      \r\n      if(window.innerWidth < 767){\r\n        tocTitle.textContent = 'Daftar Isi'; \r\n        toc.style.width = '150px';\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';\r\n      toc.style.backgroundColor = \"#FFF\";\r\n      tocTitle.textContent = 'Daftar isi'; \r\n\r\n      \/\/ Kembalikan panel jika user belum menutup manual\r\n      if(!userClosedTOC) {\r\n        panel2.style.height = panel2.scrollHeight + \"px\";\r\n        icon.style.transform = \"rotate(0deg)\";\r\n      }\r\n    }\r\n  }\r\n\r\n  window.addEventListener('scroll', handleScroll);\r\n  handleScroll();\r\n\r\n  \/\/ Toggle TOC saat user klik\r\n  const tocHeader = document.querySelector(\"#toc .header\");\r\n  tocHeader.addEventListener(\"click\", function() {\r\n    const panel = panel2;\r\n    if (panel.style.height !== '0px') {\r\n      panel.style.height = '0px';\r\n      icon.style.transform = \"rotate(180deg)\";\r\n      userClosedTOC = true;\r\n    } else {\r\n      panel.style.height = panel.scrollHeight + \"px\";\r\n      icon.style.transform = \"rotate(0deg)\";\r\n      userClosedTOC = false;\r\n    }\r\n  });\r\n\r\n  \/\/ Close TOC saat link diklik\r\n  document.querySelectorAll(\"#toc .list a\").forEach(link => {\r\n    link.addEventListener(\"click\", function() {\r\n      panel2.style.height = '0px';\r\n      icon.style.transform = \"rotate(180deg)\";\r\n      userClosedTOC = true;\r\n    });\r\n  });\r\n});\r\n\/\/ END new JS for ToC improvements\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<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        } \r\n\t\t  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\r\n<!-- ToC List for desktop side bar, diganti jadi inject by php, di code snippet \"Sidebar Accordion\" -->\r\n<!-- <script>\r\n\tdocument.addEventListener(\"DOMContentLoaded\", function() {\r\n\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        \/\/ Mengambil semua elemen h2 dan h3\r\n\t\tconst elements = document.querySelectorAll('.td-post-content h2');\r\n\r\n\t\t\tfunction newFormatId(text) {\r\n\t\t\t\tif(text.toLowerCase() === \"key takeaways\") {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tconst result = text.toLowerCase()\r\n\t\t\t\t.trim()\r\n\t\t\t\t.replace(\/[^\\w\\s-]\/g, '')  \/\/ hapus tanda baca\r\n\t\t\t\t.replace(\/\\s+\/g, '-'); \/\/ ganti spasi jadi \"-\"\r\n\r\n\t\t\t\treturn result;\r\n\t\t\t}\r\n\t\r\n\t\telements.forEach(element => {\r\n\t\t\tif (element.tagName === 'H2') {\r\n\t\t\t\tconst id = newFormatId(element.textContent); \/\/ Hasilkan ID baru\r\n\t\t\t\telement.id = id; \/\/ Tetapkan ID ke elemen h2\r\n\t\t\t\tif (element.textContent.toLowerCase() === \"key takeaways\") {return;} \/\/ Kalau Key Takeaways, jangan dimasukin\r\n\t\t\t\theadings.push({ level: 'h2', id: id, title: element.textContent, children: [] });\r\n\t\t\t} else if (element.tagName === 'H3') {\r\n\t\t\t\tconst id = newFormatId(element.textContent); \/\/ Hasilkan ID baru\r\n\t\t\t\telement.id = id; \/\/ Tetapkan ID ke elemen h3\r\n\t\t\t\tif (headings.length > 0) {\r\n\t\t\t\t\theadings[headings.length - 1].children.push({ level: 'h3', id: id, title: element.textContent, children: [] });\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n       \/\/ Membuat list HTML dari objek headings\r\n\t\tconst ul = document.getElementById('list_toc');\r\n\t\tlet currentUl = ul;\r\n\t\theadings.forEach(heading => {\r\n\t\t\tconst li = document.createElement('li');\r\n\t\t\tconst a = document.createElement('a');\r\n\t\t\ta.textContent = heading.title;\r\n\t\t\ta.href = `#${heading.id}`; \/\/ Gunakan ID yang baru dihasilkan\r\n\t\t\tli.appendChild(a);\r\n\r\n\t\t\tif (heading.level === 'h2') {\r\n\t\t\t\tcurrentUl = li;\r\n\t\t\t\tul.appendChild(li);\r\n\t\t\t} else if (heading.level === 'h3') {\r\n\t\t\t\tif (!currentUl.lastElementChild || currentUl.lastElementChild.tagName !== 'UL') {\r\n\t\t\t\t\tconst nestedUl = document.createElement('ul');\r\n\t\t\t\t\tcurrentUl.appendChild(nestedUl);\r\n\t\t\t\t\tcurrentUl = nestedUl;\r\n\t\t\t\t}\r\n\t\t\t\tcurrentUl.appendChild(li);\r\n\t\t\t}\r\n\r\n\t\t\tcreateNestedList(li, heading.children);\r\n\t\t});\r\n\t\t\/\/ Dapatkan elemen ul dengan id 'list_toc'\r\n\t\tconst ulFloat = document.getElementById('list_toc');\r\n\r\n\t\t\/\/ Dapatkan isi (child elements) dari ul dengan id 'list_toc'\r\n\t\tconst clonedChildren = ulFloat.cloneNode(true).children;\r\n\r\n\t\t\/\/ Dapatkan elemen ul dengan id 'list_toc_float'\r\n\t\tconst ulToc = document.getElementById('list_toc_float');\r\n\r\n\t\t\/\/ Tambahkan isi yang telah didapatkan dari 'list_toc' ke ul dengan id 'list_toc_float'\r\n\t\tulToc.append(...clonedChildren);\r\n\r\n\r\n        \/\/ Fungsi untuk mengambil tinggi navbar\r\n\t\tfunction getNavbarHeight() {\r\n\t\t\tconst navbar = document.getElementById('tdi_34');\r\n\t\t\treturn navbar ? navbar.offsetHeight : 0;\r\n\t\t}\r\n\r\n\t\t\/\/ Fungsi untuk menambahkan offset posisi scroll\r\n\t\tfunction scrollToElementWithOffset(elementId) {\r\n\t\t\tconst element = document.getElementById(elementId);\r\n\t\t\tif (element) {\r\n\t\t\t\tconst offset = getNavbarHeight();\r\n\t\t\t\tconst elementPosition = element.getBoundingClientRect().top;\r\n\t\t\t\tconst offsetPosition = elementPosition - offset - 40;\r\n\r\n\t\t\t\twindow.scrollBy({\r\n\t\t\t\t\ttop: offsetPosition,\r\n\t\t\t\t\tbehavior: 'smooth'\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t\/\/ Fungsi untuk menangani klik pada tautan judul\r\n\t\tfunction handleTitleClick(event) {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tconst href = event.target.getAttribute('href').substr(1);\r\n\t\t\tscrollToElementWithOffset(href);\r\n\t\t}\r\n\r\n\t\t\/\/ Tambahkan event listener untuk semua tautan judul\r\n\t\tconst titleLinks = document.querySelectorAll('a[href^=\"#\"]');\r\n\t\ttitleLinks.forEach(link => {\r\n\t\t\tlink.addEventListener('click', handleTitleClick);\r\n\t\t});\r\n\t\t\r\n\t});\r\n    <\/script> -->\r\n<\/span><\/p>\n<table style=\"border-collapse: collapse; background-color: #fffacd; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); border-radius: 25px 25px 25px 25px;\" width=\"100%\">\n<tbody>\n<tr>\n<td style=\"padding: 15px; border: none;\">\n<h3 style=\"margin-bottom: 10px;\"><span style=\"background-color: #990000; color: #ffffff; padding: 5px;\"><b>Key Takeaways<\/b><\/span><\/h3>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\"><a href=\"#em\">Three way matching adalah<\/a> proses verifikasi akuntansi yang mencocokkan tiga dokumen penting, yaitu purchase order, receiving report, dan invoice.<\/span><\/li>\n<li aria-level=\"1\">Pencocokan verifikasi ini melibatkan <a href=\"#komponen\">tiga komponen laporan<\/a> yaitu purchase order, receiving report, dan invoice.<\/li>\n<li aria-level=\"1\">Proses pencocokan tiga langkah <a href=\"#shady\">memberikan berbagai manfaat<\/a> bagi tim keuangan, salah satunya adalah mencegah kesalahan pembayaran.<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><b><span id=\"em\">Apa itu Three Way Matching dalam Akuntansi?<\/span><\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Three way matching adalah proses verifikasi akuntansi yang mencocokkan tiga dokumen penting, yaitu purchase order, receiving report, dan invoice. Proses ini membantu perusahaan memastikan bahwa pembelian yang dilakukan sesuai dengan barang yang diterima dan tagihan yang diberikan.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Dalam praktiknya, purchase order mencatat detail pesanan yang diajukan ke pemasok. Receiving report mencatat barang yang diterima oleh gudang atau tim logistik. Sementara itu, invoice menunjukkan jumlah yang harus dibayar sesuai dengan barang yang telah dikirim.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Umumnya, proses pencocokan ini biasanya dilakukan sebelum persetujuan pembayaran diberikan oleh tim keuangan.<\/span><\/p>\n<h2><b><span id=\"komponen\">Komponen-komponen Three Way Matching<\/span><\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Sebelumnya telah dijelaskan bahwa three way matching terdiri dari tiga komponen penting, yaitu purchase order, receiving report, dan invoice. Namun, apa sebenarnya isi dari masing-masing dokumen tersebut dan bagaimana perannya dalam proses pencocokan?<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Berikut ini adalah penjelasan lengkap dari ketiga komponen tersebut:\u00a0<\/span><\/p>\n<h3><b>1. Purchase Order (PO)<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Purchase order adalah dokumen resmi yang dibuat oleh tim pembelian saat perusahaan memesan barang atau jasa dari pemasok. Dokumen ini menjadi dasar kesepakatan awal antara kedua pihak dan berfungsi untuk mengontrol proses pengadaan agar sesuai kebijakan internal dan anggaran perusahaan.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Selain menjadi acuan saat penerimaan barang, PO juga berperan penting dalam proses verifikasi sebelum pembayaran dilakukan.<\/span><\/p>\n<p><b>Isi utama dalam PO:<\/b><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Nama dan alamat pemasok<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Nomor PO dan tanggal pemesanan<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Daftar barang atau jasa yang dipesan<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Jumlah unit dan harga satuan<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Total nilai pesanan<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Estimasi tanggal pengiriman<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Syarat dan metode pembayaran<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Tanda tangan atau otorisasi dari pihak berwenang<\/span><\/li>\n<\/ul>\n<h3><b>2. Receiving Report (Laporan Penerimaan Barang)<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Dokumen kedua dalam proses three way matching adalah receiving report yang dibuat oleh tim gudang atau bagian penerima saat barang tiba di lokasi perusahaan. Dokumen ini berperan untuk mencatat rincian barang yang diterima dan membandingkannya dengan purchase order dan invoice.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Selain berfungsi sebagai bukti penerimaan fisik, receiving report juga penting untuk pengelolaan stok dan proses klaim jika terjadi ketidaksesuaian.<\/span><\/p>\n<p><b>Isi utama dalam receiving report:<\/b><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Nomor dan tanggal laporan<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Nomor PO yang sesuai<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Tanggal penerimaan barang<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Nama pemasok<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Daftar barang yang diterima<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Jumlah barang dan satuannya<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Kondisi barang saat diterima<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Tanda tangan petugas penerima<\/span><\/li>\n<\/ul>\n<h3><b>3. Invoice (Faktur Penagihan)<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Dokumen ketiga adalah <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/apa-itu-invoice\/\" rel=\"\">invoice perusahaan<\/a> adalah dokumen yang dikirimkan oleh pemasok kepada perusahaan sebagai permintaan pembayaran atas barang atau jasa yang telah disediakan. Dalam perusahaan, invoice adalah dasar bagi tim keuangan untuk mencatat utang usaha dan melakukan proses pembayaran.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Invoice harus dicocokkan dengan PO dan receiving report untuk memastikan keakuratan data sebelum dana dikeluarkan.<\/span><\/p>\n<p><b>Isi utama dalam invoice:<\/b><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Nama dan alamat perusahaan pembeli<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Nama dan informasi pemasok<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Nomor dan tanggal invoice<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Nomor PO atau referensi pesanan<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Daftar barang atau jasa yang ditagihkan<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Jumlah dan harga total<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Pajak dan biaya tambahan (jika ada)<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Total yang harus dibayar<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Tanggal jatuh tempo pembayaran<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Informasi rekening atau metode pembayaran<\/span><\/li>\n<\/ul>\n<div style=\"border:1px solid #ddd; border-radius:8px; overflow:hidden; margin:30px 0; box-shadow:0 4px 12px rgba(0,0,0,0.12);\"><div style=\"background-color:#990000; color:#fff; padding:14px 20px; font-size:18px; font-weight:700; letter-spacing:0.5px;\">Expert's Review<\/div><div style=\"background-color:#fff; padding:22px 20px; font-size:16px; line-height:1.7; position:relative;\"><div style=\"font-size:44px; color:#990000; font-weight:800; line-height:0; position:absolute; top:18px; left:18px;\">\u201c<\/div><p style=\"margin:0 0 14px 40px; font-style:italic; color:#333;\">\u201cPraktik terbaik three way matching adalah menetapkan parameter yang dicek sejak awal, seperti item, kuantitas, harga, dan toleransi selisih yang wajar. Dengan begitu, verifikasi tetap ketat, tetapi tidak menghambat ritme operasional.\u201d<\/p><p style=\"margin:0 0 0 40px; font-weight:700; color:#444;\">\u2014 Jennifer Santoso CA, CFA, CPA, Head of Finance and Accounting<\/p><\/div><\/div>\n<h2><b>Mengapa Proses Verifikasi Tigas Dokumen Itu Penting?<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Three way matching penting bukan hanya untuk menjaga keakuratan pembayaran, tetapi juga menjadi langkah lanjut ketika <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/two-way-matching\/\" rel=\"\">langkah-langkah two way matching<\/a> tidak cukup memberikan data yang akurat. Banyak perusahaan sering menemukan perbedaan antara barang yang dipesan dan barang yang benar-benar diterima, sehingga perlu satu lapisan verifikasi tambahan.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Dengan mencocokkan PO, receiving report, dan invoice sekaligus, perusahaan bisa memastikan bahwa pemasok mengirim barang sesuai pesanan dan menagih sesuai dengan barang yang diterima.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Alhasil, tim keuangan jadi bisa mencegah kesalahan pembayaran, <span id=\"shady\">menghindari pencatatan stok yang salah, dan mendeteksi potensi kecurangan\u00a0lebih cepat. Pada akhirnya, three way matching membantu perusahaan menjaga transparansi, mengontrol pengeluaran, dan meningkatkan kepercayaan dalam setiap proses transaksi pembelian.<\/span><\/span><\/p>\n<h2><b>Manfaat Pencocokan PO, Invoice, dan Receiving Report<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Three way matching bukan hanya sekadar prosedur verifikasi dokumen, tetapi juga membawa banyak keuntungan bagi operasional dan keuangan perusahaan. Berikut ini adalah beberapa manfaat utama dari penerapan three way matching dalam bisnis:\u00a0<\/span><\/p>\n<h3><b>1. Mencegah kesalahan pembayaran<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Three way matching memastikan perusahaan hanya membayar tagihan yang sesuai dengan pesanan dan barang yang diterima. Proses ini membantu menghindari pembayaran ganda, kelebihan bayar, atau pembayaran untuk barang yang belum dikirim.<\/span><\/p>\n<h3><b>2. Mengurangi risiko fraud<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Dengan mencocokkan tiga dokumen penting, perusahaan bisa lebih cepat mendeteksi transaksi mencurigakan, manipulasi data, dan memantau <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/invoice-fraud\/\">potensi penipuan invoice<\/a>. Alhasil dapat memperkuat kontrol internal dan mengurangi peluang terjadinya penipuan oleh pihak internal maupun eksternal.<\/span><\/p>\n<h3><b>3. Meningkatkan akurasi pencatatan keuangan<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Three way matching membantu perusahaan mencatat transaksi secara tepat, karena hanya mencatat pembayaran jika data PO, receiving report, dan invoice benar-benar cocok. Proses ini memastikan bahwa setiap transaksi tercermin secara akurat dalam laporan keuangan, terlebih jika two way matching tidak menghasilkan hasil yang valid, misalnya ketika barang belum diterima, namun invoice sudah dikirim oleh pemasok.\u00a0<\/span><\/p>\n<h3><b>4. Memperkuat pengendalian stok dan gudang<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Dengan mencocokkan receiving report, perusahaan bisa memastikan bahwa barang yang masuk ke gudang benar-benar sesuai dengan PO. Hal ini membantu tim inventaris dalam mencatat stok masuk secara tepat dan menghindari selisih data.<\/span><\/p>\n<h3><b>5. Mempercepat proses audit dan revisi<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Three way matching menyediakan jejak dokumen yang jelas dan terstruktur, sehingga auditor atau tim internal bisa dengan mudah melacak dan memverifikasi transaksi. Proses audit pun jadi lebih cepat dan efisien tanpa perlu banyak klarifikasi tambahan.<\/span><\/p>\n<h2><b>Tahapan Proses Pencocokan Dokumen Pembelian<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Berikut adalah langkah-langkah three way matching yang biasanya dilakukan oleh perusahaan sebelum menyetujui pembayaran atas pembelian barang atau jasa:<\/span><\/p>\n<h3><b>1. Menerima invoice dari pemasok<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Tim keuangan atau akuntansi menerima invoice yang dikirim oleh pemasok sebagai permintaan pembayaran atas barang atau jasa yang telah disediakan.<\/span><\/p>\n<h3><b>2. Mengakses Purchase Order (PO) yang terkait<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Tim memeriksa purchase order yang sebelumnya dibuat oleh bagian pembelian. PO ini menjadi acuan awal untuk mengetahui rincian pesanan, seperti jenis barang, jumlah, dan harga yang disepakati.<\/span><\/p>\n<h3><b>3. Memeriksa receiving report<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Tim kemudian mengecek receiving report dari gudang atau tim penerima barang. Dokumen ini menunjukkan barang apa saja yang benar-benar diterima, lengkap dengan jumlah dan kondisi fisiknya.<\/span><\/p>\n<h3><b>4. Mencocokkan tiga dokumen<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Setelah memiliki ketiga dokumen (invoice, PO, dan receiving report), tim mencocokkannya satu per satu untuk memastikan kesesuaian data terutama dalam hal jumlah barang, harga satuan, dan total nilai transaksi.<\/span><\/p>\n<h3><b>5. Mengidentifikasi ketidaksesuaian (jika ada)<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Jika ditemukan ketidaksesuaian, tim harus menghubungi pihak terkait seperti pemasok, tim pembelian, atau gudang untuk klarifikasi dan penyelesaian sebelum melanjutkan proses pembayaran.<\/span><\/p>\n<h3><b>6. Menyetujui pembayaran<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Jika semua data sudah cocok dan tidak ada perbedaan, tim keuangan dapat melanjutkan ke proses persetujuan dan pembayaran kepada pemasok.<\/span><\/p>\n<style>\r\n\t#baca-juga {\r\n\t\tpadding: 16px;\r\n\t\tbackground-color: #f7eaea;\r\n\t\tborder-left: 3px solid #af2828;\r\n\t\tfont-weight: 500;\r\n\t\tmargin-bottom: 26px;\r\n\t}\r\n\t\r\n\t#baca-juga a {\r\n\t\tcolor: #af2828 !important;\r\n\t\ttransition: all 0.2s ease-in-out;\r\n\t}\r\n\t\r\n\t#baca-juga a:hover {\r\n\t\tcolor: #af282880 !important;\r\n\t}\r\n<\/style>\r\n\r\n<div id=\"baca-juga\">\r\n\t<span>Baca juga: <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/account-payable-turnover\/\">Account Payable Turnover: Arti, Rumus &amp; Contoh Cara Hitung<\/a><\/span>\r\n<\/div>\n<h2><strong>Kapan Perusahaan Perlu Beralih dari Two Way ke Three Way Matching?<\/strong><\/h2>\n<p>Perusahaan biasanya mulai mempertimbangkan three way matching ketika volume transaksi pembelian meningkat dan melibatkan banyak pemasok. Pada tahap ini, pencocokan antara purchase order dan invoice saja sering kali belum cukup untuk memberikan gambaran yang utuh tentang transaksi.<\/p>\n<p>Dengan adanya bukti penerimaan yang tercatat rapi, perusahaan dapat menambahkan lapisan verifikasi tanpa mengubah alur kerja secara drastis.<\/p>\n<p>Selain itu, metode ini lebih tepat diterapkan saat struktur organisasi dan proses approval semakin matang. Tim procurement, gudang, dan keuangan dapat berkolaborasi menggunakan data yang sama.<\/p>\n<h2><b>Solusi Otomatisasi Three Way Matching Tanpa Risiko Salah Bayar<\/b><\/h2>\n<p><a href=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/05\/Three-Way-Matching-HashMicro.webp\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-188167\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/05\/Three-Way-Matching-HashMicro.webp\" alt=\"HashMicro: Solusi Otomatisasi Three Way Matching Tanpa Risiko Salah Bayar\" width=\"1200\" height=\"675\" srcset=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/05\/Three-Way-Matching-HashMicro.webp 1200w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/05\/Three-Way-Matching-HashMicro-300x169.webp 300w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/05\/Three-Way-Matching-HashMicro-1024x576.webp 1024w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/05\/Three-Way-Matching-HashMicro-768x432.webp 768w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/05\/Three-Way-Matching-HashMicro-747x420.webp 747w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/05\/Three-Way-Matching-HashMicro-150x84.webp 150w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/05\/Three-Way-Matching-HashMicro-696x392.webp 696w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/05\/Three-Way-Matching-HashMicro-1068x601.webp 1068w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/a><\/p>\n<p>Perkembangan teknologi membuat proses operasional perusahaan semakin terstruktur dan berbasis data. Aktivitas yang sebelumnya dilakukan secara manual kini dapat dijalankan melalui sistem yang saling terintegrasi, sehingga alur kerja lebih konsisten dan mudah dipantau.<\/p>\n<p>Pada area procurement dan accounts payable, teknologi membantu memastikan alur dokumen berjalan selaras melalui mekanisme three way matching. Sistem mencocokkan purchase order, dokumen penerimaan, dan invoice secara otomatis berdasarkan metode pencocokan yang telah ditetapkan.<\/p>\n<p>Dengan dukungan teknologi digital, perusahaan seperti Marimas dapat mengelola proses operasional dengan lebih rapi dan terukur. Marimas memanfaatkan <a href=\"https:\/\/www.hashmicro.com\/id\/sistem-akuntansi\">sistem akuntansi untuk menyatukan pencatatan transaksi<\/a> pembelian, verifikasi dokumen, hingga pelaporan keuangan dalam satu alur yang konsisten.<\/p>\n<h2><b>Kesimpulan\u00a0<\/b><\/h2>\n<p>Three way matching menjadi bagian penting dalam menjaga keteraturan proses pembelian karena menyatukan alur pemesanan, penerimaan, dan penagihan dalam satu kerangka verifikasi.<\/p>\n<p>Proses ini membantu perusahaan membangun proses approval yang lebih terstruktur dan mudah ditelusuri. Tim procurement dan keuangan juga memiliki acuan yang sama saat melakukan pencatatan dan pengecekan transaksi.<\/p>\n<p>Seiring meningkatnya volume dan kompleksitas operasional, three way matching membantu dalam pengelolaan pembelian yang konsisten dan mendukung akurasi administrasi yang lebih rapi dan terkontrol.<\/p>\n<p><span style=\"font-weight: 400;\"><a href=\"https:\/\/www.hashmicro.com\/id\/sistem-akuntansi?medium=moneysite-banner\" target=\"_blank\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/01\/accounting-definitive.webp\" data-desktop-src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/01\/accounting-definitive.webp\" data-mobile-src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/01\/accounting-definitive-m.webp\" alt=\"Accounting_Definisi\" class=\"responsive-image-banner\"><\/a>\r\n\r\n<script>\r\n    \/\/ check which image to use based on screensize\r\n    document.addEventListener(\"DOMContentLoaded\", function() {\r\n        function updateImageSource() {\r\n            var images = document.querySelectorAll('.responsive-image-banner');\r\n            var screenWidth = window.innerWidth;\r\n\r\n            images.forEach(function(img) {\r\n                var mobileSrc = img.getAttribute('data-mobile-src');\r\n                var desktopSrc = img.getAttribute('data-desktop-src');\r\n\r\n                if (screenWidth < 576 && mobileSrc) {\r\n                    img.setAttribute('src', mobileSrc);\r\n                } else {\r\n                    img.setAttribute('src', desktopSrc);\r\n                }\r\n            });\r\n        }\r\n\r\n        \/\/ Initial check\r\n        updateImageSource();\r\n\r\n        \/\/ Update on resize\r\n        window.addEventListener('resize', updateImageSource);\r\n    });\r\n<\/script><\/span><\/p>\n<h2><strong>Pertanyaan Seputar Three Way Matching<\/strong><\/h2>\n<ul class=\"bottom_faq\">\n<li>\n<details>\n<summary><span style=\"background-color: #e8e8e8;\"><strong>Apa itu konsep 3 way matching?<\/strong><\/span><\/summary>\n<p>Three way matching adalah konsep pencocokan tiga dokumen, yaitu purchase order, receiving report, dan invoice untuk memastikan keakuratan transaksi sebelum melakukan pembayaran.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><span style=\"background-color: #e8e8e8;\"><strong>Apa saja syarat agar pencocokan 3 arah dapat berhasil?<\/strong><\/span><\/summary>\n<p>Agar pencocokan tiga arah berhasil, semua data dalam purchase order, receiving report, dan invoice harus sesuai dalam hal jumlah, harga, dan barang atau jasa yang tercantum.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><span style=\"background-color: #e8e8e8;\"><strong>Apa perbedaan utama antara 2 way matching, 3 way matching, dan 4 way matching?<\/strong><\/span><\/summary>\n<p>Perbedaan utama antara 2 way matching, 3 way matching, dan 4 way matching terletak pada jumlah dan jenis dokumen yang dicocokkan. Pada 2 way matching, perusahaan hanya mencocokkan purchase order dengan invoice. Sementara itu, 3 way matching menambahkan receiving report untuk memastikan barang benar-benar diterima. Sedangkan pada 4 way matching, perusahaan juga memverifikasi inspection report untuk memastikan kualitas barang sesuai sebelum melakukan pembayaran.<\/p>\n<\/details>\n<\/li>\n<\/ul>\n<p><script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [{\n    \"@type\": \"Question\",\n    \"name\": \"Apa itu konsep 3 way matching?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"Three way matching adalah konsep pencocokan tiga dokumen, yaitu purchase order, receiving report, dan invoice untuk memastikan keakuratan transaksi sebelum melakukan pembayaran.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"Apa saja syarat agar pencocokan 3 arah dapat berhasil?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"Agar pencocokan tiga arah berhasil, semua data dalam purchase order, receiving report, dan invoice harus sesuai dalam hal jumlah, harga, dan barang atau jasa yang tercantum.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"Apa perbedaan utama antara 2 way matching, 3 way matching, dan 4 way matching?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"Perbedaan utama antara 2 way matching, 3 way matching, dan 4 way matching terletak pada jumlah dan jenis dokumen yang dicocokkan. Pada 2 way matching, perusahaan hanya mencocokkan purchase order dengan invoice. Sementara itu, 3 way matching menambahkan receiving report untuk memastikan barang benar-benar diterima. Sedangkan pada 4 way matching, perusahaan juga memverifikasi inspection report untuk memastikan kualitas barang sesuai sebelum melakukan pembayaran.\"\n    }\n  }]\n}\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dalam operasional bisnis, transaksi pembelian melibatkan beberapa dokumen yang saling terhubung dari awal pemesanan sampai penagihan. Three way matching membantu memastikan hubungan antar dokumen itu tetap rapi dan konsisten. Metode ini bekerja dengan mencocokkan purchase order, receiving report, dan invoice sebelum transaksi diproses. Fokusnya adalah memastikan detail utama seperti item, jumlah, dan harga selaras di [&hellip;]<\/p>\n","protected":false},"author":164,"featured_media":162271,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1232],"tags":[],"class_list":{"0":"post-162269","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-accounting"},"acf":{"post_reviewer":""},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.1 (Yoast SEO v25.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Three Way Matching: Pengertian, Komponen, dan Cara Kerjanya<\/title>\n<meta name=\"description\" content=\"Three way matching adalah pencocokan antara purchase order, receiving report, dan invoice untuk memastikan keakuratan transaksi pembelian.\" \/>\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\/id\/blog\/three-way-matching\/\" \/>\n<meta property=\"og:locale\" content=\"id_ID\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Three Way Matching: Pengertian, Komponen, dan Cara Kerjanya\" \/>\n<meta property=\"og:description\" content=\"Three way matching adalah pencocokan antara purchase order, receiving report, dan invoice untuk memastikan keakuratan transaksi pembelian.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/three-way-matching\/\" \/>\n<meta property=\"og:site_name\" content=\"HashMicro Indonesia\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/hashmicro\" \/>\n<meta property=\"article:published_time\" content=\"2025-05-22T08:54:30+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-05T03:13:58+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/05\/Three-Way-Matching-Pengertian-Komponen-dan-Cara-Kerjanya.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"650\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Dewi Sartika\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@hashmicro\" \/>\n<meta name=\"twitter:site\" content=\"@hashmicro\" \/>\n<meta name=\"twitter:label1\" content=\"Ditulis oleh\" \/>\n\t<meta name=\"twitter:data1\" content=\"Dewi Sartika\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimasi waktu membaca\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 menit\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/three-way-matching\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/three-way-matching\/\"},\"author\":{\"name\":\"Dewi Sartika\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/9d2e46cf3129df0cdcfe1ea9bbdb74f1\"},\"headline\":\"Three Way Matching: Pengertian, Komponen, dan Cara Kerjanya\",\"datePublished\":\"2025-05-22T08:54:30+00:00\",\"dateModified\":\"2026-02-05T03:13:58+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/three-way-matching\/\"},\"wordCount\":1621,\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/three-way-matching\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/05\/Three-Way-Matching-Pengertian-Komponen-dan-Cara-Kerjanya.png\",\"articleSection\":[\"Accounting\"],\"inLanguage\":\"id\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/three-way-matching\/\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/three-way-matching\/\",\"name\":\"Three Way Matching: Pengertian, Komponen, dan Cara Kerjanya\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/three-way-matching\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/three-way-matching\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/05\/Three-Way-Matching-Pengertian-Komponen-dan-Cara-Kerjanya.png\",\"datePublished\":\"2025-05-22T08:54:30+00:00\",\"dateModified\":\"2026-02-05T03:13:58+00:00\",\"description\":\"Three way matching adalah pencocokan antara purchase order, receiving report, dan invoice untuk memastikan keakuratan transaksi pembelian.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/three-way-matching\/#breadcrumb\"},\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.hashmicro.com\/id\/blog\/three-way-matching\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/three-way-matching\/#primaryimage\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/05\/Three-Way-Matching-Pengertian-Komponen-dan-Cara-Kerjanya.png\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/05\/Three-Way-Matching-Pengertian-Komponen-dan-Cara-Kerjanya.png\",\"width\":1200,\"height\":650,\"caption\":\"three way matching\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/three-way-matching\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.hashmicro.com\/id\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Three Way Matching: Pengertian, Komponen, dan Cara Kerjanya\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#website\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/\",\"name\":\"HashMicro Indonesia\",\"description\":\"Blog Software Manajemen Bisnis Indonesia #1\",\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.hashmicro.com\/id\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"id\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#organization\",\"name\":\"HashMicro Indonesia\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/11\/hashmicro-logo-blog.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/11\/hashmicro-logo-blog.webp\",\"width\":924,\"height\":121,\"caption\":\"HashMicro Indonesia\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/hashmicro\",\"https:\/\/x.com\/hashmicro\",\"https:\/\/www.linkedin.com\/company\/hashmicro\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/9d2e46cf3129df0cdcfe1ea9bbdb74f1\",\"name\":\"Dewi Sartika\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Dewi-Sartika-2-96x96.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Dewi-Sartika-2-96x96.webp\",\"caption\":\"Dewi Sartika\"},\"description\":\"Berbekal pengalaman selama 6 tahun dalam industri SaaS, Dewi telah menjadi praktisi untuk penulisan artikel terkait accounting dan bidang keuangan. Ia berfokus menulis artikel seputar Laporan keuangan (neraca, laba rugi, arus kas), standar akuntansi (PSAK, IFRS, GAAP), perpajakan (e-faktur, PPn, tax planning), dan manajemen biaya.\",\"sameAs\":[\"https:\/\/www.hashmicro.com\/id\/\"],\"gender\":\"Perempuan\",\"knowsAbout\":[\"Akuntansi\",\"Keuangan\",\"Pembukuan\"],\"knowsLanguage\":[\"Inggris\",\"Indonesia\"],\"jobTitle\":\"Senior Content Writer\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/author\/dewisartika\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Three Way Matching: Pengertian, Komponen, dan Cara Kerjanya","description":"Three way matching adalah pencocokan antara purchase order, receiving report, dan invoice untuk memastikan keakuratan transaksi pembelian.","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\/id\/blog\/three-way-matching\/","og_locale":"id_ID","og_type":"article","og_title":"Three Way Matching: Pengertian, Komponen, dan Cara Kerjanya","og_description":"Three way matching adalah pencocokan antara purchase order, receiving report, dan invoice untuk memastikan keakuratan transaksi pembelian.","og_url":"https:\/\/www.hashmicro.com\/id\/blog\/three-way-matching\/","og_site_name":"HashMicro Indonesia","article_publisher":"https:\/\/www.facebook.com\/hashmicro","article_published_time":"2025-05-22T08:54:30+00:00","article_modified_time":"2026-02-05T03:13:58+00:00","og_image":[{"width":1200,"height":650,"url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/05\/Three-Way-Matching-Pengertian-Komponen-dan-Cara-Kerjanya.png","type":"image\/png"}],"author":"Dewi Sartika","twitter_card":"summary_large_image","twitter_creator":"@hashmicro","twitter_site":"@hashmicro","twitter_misc":{"Ditulis oleh":"Dewi Sartika","Estimasi waktu membaca":"10 menit"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hashmicro.com\/id\/blog\/three-way-matching\/#article","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/three-way-matching\/"},"author":{"name":"Dewi Sartika","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/9d2e46cf3129df0cdcfe1ea9bbdb74f1"},"headline":"Three Way Matching: Pengertian, Komponen, dan Cara Kerjanya","datePublished":"2025-05-22T08:54:30+00:00","dateModified":"2026-02-05T03:13:58+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/three-way-matching\/"},"wordCount":1621,"publisher":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#organization"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/three-way-matching\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/05\/Three-Way-Matching-Pengertian-Komponen-dan-Cara-Kerjanya.png","articleSection":["Accounting"],"inLanguage":"id"},{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/id\/blog\/three-way-matching\/","url":"https:\/\/www.hashmicro.com\/id\/blog\/three-way-matching\/","name":"Three Way Matching: Pengertian, Komponen, dan Cara Kerjanya","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/three-way-matching\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/three-way-matching\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/05\/Three-Way-Matching-Pengertian-Komponen-dan-Cara-Kerjanya.png","datePublished":"2025-05-22T08:54:30+00:00","dateModified":"2026-02-05T03:13:58+00:00","description":"Three way matching adalah pencocokan antara purchase order, receiving report, dan invoice untuk memastikan keakuratan transaksi pembelian.","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/three-way-matching\/#breadcrumb"},"inLanguage":"id","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/id\/blog\/three-way-matching\/"]}]},{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/three-way-matching\/#primaryimage","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/05\/Three-Way-Matching-Pengertian-Komponen-dan-Cara-Kerjanya.png","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/05\/Three-Way-Matching-Pengertian-Komponen-dan-Cara-Kerjanya.png","width":1200,"height":650,"caption":"three way matching"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/id\/blog\/three-way-matching\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/id\/blog\/"},{"@type":"ListItem","position":2,"name":"Three Way Matching: Pengertian, Komponen, dan Cara Kerjanya"}]},{"@type":"WebSite","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#website","url":"https:\/\/www.hashmicro.com\/id\/blog\/","name":"HashMicro Indonesia","description":"Blog Software Manajemen Bisnis Indonesia #1","publisher":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.hashmicro.com\/id\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"id"},{"@type":"Organization","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#organization","name":"HashMicro Indonesia","url":"https:\/\/www.hashmicro.com\/id\/blog\/","logo":{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/11\/hashmicro-logo-blog.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/11\/hashmicro-logo-blog.webp","width":924,"height":121,"caption":"HashMicro Indonesia"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/hashmicro","https:\/\/x.com\/hashmicro","https:\/\/www.linkedin.com\/company\/hashmicro"]},{"@type":"Person","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/9d2e46cf3129df0cdcfe1ea9bbdb74f1","name":"Dewi Sartika","image":{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/image\/","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Dewi-Sartika-2-96x96.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Dewi-Sartika-2-96x96.webp","caption":"Dewi Sartika"},"description":"Berbekal pengalaman selama 6 tahun dalam industri SaaS, Dewi telah menjadi praktisi untuk penulisan artikel terkait accounting dan bidang keuangan. Ia berfokus menulis artikel seputar Laporan keuangan (neraca, laba rugi, arus kas), standar akuntansi (PSAK, IFRS, GAAP), perpajakan (e-faktur, PPn, tax planning), dan manajemen biaya.","sameAs":["https:\/\/www.hashmicro.com\/id\/"],"gender":"Perempuan","knowsAbout":["Akuntansi","Keuangan","Pembukuan"],"knowsLanguage":["Inggris","Indonesia"],"jobTitle":"Senior Content Writer","url":"https:\/\/www.hashmicro.com\/id\/blog\/author\/dewisartika\/"}]}},"focus_keyword":"three way matching","order_j":"","_links":{"self":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/162269","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/users\/164"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/comments?post=162269"}],"version-history":[{"count":6,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/162269\/revisions"}],"predecessor-version":[{"id":188483,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/162269\/revisions\/188483"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media\/162271"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media?parent=162269"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/categories?post=162269"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/tags?post=162269"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}