{"id":189640,"date":"2026-02-24T16:25:21","date_gmt":"2026-02-24T09:25:21","guid":{"rendered":"https:\/\/www.hashmicro.com\/id\/blog\/?p=189640"},"modified":"2026-03-03T13:37:28","modified_gmt":"2026-03-03T06:37:28","slug":"hr-payroll","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/id\/blog\/hr-payroll\/","title":{"rendered":"Apa Itu HR Payroll? Pengertian, Komponen, Fungsi, dan Prosesnya"},"content":{"rendered":"<p>Proses penggajian karyawan melibatkan banyak komponen, seperti absensi, lembur, tunjangan, potongan pajak, dan iuran BPJS. Karena itu, perusahaan memerlukan pengelolaan yang rapi agar perhitungan gaji tetap akurat dan pembayaran dilakukan tepat waktu.<\/p>\n<p>Pengelolaan tersebut dilakukan melalui fungsi <b>HR payroll<\/b>. Dalam perusahaan, HR payroll berperan mengatur proses penggajian beserta administrasinya secara terstruktur. Artikel ini membahas pengertian HR payroll, komponen yang dikelola, fungsi, proses, dan pentingnya bagi perusahaan.<\/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\"><a href=\"#a\">HR payroll adalah fungsi<\/a> yang mengelola administrasi penggajian karyawan, termasuk perhitungan gaji, tunjangan, lembur, pajak, dan potongan.<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\">Komponen HR payroll terdiri<a href=\"#b\"> dari pendapatan dan potongan<\/a> yang dihitung untuk menghasilkan take-home pay secara akurat.<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"#c\">Proses payroll yang tertib<\/a> membantu perusahaan menjaga ketepatan pembayaran, administrasi, dan kepatuhan payroll.<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span data-sheets-root=\"1\"><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<h2><b>Apa Itu HR Payroll?<\/b><\/h2>\n<p><span id=\"a\">HR payroll adalah fungsi dalam pengelolaan sumber daya manusia yang menangani administrasi penggajian karyawan. Cakupannya meliputi perhitungan gaji, tunjangan, lembur, bonus, serta berbagai potongan seperti PPh 21 dan iuran BPJS, baik Kesehatan maupun Ketenagakerjaan.<\/span><\/p>\n<p>Tugas HR payroll tidak berhenti pada menghitung nominal gaji. <span id=\"c\">Biasanya, yang mengelola administrasi adalah <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/perbedaan-human-capital-dan-human-resource\/\">Human Resources (HR) yang berbeda dari human capital<\/a>.<\/span> Fungsi ini juga mencakup pemeriksaan data pendukung, ketepatan waktu pembayaran, dan pencatatan dokumen penggajian agar proses kompensasi berjalan tertib serta sesuai ketentuan perusahaan.<\/p>\n<h2><b>Komponen yang Dikelola dalam HR Payroll<\/b><\/h2>\n<div style=\"margin: 18px 0; border: 1px solid #f0e3e3; border-radius: 18px; background: #fffdfd; box-shadow: 0 6px 14px rgba(0,0,0,0.05); overflow: hidden;\">\n<p><!-- Header --><\/p>\n<div style=\"background: linear-gradient(90deg, #990000 0%, #b22222 100%); padding: 14px 16px;\">\n<div style=\"color: #ffffff; font-weight: bold; font-size: 16px; margin-bottom: 4px;\">Struktur Komponen HR Payroll<\/div>\n<div style=\"color: #ffeaea; font-size: 13px; line-height: 1.5;\">Komponen payroll umumnya terbagi menjadi pendapatan, potongan, lalu dihitung menjadi take-home pay.<\/div>\n<\/div>\n<p><!-- Body --><\/p>\n<div style=\"padding: 14px;\">\n<p><!-- 2 main columns --><\/p>\n<div style=\"display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 12px;\">\n<p><!-- Pendapatan --><\/p>\n<div style=\"border: 1px solid #f6d9d9; background: #fff7f7; border-radius: 14px; padding: 12px;\">\n<div style=\"display: inline-block; background: #990000; color: #fff; padding: 5px 10px; border-radius: 999px; font-size: 12px; font-weight: bold; margin-bottom: 10px;\">Komponen Pendapatan<\/div>\n<div style=\"margin-bottom: 8px; padding: 9px 10px; background: #ffffff; border: 1px solid #f1e5e5; border-radius: 10px;\">\n<div style=\"font-weight: bold; color: #222; font-size: 14px;\">Gaji Pokok<\/div>\n<div style=\"font-size: 12.5px; color: #555; line-height: 1.5;\">Imbalan dasar sesuai jabatan dan ketentuan perusahaan.<\/div>\n<\/div>\n<div style=\"margin-bottom: 8px; padding: 9px 10px; background: #ffffff; border: 1px solid #f1e5e5; border-radius: 10px;\">\n<div style=\"font-weight: bold; color: #222; font-size: 14px;\">Tunjangan Tetap \/ Tidak Tetap<\/div>\n<div style=\"font-size: 12.5px; color: #555; line-height: 1.5;\">Tunjangan rutin atau berdasarkan kondisi tertentu, seperti insentif dan uang makan.<\/div>\n<\/div>\n<div style=\"padding: 9px 10px; background: #ffffff; border: 1px solid #f1e5e5; border-radius: 10px;\">\n<div style=\"font-weight: bold; color: #222; font-size: 14px;\">Lembur<\/div>\n<div style=\"font-size: 12.5px; color: #555; line-height: 1.5;\">Tambahan upah atas jam kerja di luar jam kerja normal.<\/div>\n<\/div>\n<\/div>\n<p><!-- Potongan --><\/p>\n<div style=\"border: 1px solid #e2e8f7; background: #f8fbff; border-radius: 14px; padding: 12px;\">\n<div style=\"display: inline-block; background: #1f4e8c; color: #fff; padding: 5px 10px; border-radius: 999px; font-size: 12px; font-weight: bold; margin-bottom: 10px;\">Komponen Potongan<\/div>\n<div style=\"margin-bottom: 8px; padding: 9px 10px; background: #ffffff; border: 1px solid #e8eef8; border-radius: 10px;\">\n<div style=\"font-weight: bold; color: #222; font-size: 14px;\">PPh 21<\/div>\n<div style=\"font-size: 12.5px; color: #555; line-height: 1.5;\">Potongan pajak penghasilan karyawan sesuai ketentuan perpajakan.<\/div>\n<\/div>\n<div style=\"margin-bottom: 8px; padding: 9px 10px; background: #ffffff; border: 1px solid #e8eef8; border-radius: 10px;\">\n<div style=\"font-weight: bold; color: #222; font-size: 14px;\">BPJS<\/div>\n<div style=\"font-size: 12.5px; color: #555; line-height: 1.5;\">Iuran BPJS Kesehatan dan Ketenagakerjaan sesuai porsi yang berlaku.<\/div>\n<\/div>\n<div style=\"padding: 9px 10px; background: #ffffff; border: 1px solid #e8eef8; border-radius: 10px;\">\n<div style=\"font-weight: bold; color: #222; font-size: 14px;\">Potongan Lain<\/div>\n<div style=\"font-size: 12.5px; color: #555; line-height: 1.5;\">Misalnya pinjaman karyawan, iuran koperasi, atau potongan administratif lain.<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p><!-- Flow to THP --><\/p>\n<div style=\"margin-top: 12px; border: 1px dashed #e6d2d2; border-radius: 14px; background: #fffaf3; padding: 12px;\">\n<div style=\"display: flex; flex-wrap: wrap; align-items: center; gap: 8px; justify-content: center; text-align: center;\"><span style=\"background: #ffffff; border: 1px solid #f0dede; color: #7a1f1f; padding: 8px 12px; border-radius: 999px; font-size: 13px; font-weight: bold;\">Total Pendapatan<\/span><br \/>\n<span style=\"color: #a66; font-weight: bold; font-size: 14px;\">\u2212<\/span><br \/>\n<span style=\"background: #ffffff; border: 1px solid #dce6f6; color: #1f4e8c; padding: 8px 12px; border-radius: 999px; font-size: 13px; font-weight: bold;\">Total Potongan<\/span><br \/>\n<span style=\"color: #a66; font-weight: bold; font-size: 14px;\">=<\/span><br \/>\n<span style=\"background: #990000; color: #ffffff; padding: 8px 14px; border-radius: 999px; font-size: 13px; font-weight: bold;\">Take-Home Pay<\/span><\/div>\n<div style=\"margin-top: 8px; font-size: 12.5px; color: #666; text-align: center; line-height: 1.5;\">Take-home pay adalah gaji bersih yang diterima karyawan setelah seluruh komponen pendapatan dikurangi potongan.<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>HR payroll mengelola seluruh komponen yang memengaruhi jumlah gaji yang diterima karyawan. Setiap komponen perlu dicatat dan dihitung dengan tepat karena berhubungan langsung dengan hak karyawan, kewajiban perusahaan, dan ketepatan administrasi penggajian.<\/p>\n<p><span id=\"b\">Berikut komponen utama yang umumnya dikelola dalam HR payroll:<\/span><\/p>\n<h3><b>1. Gaji pokok<\/b><\/h3>\n<p>Gaji pokok adalah imbalan dasar yang menjadi hak karyawan sesuai jabatan, tanggung jawab, dan ketentuan perusahaan. Komponen ini menjadi dasar perhitungan beberapa komponen penggajian lainnya.<\/p>\n<h3><b>2. Tunjangan tetap dan tidak tetap<\/b><\/h3>\n<p>Tunjangan tetap diberikan secara rutin dalam periode tertentu, misalnya tunjangan jabatan atau tunjangan keluarga. Tunjangan tidak tetap diberikan sesuai kondisi tertentu, seperti insentif, komisi, uang makan, atau uang transport yang bergantung pada kehadiran maupun pencapaian.<\/p>\n<h3><b>3. Lembur<\/b><\/h3>\n<p>Lembur merupakan tambahan pembayaran atas pekerjaan yang dilakukan di luar jam kerja normal. Perhitungannya biasanya mengacu pada ketentuan jam kerja dan tarif lembur yang berlaku.<\/p>\n<h3><b>4. Pajak (PPh 21)<\/b><\/h3>\n<p>HR payroll juga mengelola pemotongan pajak penghasilan karyawan (PPh 21) sesuai ketentuan perpajakan. Komponen ini perlu dihitung dengan cermat agar jumlah potongan dan pelaporannya sesuai.<\/p>\n<h3><b>5. BPJS<\/b><\/h3>\n<p>Komponen ini mencakup iuran BPJS Kesehatan dan BPJS Ketenagakerjaan yang menjadi kewajiban perusahaan dan karyawan. HR perlu memastikan pemotongan dan pencatatannya dilakukan dengan benar pada setiap periode gaji.<\/p>\n<h3><b>6. Potongan lain<\/b><\/h3>\n<p>Selain pajak dan BPJS, payroll juga dapat mencakup potongan lain seperti pinjaman karyawan, iuran koperasi, atau potongan administratif lain sesuai kebijakan perusahaan.<\/p>\n<h3><b>7. Take-home pay<\/b><\/h3>\n<p>Take-home pay adalah jumlah gaji bersih yang diterima karyawan setelah seluruh komponen pendapatan dijumlahkan dan seluruh potongan dikurangkan. Nilai ini menjadi hasil akhir dari proses perhitungan payroll.<\/p>\n<h2><b>Fungsi HR Payroll bagi Perusahaan<\/b><\/h2>\n<p><span id=\"c\">HR payroll memiliki fungsi penting dalam menjaga proses penggajian tetap tertib, akurat, dan konsisten. Fungsi tersebut meliputi:<\/span><\/p>\n<h3><b>1. Menghitung gaji secara akurat berdasarkan data kerja<\/b><\/h3>\n<p>HR payroll bertugas menghitung gaji dari data yang benar-benar terjadi dalam periode berjalan, seperti kehadiran, keterlambatan, lembur, cuti, dan komponen tambahan lainnya. Fungsi ini penting karena kesalahan kecil pada input atau rumus dapat memengaruhi nominal gaji yang diterima karyawan.<\/p>\n<p>Selain menghitung, HR juga perlu memeriksa kesesuaian data sebelum gaji diproses. Dengan begitu, perusahaan dapat mengurangi risiko salah bayar, koreksi slip gaji, dan komplain setelah pembayaran dilakukan.<\/p>\n<h3><b>2. Mengelola komponen penggajian agar perhitungan konsisten<\/b><\/h3>\n<p>Setiap karyawan dapat memiliki komponen gaji yang berbeda, tergantung jabatan, status kerja, skema tunjangan, insentif, atau potongan yang berlaku. HR payroll berfungsi mengelola seluruh komponen tersebut agar perhitungan tetap konsisten antarperiode dan tidak berubah-ubah tanpa dasar yang jelas.<\/p>\n<p>Fungsi ini juga membantu perusahaan menjaga kerapian struktur penggajian. Saat komponen dikelola dengan baik, proses audit internal, pengecekan slip gaji, dan penelusuran selisih nominal menjadi lebih mudah.<\/p>\n<h3><b>3. Menjaga ketepatan waktu pembayaran gaji<\/b><\/h3>\n<p>Payroll juga berperan dalam memastikan seluruh tahapan penggajian selesai sesuai jadwal, mulai dari pengumpulan data, pemeriksaan, hingga finalisasi nominal gaji. Ketepatan waktu tidak hanya bergantung pada transfer bank, tetapi juga pada kesiapan data dan kelengkapan proses sebelumnya.<\/p>\n<p>Jika fungsi HR payroll berjalan tertib, perusahaan dapat mengurangi keterlambatan pembayaran yang berisiko mengganggu kepercayaan karyawan dan menambah beban administrasi karena revisi mendadak.<\/p>\n<h3><b>4. Mendukung kepatuhan terhadap kewajiban pajak dan iuran<\/b><\/h3>\n<p>Dalam proses payroll, perusahaan tidak hanya membayar gaji, tetapi juga menjalankan kewajiban pemotongan dan pencatatan seperti PPh 21 serta iuran BPJS. HR payroll membantu memastikan komponen tersebut dihitung dan dicatat sesuai ketentuan yang berlaku pada periode penggajian.<\/p>\n<p>Fungsi ini penting untuk mengurangi risiko kesalahan potong, selisih perhitungan, atau kendala administrasi yang dapat berdampak pada pelaporan dan kepatuhan perusahaan.<\/p>\n<h3><b>5. Mendukung transparansi dan ketertiban administrasi penggajian<\/b><\/h3>\n<p>Payroll juga berfungsi menjaga dokumentasi penggajian tetap rapi, mulai dari rekap komponen gaji, data pendukung, hingga slip gaji karyawan. Dokumentasi yang tertib memudahkan perusahaan saat perlu melakukan pengecekan ulang, klarifikasi, atau evaluasi proses payroll.<\/p>\n<p>Bagi karyawan, transparansi administrasi membantu mereka memahami komponen penghasilan dan potongan yang tercantum pada slip gaji. Hal ini dapat mengurangi kesalahpahaman dan membuat proses penggajian lebih jelas bagi kedua pihak.<\/p>\n<h2><b>Proses HR Payroll Secara Umum<\/b><\/h2>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-189645\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/proses-hr-payroll.webp\" alt=\"proses-hr-payroll\" width=\"1024\" height=\"1536\" srcset=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/proses-hr-payroll.webp 1024w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/proses-hr-payroll-200x300.webp 200w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/proses-hr-payroll-683x1024.webp 683w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/proses-hr-payroll-768x1152.webp 768w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/proses-hr-payroll-280x420.webp 280w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/proses-hr-payroll-150x225.webp 150w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/proses-hr-payroll-300x450.webp 300w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/proses-hr-payroll-696x1044.webp 696w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Proses payroll biasanya berjalan dalam beberapa tahap berurutan, dari pengumpulan data sampai arsip akhir. Urutan ini penting karena kesalahan pada tahap awal dapat terbawa sampai pembayaran gaji.<\/p>\n<h3><b>1. Mengumpulkan data<\/b><\/h3>\n<p>Tahap pertama adalah mengumpulkan data yang memengaruhi gaji pada periode berjalan, seperti absensi, keterlambatan, lembur, cuti, tunjangan, insentif, dan reimbursement. Jika data dari satu unit belum lengkap\u2014misalnya rekap lembur tim operasional belum masuk\u2014nominal gaji dapat diproses dengan angka yang belum final.<\/p>\n<h3><b>2. Menghitung komponen gaji dan potongan<\/b><\/h3>\n<p>Setelah data terkumpul, tim HR menghitung seluruh komponen pendapatan dan potongan, seperti gaji pokok, tunjangan, lembur, PPh 21, BPJS, dan potongan lain. Pada tahap ini, perubahan status tunjangan atau potongan yang belum diperbarui dapat membuat hasil take-home pay tidak sesuai.<\/p>\n<h3><b>3. Verifikasi<\/b><\/h3>\n<p>Sebelum gaji dibayarkan, hasil perhitungan diperiksa kembali untuk memastikan data dan nominal sudah benar. Tahap ini membantu menemukan komponen yang terlewat, duplikasi perhitungan, atau ketidaksesuaian antara data kehadiran dan perhitungan lembur sebelum slip gaji diterbitkan.<\/p>\n<h3><b>4. Distribusi slip gaji dan pembayaran<\/b><\/h3>\n<p>Setelah payroll final, perusahaan menerbitkan slip gaji dan memproses pembayaran ke rekening karyawan. Rincian pada slip gaji memudahkan penelusuran ketika ada pertanyaan terkait selisih nominal, karena komponen pendapatan dan potongan sudah tercatat dalam satu dokumen.<\/p>\n<h3><b>5. Pelaporan pajak dan BPJS<\/b><\/h3>\n<p>Setelah pembayaran dilakukan, HR payroll menyiapkan data untuk pelaporan potongan PPh 21 dan iuran BPJS sesuai ketentuan yang berlaku. Rekap payroll bulanan biasanya menjadi dasar untuk mencocokkan jumlah potongan yang dihitung saat penggajian dengan data yang akan dilaporkan.<\/p>\n<h3><b>6. Dokumentasi<\/b><\/h3>\n<p>Tahap terakhir adalah menyimpan dokumen payroll, seperti rekap perhitungan, slip gaji, bukti transfer, dan data pendukung lainnya. Saat muncul koreksi atau pertanyaan untuk periode sebelumnya, tim HR dapat menelusuri data lebih cepat jika arsip payroll tersusun rapi.<\/p>\n<p>HR payroll berperan penting dalam menjaga proses penggajian tetap akurat, tepat waktu, dan tertib secara administrasi. Fungsi ini mencakup pengelolaan komponen gaji, potongan, hingga <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/payroll-management\/\">dokumen payroll management<\/a> yang berdampak langsung pada operasional perusahaan dan kepercayaan karyawan.<\/p>\n<p>Dengan memahami komponen, fungsi, dan proses HR payroll, perusahaan dapat mengurangi risiko salah hitung, keterlambatan pembayaran, dan koreksi berulang. Jika proses payroll masih manual, evaluasi alur kerja dan kebutuhan sistem dapat menjadi langkah awal untuk merapikan proses penggajian.<\/p>\n<p><span data-sheets-root=\"1\"><\/span><\/p>\n<h2><strong>Frequently Asked Questions About HR Payroll<\/strong><\/h2>\n<ul class=\"bottom_faq\">\n<li>\n<details>\n<summary><strong>Apa itu HR payroll?<\/strong><\/summary>\n<p>HR payroll adalah fungsi dalam pengelolaan sumber daya manusia yang menangani administrasi penggajian karyawan, mulai dari perhitungan gaji, tunjangan, lembur, pajak, BPJS, hingga potongan lainnya.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Apa saja komponen yang dikelola dalam HR payroll?<\/strong><\/summary>\n<p>Komponen payroll umumnya mencakup gaji pokok, tunjangan tetap dan tidak tetap, lembur, potongan PPh 21, iuran BPJS, potongan lain, serta perhitungan take-home pay sebagai gaji bersih yang diterima karyawan.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Mengapa HR payroll penting bagi perusahaan?<\/strong><\/summary>\n<p>HR payroll penting karena membantu perusahaan menjaga akurasi perhitungan gaji, ketepatan waktu pembayaran, ketertiban administrasi penggajian, serta mendukung kepatuhan terhadap kewajiban pajak dan iuran tenaga kerja.<\/p>\n<\/details>\n<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Proses penggajian karyawan melibatkan banyak komponen, seperti absensi, lembur, tunjangan, potongan pajak, dan iuran BPJS. Karena itu, perusahaan memerlukan pengelolaan yang rapi agar perhitungan gaji tetap akurat dan pembayaran dilakukan tepat waktu. Pengelolaan tersebut dilakukan melalui fungsi HR payroll. Dalam perusahaan, HR payroll berperan mengatur proses penggajian beserta administrasinya secara terstruktur. Artikel ini membahas pengertian [&hellip;]<\/p>\n","protected":false},"author":223,"featured_media":189646,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[6],"tags":[],"class_list":{"0":"post-189640","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-hrm"},"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>Apa Itu HR Payroll? Pengertian, Komponen, Fungsi, dan Proses<\/title>\n<meta name=\"description\" content=\"HR payroll mencakup perhitungan gaji, potongan, dan administrasi penggajian. Simak fungsi, proses, serta peran pentingnya bagi perusahaan.\" \/>\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\/hr-payroll\/\" \/>\n<meta property=\"og:locale\" content=\"id_ID\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Apa Itu HR Payroll? Pengertian, Komponen, Fungsi, dan Prosesnya\" \/>\n<meta property=\"og:description\" content=\"HR payroll mencakup perhitungan gaji, potongan, dan administrasi penggajian. Simak fungsi, proses, serta peran pentingnya bagi perusahaan.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/hr-payroll\/\" \/>\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=\"2026-02-24T09:25:21+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-03T06:37:28+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/hr-payroll.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"675\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Nur Fi&#039;llia Nugrahani\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@hashmicro\" \/>\n<meta name=\"twitter:site\" content=\"@hashmicro\" \/>\n<meta name=\"twitter:label1\" content=\"Ditulis oleh\" \/>\n\t<meta name=\"twitter:data1\" content=\"Nur Fi&#039;llia Nugrahani\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimasi waktu membaca\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 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\/hr-payroll\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/hr-payroll\/\"},\"author\":{\"name\":\"Nur Fi'llia Nugrahani\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/116eac6e4748cbaa02f000016234fc39\"},\"headline\":\"Apa Itu HR Payroll? Pengertian, Komponen, Fungsi, dan Prosesnya\",\"datePublished\":\"2026-02-24T09:25:21+00:00\",\"dateModified\":\"2026-03-03T06:37:28+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/hr-payroll\/\"},\"wordCount\":1383,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/hr-payroll\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/hr-payroll.webp\",\"articleSection\":[\"HRM\"],\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.hashmicro.com\/id\/blog\/hr-payroll\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/hr-payroll\/\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/hr-payroll\/\",\"name\":\"Apa Itu HR Payroll? Pengertian, Komponen, Fungsi, dan Proses\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/hr-payroll\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/hr-payroll\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/hr-payroll.webp\",\"datePublished\":\"2026-02-24T09:25:21+00:00\",\"dateModified\":\"2026-03-03T06:37:28+00:00\",\"description\":\"HR payroll mencakup perhitungan gaji, potongan, dan administrasi penggajian. Simak fungsi, proses, serta peran pentingnya bagi perusahaan.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/hr-payroll\/#breadcrumb\"},\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.hashmicro.com\/id\/blog\/hr-payroll\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/hr-payroll\/#primaryimage\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/hr-payroll.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/hr-payroll.webp\",\"width\":1200,\"height\":675,\"caption\":\"hr payroll\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/hr-payroll\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.hashmicro.com\/id\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Apa Itu HR Payroll? Pengertian, Komponen, Fungsi, dan Prosesnya\"}]},{\"@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\/116eac6e4748cbaa02f000016234fc39\",\"name\":\"Nur Fi'llia Nugrahani\",\"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\/08\/cropped-foto-profil-nuri-96x96.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/08\/cropped-foto-profil-nuri-96x96.webp\",\"caption\":\"Nur Fi'llia Nugrahani\"},\"description\":\"Nuri adalah seorang spesialis dalam bidang inventory management dengan pengalaman 3 tahun. Berfokus pada penulisan yang mengangkat topik pengelolaan stok, pengendalian persediaan, dan implementasi sistem inventory digital untuk menjamin efisiensi operasional bisnis.\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/nur-fi-llia-nugrahani\"],\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/author\/fillia-nugrahani\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Apa Itu HR Payroll? Pengertian, Komponen, Fungsi, dan Proses","description":"HR payroll mencakup perhitungan gaji, potongan, dan administrasi penggajian. Simak fungsi, proses, serta peran pentingnya bagi perusahaan.","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\/hr-payroll\/","og_locale":"id_ID","og_type":"article","og_title":"Apa Itu HR Payroll? Pengertian, Komponen, Fungsi, dan Prosesnya","og_description":"HR payroll mencakup perhitungan gaji, potongan, dan administrasi penggajian. Simak fungsi, proses, serta peran pentingnya bagi perusahaan.","og_url":"https:\/\/www.hashmicro.com\/id\/blog\/hr-payroll\/","og_site_name":"HashMicro Indonesia","article_publisher":"https:\/\/www.facebook.com\/hashmicro","article_published_time":"2026-02-24T09:25:21+00:00","article_modified_time":"2026-03-03T06:37:28+00:00","og_image":[{"width":1200,"height":675,"url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/hr-payroll.webp","type":"image\/webp"}],"author":"Nur Fi'llia Nugrahani","twitter_card":"summary_large_image","twitter_creator":"@hashmicro","twitter_site":"@hashmicro","twitter_misc":{"Ditulis oleh":"Nur Fi'llia Nugrahani","Estimasi waktu membaca":"9 menit"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hashmicro.com\/id\/blog\/hr-payroll\/#article","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/hr-payroll\/"},"author":{"name":"Nur Fi'llia Nugrahani","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/116eac6e4748cbaa02f000016234fc39"},"headline":"Apa Itu HR Payroll? Pengertian, Komponen, Fungsi, dan Prosesnya","datePublished":"2026-02-24T09:25:21+00:00","dateModified":"2026-03-03T06:37:28+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/hr-payroll\/"},"wordCount":1383,"commentCount":0,"publisher":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#organization"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/hr-payroll\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/hr-payroll.webp","articleSection":["HRM"],"inLanguage":"id","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.hashmicro.com\/id\/blog\/hr-payroll\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/id\/blog\/hr-payroll\/","url":"https:\/\/www.hashmicro.com\/id\/blog\/hr-payroll\/","name":"Apa Itu HR Payroll? Pengertian, Komponen, Fungsi, dan Proses","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/hr-payroll\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/hr-payroll\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/hr-payroll.webp","datePublished":"2026-02-24T09:25:21+00:00","dateModified":"2026-03-03T06:37:28+00:00","description":"HR payroll mencakup perhitungan gaji, potongan, dan administrasi penggajian. Simak fungsi, proses, serta peran pentingnya bagi perusahaan.","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/hr-payroll\/#breadcrumb"},"inLanguage":"id","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/id\/blog\/hr-payroll\/"]}]},{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/hr-payroll\/#primaryimage","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/hr-payroll.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/hr-payroll.webp","width":1200,"height":675,"caption":"hr payroll"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/id\/blog\/hr-payroll\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/id\/blog\/"},{"@type":"ListItem","position":2,"name":"Apa Itu HR Payroll? Pengertian, Komponen, Fungsi, dan Prosesnya"}]},{"@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\/116eac6e4748cbaa02f000016234fc39","name":"Nur Fi'llia Nugrahani","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\/08\/cropped-foto-profil-nuri-96x96.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/08\/cropped-foto-profil-nuri-96x96.webp","caption":"Nur Fi'llia Nugrahani"},"description":"Nuri adalah seorang spesialis dalam bidang inventory management dengan pengalaman 3 tahun. Berfokus pada penulisan yang mengangkat topik pengelolaan stok, pengendalian persediaan, dan implementasi sistem inventory digital untuk menjamin efisiensi operasional bisnis.","sameAs":["https:\/\/www.linkedin.com\/in\/nur-fi-llia-nugrahani"],"url":"https:\/\/www.hashmicro.com\/id\/blog\/author\/fillia-nugrahani\/"}]}},"focus_keyword":"hr payroll","order_j":"","_links":{"self":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/189640","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\/223"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/comments?post=189640"}],"version-history":[{"count":3,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/189640\/revisions"}],"predecessor-version":[{"id":190220,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/189640\/revisions\/190220"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media\/189646"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media?parent=189640"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/categories?post=189640"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/tags?post=189640"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}