{"id":192030,"date":"2026-04-08T16:29:09","date_gmt":"2026-04-08T09:29:09","guid":{"rendered":"https:\/\/www.hashmicro.com\/id\/blog\/?p=192030"},"modified":"2026-04-08T16:29:09","modified_gmt":"2026-04-08T09:29:09","slug":"gaji-outsourcing","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/id\/blog\/gaji-outsourcing\/","title":{"rendered":"Cara Menghitung Gaji Outsourcing: Rumus, Contoh, dan Strategi"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">Sebagai pemberi kerja, Anda wajib membayar upah karyawan Anda dengan jumlah yang benar. Mereka berhak mendapatkan gaji outsourcing yang sesuai dengan pekerjaan dan kontrak mereka. Meskipun begitu, proses <\/span><i><span style=\"font-weight: 400;\">payroll<\/span><\/i><span style=\"font-weight: 400;\"> sering bermasalah.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Sebuah <\/span><a href=\"https:\/\/kpmg.com\/us\/en\/articles\/2026\/global-payroll-survey-report.html\"><span style=\"font-weight: 400;\">survei global oleh KPMG<\/span><\/a><span style=\"font-weight: 400;\"> menemukan bahwa penggajian seringkali mencakup 40% hingga 60% dari biaya operasional. Mereka juga menemukan bahwa kesalahan <\/span><i><span style=\"font-weight: 400;\">payroll<\/span><\/i><span style=\"font-weight: 400;\"> merugikan bisnis sebesar 2% hingga 4% dari biaya pekerja. Oleh karena itu, Anda perlu memahami cara menghitung upah gaji outsourcing dengan benar.\u00a0<\/span><\/p>\n<style>\r\n\t.takeaways-container {\r\n\t\tmargin: 20px 0;\r\n\t\tfont-family: sans-serif;\r\n\t}\r\n\t.box-content {\r\n\t\tbackground-color: #fffacd;\r\n\t\tbox-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);\r\n\t\tborder-radius: 25px;\r\n\t\tpadding: 25px;\r\n\t}\r\n\t.title {\r\n\t\tmargin-bottom: 20px;\r\n\t}\r\n\t.title p {\r\n\t\tdisplay: inline-block;\r\n\t\tbackground-color: #8A0E19;\r\n\t\tcolor: #ffffff;\r\n\t\tpadding: 8px 15px;\r\n\t\tborder-radius: 8px;\r\n\t\tfont-size: 22px;\r\n\t\tfont-weight: bold;\r\n\t\tmargin: 0;\r\n\t}\r\n\t.item {\r\n\t\tdisplay: flex;\r\n\t\talign-items: flex-start;\r\n\t\tmargin-bottom: 12px;\r\n\t}\r\n\t.item .circle {\r\n\t\twidth: 8px;\r\n\t\theight: 8px;\r\n\t\tbackground-color: #000000;\r\n\t\tborder-radius: 50%;\r\n\t\tmargin-right: 12px;\r\n\t\tflex-shrink: 0;\r\n\t\tmargin-top: 8px;\r\n\t}\r\n\t.item p {\r\n\t\tmargin: 0;\r\n\t\tfont-size: 16px;\r\n\t\tline-height: 1.6;\r\n\t}\r\n\t.item p a {\r\n\t\tcolor: #8A0E19;\r\n\t\tfont-weight: normal;\r\n\t\ttext-decoration: none;\r\n\t}\r\n\t.item p a:hover {\r\n\t\ttext-decoration: underline;\r\n\t}\r\n\t.button-wrapper {\r\n\t\tmargin-top: 25px;\r\n\t}\r\n\t.submit-button {\r\n\t\tbackground-color: #8a0e19;\r\n\t\tcolor: #fff !important;\r\n\t\ttransition: all .3s ease;\r\n\t\tpadding: 12px 28px;\r\n\t\tdisplay: inline-block;\r\n\t\tborder-radius: 12px;\r\n\t\tfont-size: 16px;\r\n\t\tfont-weight: bold;\r\n\t\ttext-decoration: none;\r\n\t}\r\n\t.submit-button:hover {\r\n\t\tbackground-color: #991b26;\r\n\t}\r\n\t@media (max-width: 767px) {\r\n\t\t.takeaways-container {\r\n\t\t\theight: auto;\r\n\t\t\tpadding: 0;\r\n\t\t}\r\n\t\t.box-content {\r\n\t\t\tpadding: 24px;\r\n\t\t}\r\n\t\t.content,\r\n\t\t.main-content,\r\n\t\t.list-item {\r\n\t\t\twidth: 100%;\r\n\t\t}\r\n\t}\r\n<\/style>\r\n\r\n<div class=\"takeaways-container\">\r\n\t<div class=\"box-content\">\r\n\t\t<div class=\"content\">\r\n\t\t\t<div class=\"title\">\r\n\t\t\t\t<p>Key Takeaways<\/p>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"main-content\">\r\n\t\t\t\t<div class=\"list-item\">\r\n\t\t\t\t\t<div class=\"item\">    <div class=\"circle\"><\/div>    <p>Outsourcing adalah praktik menyerahkan sebagian pekerjaan kepada penyedia jasa melalui perjanjian kerja sama tertulis.<\/p><\/div><div class=\"item\">    <div class=\"circle\"><\/div>    <p>Sebelum menghitung gaji outsourcing, pastikan angka gaji pokok, tunjangan, potongan gaji, dan bonus atau insentif akurat.<\/p><\/div><div class=\"item\">    <div class=\"circle\"><\/div>    <p>Rumus upah karyawan outsourcing adalah (upah pokok + tunjangan) - potongan upah.<\/p><\/div>\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n<!-- \t\t\t<div class=\"button-wrapper\">\r\n\t\t\t\t<a href=\"https:\/\/www.equiperp.com\/tour-produk-gratis\/?medium=key-takeaways\" class=\"submit-button\">Klik untuk Demo Gratis!<\/a>\r\n\t\t\t<\/div> -->\r\n\t\t<\/div>\r\n\t<\/div>\r\n<\/div>\n<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\n<h2><b>Pengertian Outsourcing dan Karyawan Outsourcing<\/b><\/h2>\n<p><i><span style=\"font-weight: 400;\">Outsourcing<\/span><\/i><span style=\"font-weight: 400;\"> adalah praktik di mana sebuah perusahaan menyerahkan sebagian pekerjaan kepada penyedia jasa<\/span><span style=\"font-weight: 400;\">. Dalam perjanjian ini, bisnis user akan menggunakan pekerja PKWT dan PKWTT bisnis vendor untuk jangka waktu tertentu. Namun, perusahaan outsourcing tetap bertanggung jawab atas kesejahteraan dan gaji karyawannya, sesuai <\/span><a href=\"https:\/\/peraturan.bpk.go.id\/Details\/246523\/uu-no-6-tahun-2023\"><span style=\"font-weight: 400;\">UU No. 6 Tahun 2023<\/span><\/a><span style=\"font-weight: 400;\">.\u00a0<\/span><\/p>\n<p><a href=\"https:\/\/www.hashmicro.com\/id\/blog\/sistem-kontrak-kerja-indonesia\/\"><span style=\"font-weight: 400;\">Jenis kontrak pekerja outsourcing<\/span><\/a><span style=\"font-weight: 400;\"> dengan perusahaan penyedia jasa mempengaruhi gaji mereka. Meskipun pekerja PKWT dan PKWTT berhak atas THR, pekerja PKWT seringkali mendapatkan tunjangan yang lebih sedikit daripada pekerja PKWTT. Jadi, Anda harus memperhatikan jenis kontrak sebelum menentukan gaji mereka.\u00a0<\/span><\/p>\n<h2><b>Apa yang Perlu Diperhatikan Selama Penggajian?<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Ada beberapa hal yang perlu Anda perhatikan sebelum melakukan pembayaran gaji:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Komposisi komponen:<\/b><span style=\"font-weight: 400;\"> Upah karyawan dapat terdiri atas upah pokok; upah pokok dan tunjangan tetap; upah pokok, tunjangan tetap, dan tunjangan tidak tetap; atau upah pokok dan tunjangan tidak tetap. Anda perlu mengetahui ini untuk menghitung upah lembur (<\/span><a href=\"https:\/\/peraturan.bpk.go.id\/Details\/161904\/pp-no-35-tahun-2021\"><span style=\"font-weight: 400;\">PP No. 35 Tahun 2021<\/span><\/a><span style=\"font-weight: 400;\">).\u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Upah lembur:<\/b><span style=\"font-weight: 400;\"> Pekerja eksternal berhak mendapatkan upah lembur apabila mereka bekerja di luar jam kerja. <\/span><span style=\"font-weight: 400;\">Ini tidak termasuk sektor industri atau pekerjaan tertentu (<\/span><a href=\"https:\/\/peraturan.bpk.go.id\/Details\/246523\/uu-no-6-tahun-2023\"><span style=\"font-weight: 400;\">UU No. 6 Tahun 2023<\/span><\/a><span style=\"font-weight: 400;\">)<\/span><span style=\"font-weight: 400;\">.\u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>THR, bonus dan insentif<\/b><span style=\"font-weight: 400;\">: Perusahaan wajib membayar THR kepada karyawan outsourcing. Hal ini juga berlaku untuk bonus dan insentif, asalkan sesuai dengan kebijakan perusahaan (<\/span><a href=\"https:\/\/peraturan.bpk.go.id\/Details\/161909\/pp-no-36-tahun-2021\"><span style=\"font-weight: 400;\">PP No. 36 Tahun 2021<\/span><\/a><span style=\"font-weight: 400;\">).\u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Pembayaran gaji:<\/b><span style=\"font-weight: 400;\"> Perusahaan tidak wajib membayar upah jika karyawan tidak masuk kerja. Namun, ini tidak berlaku untuk pekerja yang memenuhi persyaratan Pasal 40 ayat (2) (<\/span><a href=\"https:\/\/peraturan.bpk.go.id\/Details\/161909\/pp-no-36-tahun-2021\"><span style=\"font-weight: 400;\">PP No. 36 Tahun 2021<\/span><\/a><span style=\"font-weight: 400;\">).<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Pemotongan gaji:<\/b><span style=\"font-weight: 400;\"> Perusahaan berhak untuk memotong gaji pekerja untuk membayar hal-hal yang tercantum dalam Pasal 63 ayat (1). Meskipun demikian, total pemotongan maksimum adalah 50% dari setiap pembayaran gaji (<\/span><a href=\"https:\/\/peraturan.bpk.go.id\/Details\/161909\/pp-no-36-tahun-2021\"><span style=\"font-weight: 400;\">PP No. 36 Tahun 2021<\/span><\/a><span style=\"font-weight: 400;\">).<\/span><\/li>\n<\/ul>\n<p><b>Catatan<\/b><span style=\"font-weight: 400;\">: <\/span><i><span style=\"font-weight: 400;\">List<\/span><\/i><span style=\"font-weight: 400;\"> di atas adalah rangkuman dari berbagai regulasi yang berlaku<\/span><span style=\"font-weight: 400;\">. Agar Anda memahami informasi spesifik, seperti jenis upah dan hak atas upah tersebut; Anda perlu <\/span><a href=\"https:\/\/www.hashmicro.com\/id\/blog\/uu-ketenagakerjaan-terbaru\/\"><span style=\"font-weight: 400;\">membaca UU Ketenagakerjaan<\/span><\/a><span style=\"font-weight: 400;\"> dengan seksama.\u00a0<\/span><\/p>\n<h2><b>Komponen-Komponen Gaji Karyawan Outsourcing<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Saat Anda mulai menghitung gaji, Anda perlu memiliki data lengkap tentang hal-hal berikut:<\/span><\/p>\n<ul>\n<li><b>Gaji pokok<\/b><span style=\"font-weight: 400;\">: upah dasar dari perusahaan. Berdasarkan <\/span><b>UU No. 6 Tahun 2023<\/b><span style=\"font-weight: 400;\">, gaji pokok minimal 75% dari total gaji pokok dan tunjangan tetap.\u00a0<\/span><\/li>\n<li><b>Tunjangan tetap<\/b><span style=\"font-weight: 400;\">: tunjangan yang bersifat rutin, seperti tunjangan kesehatan dan tunjangan keluarga.\u00a0<\/span><\/li>\n<li><b>Tunjangan tidak tetap<\/b><span style=\"font-weight: 400;\">: tunjangan yang tergantung pada kinerja atau kehadiran pekerja, seperti tunjangan lembur dan tunjangan cuti tahunan.<\/span><\/li>\n<li><b>Potongan upah<\/b><span style=\"font-weight: 400;\">: pemotongan upah akibat regulasi atau tindakan disiplin. Potongan ini dapat berupa <\/span><a href=\"https:\/\/djpb.kemenkeu.go.id\/kppn\/tapaktuan\/id\/informasi\/perpajakan\/pph-pasal-21.html\"><span style=\"font-weight: 400;\">pemotongan PPh 21<\/span><\/a><span style=\"font-weight: 400;\">, iuran BPJS Kesehatan, ganti rugi, atau pembayaran uang muka.\u00a0<\/span><\/li>\n<li><b>Bonus dan insentif<\/b><span style=\"font-weight: 400;\">: tambahan penghasilan pekerja untuk menunjukkan apresiasi perusahaan ketika mereka, tim mereka, atau perusahaan secara keseluruhan mencapai target.<\/span><\/li>\n<\/ul>\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=\"\">Jenis Tunjangan Karyawan yang Wajib Dipahami HR dan Manajer<\/a><\/span>\r\n<\/div>\n<h2><b>Cara Menghitung Gaji Outsourcing<\/b><\/h2>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-192037 aligncenter\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/Rumus-Gaji-Karyawan-Outsourcing-scaled.webp\" alt=\"rumus-gaji-karyawan-outsourcing\" width=\"2560\" height=\"1396\" srcset=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/Rumus-Gaji-Karyawan-Outsourcing-scaled.webp 2560w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/Rumus-Gaji-Karyawan-Outsourcing-300x164.webp 300w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/Rumus-Gaji-Karyawan-Outsourcing-1024x559.webp 1024w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/Rumus-Gaji-Karyawan-Outsourcing-768x419.webp 768w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/Rumus-Gaji-Karyawan-Outsourcing-1536x838.webp 1536w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/Rumus-Gaji-Karyawan-Outsourcing-2048x1117.webp 2048w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/Rumus-Gaji-Karyawan-Outsourcing-770x420.webp 770w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/Rumus-Gaji-Karyawan-Outsourcing-150x82.webp 150w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/Rumus-Gaji-Karyawan-Outsourcing-696x380.webp 696w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/Rumus-Gaji-Karyawan-Outsourcing-1068x583.webp 1068w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/Rumus-Gaji-Karyawan-Outsourcing-1920x1047.webp 1920w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Perhitungan gaji karyawan outsourcing dengan kontrak PKWT dan PKWTT menggunakan rumus yang sama, yaitu:<\/span><\/p>\n<div style=\"background: linear-gradient(135deg,#fff 0%,#fbeaea 100%); border-left: 6px solid #990000; border-radius: 10px; padding: 20px; margin: 24px 0; text-align: center; box-shadow: 0 6px 14px rgba(0,0,0,.08);\"><span style=\"color: #7a0000; font-family: Nunito Sans, Segoe UI, Arial, sans-serif;\"><span style=\"font-size: 20px;\"><b>(gaji pokok + tunjangan tetap + tunjangan tidak tetap) &#8211; potongan gaji<\/b><\/span><\/span><\/div>\n<p><span style=\"font-weight: 400;\">Namun, gunakan rumus ini untuk pekerja kontrak yang masuk atau keluar di tengah bulan:<\/span><\/p>\n<div style=\"background: linear-gradient(135deg,#fff 0%,#fbeaea 100%); border-left: 6px solid #990000; border-radius: 10px; padding: 20px; margin: 24px 0; text-align: center; box-shadow: 0 6px 14px rgba(0,0,0,.08);\"><span style=\"color: #7a0000; font-family: Nunito Sans, Segoe UI, Arial, sans-serif;\"><span style=\"font-size: 20px;\"><b>(jumlah hari kerja masuk \/ total hari kerja dalam sebulan) x gaji satu bulan<\/b><\/span><\/span><\/div>\n<h2><b>Contoh Gaji Pekerja Outsourcing<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Sebagai gambaran, berikut contoh praktis perhitungan gaji outsourcing dua pekerja eksternal di PT XYZ.\u00a0\u00a0<\/span><\/p>\n<h3><b>1. Contoh gaji pekerja outsourcing<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Alice adalah seorang <\/span><i><span style=\"font-weight: 400;\">web developer<\/span><\/i><span style=\"font-weight: 400;\"> dari perusahaan penyedia jasa. Dia telah bekerja di PT XYZ selama dua tahun. Setiap bulan, ia menerima gaji pokok sebesar <\/span><b>Rp4.500.000<\/b><span style=\"font-weight: 400;\">, dengan tunjangan bulanan sekitar <\/span><b>Rp450.000<\/b><span style=\"font-weight: 400;\">. Bulan ini, Alice bekerja lembur selama 6 jam, yang dibagi selama 3 hari. Berdasarkan keterangan ini, Anda akan menggunakan rumus biasa, seperti:<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Gaji = (Rp4.500.000 + Rp450.000 + Rp273.126) &#8211; Rp208.924<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Gaji = Rp5.014.202<\/span><\/p>\n<h3><b>2. Contoh gaji prorata karyawan eksternal<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Sementara itu, Bob adalah seorang <\/span><i><span style=\"font-weight: 400;\">web developer<\/span><\/i><span style=\"font-weight: 400;\"> outsourcing baru. Gaji dia sebesar <\/span><b>Rp4.500.000<\/b><span style=\"font-weight: 400;\">, tetapi dia baru bergabung pada tanggal <\/span><b>14 April<\/b><span style=\"font-weight: 400;\">. Karena itu, Anda perlu menggunakan rumus gaji prorata untuk menghitung upahnya, seperti:<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Gaji = 12 \/ 20 x Rp4.500.000<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Gaji = Rp2.700.000<\/span><\/p>\n<h2><b>Kesalahan Umum dalam Menghitung Gaji Outsourcing<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Ketika menghitung upah, Anda menghindari dua kesalahan umum, yakni:<\/span><\/p>\n<h3><b>1. Data yang tidak akurat<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Data yang tidak akurat akan memengaruhi perhitungan pekerja eksternal. Misalnya, Anda perlu data absensi dan lembur untuk menghitung tunjangan lembur dan insentif. <\/span><a href=\"https:\/\/www.hashmicro.com\/id\/blog\/tips-menghitung-upah-lembur-karyawan\/\"><span style=\"font-weight: 400;\">Apabila upah lembur<\/span><\/a><span style=\"font-weight: 400;\"> tidak sesuai dengan jumlah waktu lembur, Anda berisiko disanksi atau membayar <\/span><i><span style=\"font-weight: 400;\">backpay<\/span><\/i><span style=\"font-weight: 400;\">. Sebaliknya, moral karyawan bisa menurun jika jumlah insentif mereka tidak tepat.\u00a0<\/span><\/p>\n<h3><b>2. Tidak ada prosedur perhitungan<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Prosedur perhitungan gaji harus konsisten. Mengubah rumus, metode, alur dan format di tengah jalan hanya akan membingungkan orang dan meningkatkan risiko salah hitung. Setiap kali ada kesalahan, Anda perlu menghitung ulang, sehingga memperlambat dan mempersulit proses penggajian.\u00a0<\/span><\/p>\n<h2><b>Strategi Menghitung dan Mengelola Gaji Outsourcing<\/b><\/h2>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-192036 aligncenter\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/Strategi-Mengelola-Gaji-Outsourcing.webp\" alt=\"strategi-mengelola-gaji-outsourcing\" width=\"800\" height=\"400\" srcset=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/Strategi-Mengelola-Gaji-Outsourcing.webp 800w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/Strategi-Mengelola-Gaji-Outsourcing-300x150.webp 300w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/Strategi-Mengelola-Gaji-Outsourcing-768x384.webp 768w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/Strategi-Mengelola-Gaji-Outsourcing-150x75.webp 150w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/Strategi-Mengelola-Gaji-Outsourcing-696x348.webp 696w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Sejalan dengan perhitungan gaji karyawan outsourcing, Anda perlu mengelola prosesnya. Berikut beberapa cara untuk meningkatkan perhitungan dan manajemen <\/span><i><span style=\"font-weight: 400;\">payroll<\/span><\/i><span style=\"font-weight: 400;\">:<\/span><\/p>\n<h3><b>1. Standarisasi perhitungan dan SOP<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Tetapkan standar operasional prosedur (SOP) yang jelas. Prosedur yang baik harus mencakup format dan alur <\/span><i><span style=\"font-weight: 400;\">payroll<\/span><\/i><span style=\"font-weight: 400;\">. Misalnya, Anda menghitung gaji bersih dan kemudian <\/span><i><span style=\"font-weight: 400;\">vendor bill<\/span><\/i><span style=\"font-weight: 400;\"> di dua halaman standar dan terpisah. Ini akan menyederhanakan pelacakan dan pembukuan keuangan perusahaan Anda.\u00a0<\/span><\/p>\n<h3><b>2. Gunakan sistem HRIS<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Sebelum menghitung upah, beralih ke <\/span><a href=\"https:\/\/www.hashmicro.com\/id\/blog\/apa-itu-hris-pengertian-fungsi-hrm-software\/\"><span style=\"font-weight: 400;\">sistem HRIS terlebih dahulu<\/span><\/a><span style=\"font-weight: 400;\">. <\/span><i><span style=\"font-weight: 400;\">Software<\/span><\/i><span style=\"font-weight: 400;\"> ini bisa mencatat dan menyimpan data kehadiran secara <\/span><i><span style=\"font-weight: 400;\">real-time<\/span><\/i><span style=\"font-weight: 400;\">. Apabila Anda mengintegrasikan <\/span><i><span style=\"font-weight: 400;\">software payroll<\/span><\/i><span style=\"font-weight: 400;\"> dengan sistem, Anda bisa mengotomatiskan proses penggajian dalam satu platform. Anda juga dapat mengatur sistem agar sesuai dengan prosedur perusahaan dan aturan ketenagakerjaan yang berlaku.<\/span><\/p>\n<h3><b>3. Pakai Employee Self-Service (ESS)<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Untuk mengurangi beban kerja HR, sediakan platform ESS. Karyawan eksternal dapat mengakses data pribadi dan layanan administrasi secara mandiri. Hal ini menghilangkan waktu yang dihabiskan untuk menanggapi permintaan rutin, seperti pengajuan cuti. Selain itu, sistem ini memudahkan pencatatan data dan <\/span><i><span style=\"font-weight: 400;\">audit<\/span><\/i><span style=\"font-weight: 400;\"> internal.<\/span><\/p>\n<h3><b>4. HR audit secara berkala<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Lakukan audit prosedur penggajian dan sistem HRIS setiap kuartal atau tahun. Ketika ada regulasi ketenagakerjaan baru, periksa kesesuaian SOP dengan peraturan tersebut. Dengan cara ini, Anda dapat memastikan kepatuhan perusahaan terhadap aturan yang berlaku, seperti <\/span><b>UU No. 6 Tahun 2023<\/b><span style=\"font-weight: 400;\">. Secara bersamaan, Anda juga bisa mengidentifikasi dan memperbaiki area yang bermasalah.\u00a0<\/span><\/p>\n<h2><b>Kesimpulan<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Saat Anda menghitung gaji outsourcing, Anda harus memastikan akurasi setiap komponen. Upah pokok minimal harus 75% dari jumlah total upah dan tunjangan tetap. Pemotongan gaji dan gaji lembur pun juga harus tepat dan sesuai regulasi.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Agar proses penggajian <\/span><span style=\"font-weight: 400;\">pekerja eksternal<\/span><span style=\"font-weight: 400;\"> berjalan dengan baik, Anda perlu menerapkan manajemen penggajian. Gunakan sistem HRIS yang telah terintegrasi dengan aplikasi, seperti <\/span><i><span style=\"font-weight: 400;\">software<\/span><\/i><span style=\"font-weight: 400;\"> absensi dan <\/span><i><span style=\"font-weight: 400;\">payroll<\/span><\/i><span style=\"font-weight: 400;\">. Terapkan SOP dan lakukan audit secara berkala. Melalui ini, Anda tidak perlu khawatir tentang data keuangan dan <\/span><i><span style=\"font-weight: 400;\">payroll<\/span><\/i><span style=\"font-weight: 400;\"> yang salah.\u00a0<\/span><\/p>\n<h2><strong>Pertanyaan Seputar Gaji Outsourcing<\/strong><\/h2>\n<ul class=\"bottom_faq\">\n<li>\n<details>\n<summary><b>Apakah gaji outsourcing dikenakan pajak?<\/b><\/summary>\n<p><span style=\"font-weight: 400;\">Ya, karyawan eksternal dapat dikenai pajak berdasarkan regulasi yang berlaku, seperti PPh 21. Potongan ini didasarkan pada sistem progresif, jadi Anda harus menyusun SOP Anda untuk mematuhi aturan ini. <\/span><\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><b>Apakah gaji outsourcing harus sesuai dengan UMR?<\/b><\/summary>\n<p><span style=\"font-weight: 400;\">Ya, karyawan outsourcing berhak menerima gaji sesuai dengan standar UMR. <\/span><b>PP No. 36 Tahun 2021<\/b><span style=\"font-weight: 400;\"> menetapkan bahwa perusahaan tidak boleh membayar gaji dibawah upah minimum. Jadi, perhatikan upah minimum di daerah Anda karena ada penyesuaian upah minimum setiap tahun.<\/span><\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><b>Bisakah pekerja eksternal naik gaji?<\/b><\/summary>\n<p><span style=\"font-weight: 400;\">Ya, gaji seorang pekerja outsourcing dapat dinaikkan, jika ia memenuhi syarat-syarat yang tertulis dalam kontraknya dengan perusahaan penyedia jasa.<\/span><span style=\"font-weight: 400;\"> Karena itu, Anda perlu memahami dan menyimpan kontrak outsourcing dengan rapi. <\/span><\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><b>Bagaimana cara menentukan gaji pokok?<\/b><\/summary>\n<p><span style=\"font-weight: 400;\">Tidak ada cara pasti untuk menentukan gaji pokok. Anda bisa menghitung berdasarkan jam kerja (per hari atau per bulan) dan\/atau hasil kerja. Ingatlah untuk menggunakan struktur dan skala upah sebagai pedoman dalam menentukan gaji. <\/span><\/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\": \"Apakah gaji outsourcing dikenakan pajak?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"Ya, karyawan eksternal dapat dikenai pajak berdasarkan regulasi yang berlaku, seperti PPh 21. Potongan ini didasarkan pada sistem progresif, jadi Anda harus menyusun SOP Anda untuk mematuhi aturan ini.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"Apakah gaji outsourcing harus sesuai dengan UMR?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"Ya, karyawan outsourcing berhak menerima gaji sesuai dengan standar UMR. PP No. 36 Tahun 2021 menetapkan bahwa perusahaan tidak boleh membayar gaji dibawah upah minimum. Jadi, perhatikan upah minimum di daerah Anda karena ada penyesuaian upah minimum setiap tahun.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"Bisakah pekerja eksternal naik gaji?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"Ya, gaji seorang pekerja outsourcing dapat dinaikkan, jika ia memenuhi syarat-syarat yang tertulis dalam kontraknya dengan perusahaan penyedia jasa. Karena itu, Anda perlu memahami dan menyimpan kontrak outsourcing dengan rapi.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"Bagaimana cara menentukan gaji pokok?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"Tidak ada cara pasti untuk menentukan gaji pokok. Anda bisa menghitung berdasarkan jam kerja (per hari atau per bulan) dan\/atau hasil kerja. Ingatlah untuk menggunakan struktur dan skala upah sebagai pedoman dalam menentukan gaji.\"\n    }\n  }]\n}\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Sebagai pemberi kerja, Anda wajib membayar upah karyawan Anda dengan jumlah yang benar. Mereka berhak mendapatkan gaji outsourcing yang sesuai dengan pekerjaan dan kontrak mereka. Meskipun begitu, proses payroll sering bermasalah.\u00a0 Sebuah survei global oleh KPMG menemukan bahwa penggajian seringkali mencakup 40% hingga 60% dari biaya operasional. Mereka juga menemukan bahwa kesalahan payroll merugikan bisnis [&hellip;]<\/p>\n","protected":false},"author":218,"featured_media":192035,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[6],"tags":[],"class_list":{"0":"post-192030","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>Cara Menghitung Gaji Outsourcing: Rumus, Contoh, dan Strategi &#187; HashMicro Indonesia<\/title>\n<meta name=\"description\" content=\"Pelajari rumus, contoh praktis, dan strategi menghitung dan mengelola gaji karyawan outsourcing dalam artikel ini.\" \/>\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\/gaji-outsourcing\/\" \/>\n<meta property=\"og:locale\" content=\"id_ID\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Cara Menghitung Gaji Outsourcing: Rumus, Contoh, dan Strategi\" \/>\n<meta property=\"og:description\" content=\"Pelajari rumus, contoh praktis, dan strategi menghitung dan mengelola gaji karyawan outsourcing dalam artikel ini.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/gaji-outsourcing\/\" \/>\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-04-08T09:29:09+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/Cara-Menghitung-Gaji-Outsourcing.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"400\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Reno Wicaksana\" \/>\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=\"Reno Wicaksana\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimasi waktu membaca\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 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\/gaji-outsourcing\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/gaji-outsourcing\/\"},\"author\":{\"name\":\"Reno Wicaksana\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/0d3340f667908102d8894da18f80732e\"},\"headline\":\"Cara Menghitung Gaji Outsourcing: Rumus, Contoh, dan Strategi\",\"datePublished\":\"2026-04-08T09:29:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/gaji-outsourcing\/\"},\"wordCount\":1289,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/gaji-outsourcing\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/Cara-Menghitung-Gaji-Outsourcing.webp\",\"articleSection\":[\"HRM\"],\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.hashmicro.com\/id\/blog\/gaji-outsourcing\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/gaji-outsourcing\/\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/gaji-outsourcing\/\",\"name\":\"Cara Menghitung Gaji Outsourcing: Rumus, Contoh, dan Strategi &#187; HashMicro Indonesia\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/gaji-outsourcing\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/gaji-outsourcing\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/Cara-Menghitung-Gaji-Outsourcing.webp\",\"datePublished\":\"2026-04-08T09:29:09+00:00\",\"description\":\"Pelajari rumus, contoh praktis, dan strategi menghitung dan mengelola gaji karyawan outsourcing dalam artikel ini.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/gaji-outsourcing\/#breadcrumb\"},\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.hashmicro.com\/id\/blog\/gaji-outsourcing\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/gaji-outsourcing\/#primaryimage\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/Cara-Menghitung-Gaji-Outsourcing.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/Cara-Menghitung-Gaji-Outsourcing.webp\",\"width\":800,\"height\":400,\"caption\":\"cara-menghitung-gaji-outsourcing\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/gaji-outsourcing\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.hashmicro.com\/id\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Cara Menghitung Gaji Outsourcing: Rumus, Contoh, dan Strategi\"}]},{\"@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\/0d3340f667908102d8894da18f80732e\",\"name\":\"Reno Wicaksana\",\"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\/Reno-Wicaksana-96x96.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Reno-Wicaksana-96x96.webp\",\"caption\":\"Reno Wicaksana\"},\"description\":\"Reno adalah HRM Specialist dan senior content writer dengan pengalaman lebih dari 5 tahun di industri teknologi dan manajemen sumber daya manusia. Secara konsisten mengangkat topik artikel seputar performance management, rekrutmen dan pengembangan SDM, manajemen talenta, dan sistem HRIS untuk pengelolaan karyawan.\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/william-w-88353a262\/\"],\"gender\":\"Laki-laki\",\"knowsAbout\":[\"HRM\",\"HRIS\"],\"knowsLanguage\":[\"Inggris\",\"Indonesia\"],\"jobTitle\":\"Senior Content Writer on HRIS\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/author\/reno-wicaksana\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Cara Menghitung Gaji Outsourcing: Rumus, Contoh, dan Strategi &#187; HashMicro Indonesia","description":"Pelajari rumus, contoh praktis, dan strategi menghitung dan mengelola gaji karyawan outsourcing dalam artikel ini.","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\/gaji-outsourcing\/","og_locale":"id_ID","og_type":"article","og_title":"Cara Menghitung Gaji Outsourcing: Rumus, Contoh, dan Strategi","og_description":"Pelajari rumus, contoh praktis, dan strategi menghitung dan mengelola gaji karyawan outsourcing dalam artikel ini.","og_url":"https:\/\/www.hashmicro.com\/id\/blog\/gaji-outsourcing\/","og_site_name":"HashMicro Indonesia","article_publisher":"https:\/\/www.facebook.com\/hashmicro","article_published_time":"2026-04-08T09:29:09+00:00","og_image":[{"width":800,"height":400,"url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/Cara-Menghitung-Gaji-Outsourcing.webp","type":"image\/webp"}],"author":"Reno Wicaksana","twitter_card":"summary_large_image","twitter_creator":"@hashmicro","twitter_site":"@hashmicro","twitter_misc":{"Ditulis oleh":"Reno Wicaksana","Estimasi waktu membaca":"8 menit"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hashmicro.com\/id\/blog\/gaji-outsourcing\/#article","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/gaji-outsourcing\/"},"author":{"name":"Reno Wicaksana","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/0d3340f667908102d8894da18f80732e"},"headline":"Cara Menghitung Gaji Outsourcing: Rumus, Contoh, dan Strategi","datePublished":"2026-04-08T09:29:09+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/gaji-outsourcing\/"},"wordCount":1289,"commentCount":0,"publisher":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#organization"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/gaji-outsourcing\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/Cara-Menghitung-Gaji-Outsourcing.webp","articleSection":["HRM"],"inLanguage":"id","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.hashmicro.com\/id\/blog\/gaji-outsourcing\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/id\/blog\/gaji-outsourcing\/","url":"https:\/\/www.hashmicro.com\/id\/blog\/gaji-outsourcing\/","name":"Cara Menghitung Gaji Outsourcing: Rumus, Contoh, dan Strategi &#187; HashMicro Indonesia","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/gaji-outsourcing\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/gaji-outsourcing\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/Cara-Menghitung-Gaji-Outsourcing.webp","datePublished":"2026-04-08T09:29:09+00:00","description":"Pelajari rumus, contoh praktis, dan strategi menghitung dan mengelola gaji karyawan outsourcing dalam artikel ini.","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/gaji-outsourcing\/#breadcrumb"},"inLanguage":"id","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/id\/blog\/gaji-outsourcing\/"]}]},{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/gaji-outsourcing\/#primaryimage","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/Cara-Menghitung-Gaji-Outsourcing.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/Cara-Menghitung-Gaji-Outsourcing.webp","width":800,"height":400,"caption":"cara-menghitung-gaji-outsourcing"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/id\/blog\/gaji-outsourcing\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/id\/blog\/"},{"@type":"ListItem","position":2,"name":"Cara Menghitung Gaji Outsourcing: Rumus, Contoh, dan Strategi"}]},{"@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\/0d3340f667908102d8894da18f80732e","name":"Reno Wicaksana","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\/Reno-Wicaksana-96x96.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Reno-Wicaksana-96x96.webp","caption":"Reno Wicaksana"},"description":"Reno adalah HRM Specialist dan senior content writer dengan pengalaman lebih dari 5 tahun di industri teknologi dan manajemen sumber daya manusia. Secara konsisten mengangkat topik artikel seputar performance management, rekrutmen dan pengembangan SDM, manajemen talenta, dan sistem HRIS untuk pengelolaan karyawan.","sameAs":["https:\/\/www.linkedin.com\/in\/william-w-88353a262\/"],"gender":"Laki-laki","knowsAbout":["HRM","HRIS"],"knowsLanguage":["Inggris","Indonesia"],"jobTitle":"Senior Content Writer on HRIS","url":"https:\/\/www.hashmicro.com\/id\/blog\/author\/reno-wicaksana\/"}]}},"focus_keyword":"gaji outsourcing","order_j":"","_links":{"self":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/192030","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\/218"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/comments?post=192030"}],"version-history":[{"count":14,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/192030\/revisions"}],"predecessor-version":[{"id":192048,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/192030\/revisions\/192048"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media\/192035"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media?parent=192030"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/categories?post=192030"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/tags?post=192030"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}