{"id":189598,"date":"2026-02-25T11:36:59","date_gmt":"2026-02-25T04:36:59","guid":{"rendered":"https:\/\/www.hashmicro.com\/id\/blog\/?p=189598"},"modified":"2026-03-26T14:46:49","modified_gmt":"2026-03-26T07:46:49","slug":"cost-plus-contract","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/id\/blog\/cost-plus-contract\/","title":{"rendered":"Panduan Lengkap Cost Plus Contract untuk Proyek Modern"},"content":{"rendered":"<p>Cost plus contract adalah model kontrak yang umum digunakan di berbagai proyek, terutama yang melibatkan banyak komponen biaya. Sistem ini menekankan pencatatan biaya yang transparan dan pembayaran berdasarkan biaya aktual ditambah persentase keuntungan atau fee tertentu.<\/p>\n<p>Model kontrak ini sering dipilih ketika proyek bersifat kompleks atau sulit diprediksi biayanya. Dengan pendekatan ini, pihak yang menjalankan proyek bisa lebih fleksibel dalam menyesuaikan pengeluaran seiring jalannya pekerjaan.<\/p>\n<p>Dalam artikel ini, kita akan membahas mekanisme cost plus contract, mulai dari perhitungan biaya, kelebihan, hingga risiko yang perlu diperhatikan. Pembaca akan mendapatkan gambaran praktis tentang cara mengelola kontrak jenis ini agar lebih efektif dan terkontrol.<\/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: #8a0e19; color: #ffffff; padding: 5px;\"><b>Key Takeaways<\/b><\/span><\/h3>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"#a\">Cost plus contract adalah<\/a> kontrak di mana pemilik proyek menanggung biaya aktual plus fee kontraktor dengan transparansi dan fleksibilitas tinggi.<\/li>\n<li aria-level=\"1\">Keberhasilan proyek sangat bergantung pada pengelolaan yang disiplin dan terstruktur dalam <a href=\"#b\">strategi pengelolaan dan implementasi efektif<\/a> agar biaya tetap terkendali dan transparansi terjaga.<\/li>\n<li aria-level=\"1\">Risiko dapat diminimalkan bila <a href=\"#c\">jebakan umum dan strategi mitigasi<\/a> diantisipasi lewat struktur fee tepat, sistem verifikasi digital, dan batasan biaya yang jelas.<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\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 id=\"konsep-dasar-dan-definisi-cost-plus-contract\"><span id=\"a\">Konsep Dasar dan Definisi Cost Plus Contract<\/span><\/h2>\n<p>Cost plus contract adalah perjanjian legal di mana pemilik proyek mengganti seluruh biaya aktual yang dikeluarkan kontraktor ditambah fee sebagai keuntungan. Fee ini bisa berbentuk nominal tetap atau persentase dari total biaya, dengan transparansi pencatatan sebagai prinsip utama.<\/p>\n<p>Struktur kontrak ini terdiri dari biaya langsung dan biaya plus sebagai komponen utama. Biaya langsung mencakup pengeluaran spesifik proyek seperti tenaga kerja, material, sewa alat, subkontraktor, serta wajib didukung bukti transaksi yang valid.<\/p>\n<p>Biaya plus menutup <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/mengenal-biaya-overhead-dan-cara-menghitungnya\/\">biaya overhead perusahaan<\/a> sekaligus menjadi sumber laba kontraktor, sehingga nilainya biasanya dinegosiasikan secara hati-hati. Kontrak juga harus menetapkan klasifikasi biaya yang diperbolehkan dan tidak diperbolehkan karena model ini mengalihkan sebagian risiko finansial ke pemilik proyek namun memberi fleksibilitas perubahan selama proyek berjalan.<\/p>\n<h2 id=\"jenis-dan-variasi-utama-cost-plus-contract\">Jenis dan Variasi Utama Cost Plus Contract<\/h2>\n<p>Dunia proyek tidak memakai satu format kontrak saja karena tiap pekerjaan punya tingkat risiko, kejelasan lingkup, dan prioritas berbeda. Variasi cost plus contract berkembang untuk menyesuaikan kebutuhan tersebut sekaligus memberi fleksibilitas dalam pengaturan biaya.<\/p>\n<p>Berikut jenis dan variasi utama cost plus contract yang paling umum digunakan dalam praktik proyek modern:<\/p>\n<h3>1. Cost Plus Fixed Fee (CPFF)<\/h3>\n<p>Kontraktor menerima penggantian seluruh biaya yang diperbolehkan ditambah fee nominal tetap yang disepakati sejak awal kontrak. Nilai fee tidak berubah meski biaya proyek naik turun kecuali terjadi perubahan lingkup besar, sehingga pemilik mengetahui margin kontraktor dan kontraktor terdorong menyelesaikan pekerjaan lebih efisien.<\/p>\n<h3>2. Cost Plus Percentage of Cost (CPPC)<\/h3>\n<p>Keuntungan kontraktor dihitung sebagai persentase dari total biaya proyek sehingga semakin besar biaya semakin besar laba mereka. Model ini berisiko bagi pemilik karena tidak ada insentif kuat untuk penghematan, sehingga kini lebih jarang dipakai kecuali pada proyek darurat yang menuntut kecepatan tinggi.<\/p>\n<h3>3. Cost Plus Incentive Fee (CPIF)<\/h3>\n<p>Kontrak menetapkan target biaya proyek lalu selisih penghematan atau kelebihan akan dibagi antara pemilik dan kontraktor berdasarkan rasio yang disepakati. Skema ini efektif mendorong efisiensi dan inovasi karena kontraktor memiliki motivasi finansial langsung untuk bekerja lebih hemat tanpa menurunkan standar kualitas.<\/p>\n<h3>4. Cost Plus Award Fee (CPAF)<\/h3>\n<p>Selain biaya aktual dan fee dasar, kontraktor berpeluang memperoleh bonus tambahan berdasarkan evaluasi kinerja proyek. Penilaian biasanya mencakup keselamatan kerja, kualitas hasil, ketepatan waktu, hingga efektivitas komunikasi dan manajemen proyek.<\/p>\n<h3>5. Cost Plus with Guaranteed Maximum Price (GMP)<\/h3>\n<p>Total pembayaran dibatasi angka maksimum yang disepakati walau tetap menggunakan skema biaya aktual plus fee. Jika biaya melampaui batas kontraktor menanggung selisihnya, sedangkan jika lebih rendah penghematan dapat dikembalikan ke pemilik atau dibagi bersama sesuai kesepakatan.<\/p>\n<h2><span id=\"b\">Strategi Pengelolaan dan Implementasi Efektif<\/span><\/h2>\n<p>Keberhasilan cost plus contract sangat ditentukan oleh cara kontrak disusun dan dikelola sepanjang proyek berlangsung, bukan sekadar model pembayarannya. Implementasi yang efektif membutuhkan aturan operasional jelas agar transparansi biaya, kontrol anggaran, dan akuntabilitas tetap terjaga.<\/p>\n<h3>1. Penyusunan Kontrak yang Detail dan Spesifik<\/h3>\n<p>Definisi \u201cbiaya pekerjaan\u201d harus dirinci sejak awal dengan mencantumkan seluruh komponen yang dapat diganti seperti tarif tenaga kerja, lembur, tunjangan, material, dan biaya perjalanan proyek. Kontrak juga wajib menetapkan daftar biaya yang tidak diganti, termasuk kerusakan alat kontraktor, biaya non-operasional, atau gaji staf yang tidak terlibat langsung.<\/p>\n<p>Pengaturan subkontraktor perlu memberi hak persetujuan kepada pemilik serta akses perbandingan penawaran vendor sebelum keputusan dibuat. Prosedur change order juga harus terdokumentasi agar setiap perubahan lingkup memiliki catatan dampak biaya dan jadwal.<\/p>\n<h3><span style=\"color: #111111; font-family: Roboto, sans-serif; font-size: 22px;\">2. Pemanfaatan Teknologi dalam Pemantauan Biaya<\/span><\/h3>\n<p>Pengelolaan manual menggunakan spreadsheet dan dokumen fisik cenderung rawan kesalahan serta memperlambat proses verifikasi biaya. Sistem pengelolaan proyek terintegrasi memungkinkan pencatatan pengeluaran secara real-time dari lapangan langsung ke pusat kontrol.<\/p>\n<p><a href=\"https:\/\/www.hashmicro.com\/id\/blog\/software-erp-terbaik\/\">Sistem Enterprise Resource Planning (ERP) terpadu<\/a> dapat mengotomatisasi rekonsiliasi tagihan sekaligus memberi peringatan saat biaya mendekati batas estimasi. Integrasi data ini meningkatkan transparansi, mencegah duplikasi pencatatan, dan mempercepat proses audit.<\/p>\n<h3>3. Mekanisme Audit dan Persetujuan Pembayaran<\/h3>\n<p>Prosedur audit harus disepakati sejak awal dengan verifikasi progres fisik oleh pihak independen sebelum pembayaran disetujui. Skema pembayaran progres dengan retensi memberi jaminan bahwa kontraktor akan menuntaskan pekerjaan hingga masa pemeliharaan selesai.<\/p>\n<p>Rapat koordinasi rutin diperlukan untuk meninjau laporan biaya aktual dan estimasi sisa anggaran proyek. Laporan cost to complete memberi visibilitas proyeksi biaya akhir sehingga <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/deviasi-proyek-adalah\/\">keputusan korektif dapat diambil<\/a> sebelum terjadi pembengkakan anggaran.<\/p>\n<h2><span style=\"color: #111111; font-family: Roboto, sans-serif; font-size: 27px;\">Perbandingan dengan Model Kontrak Lain<\/span><\/h2>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-189675\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/Perbandingan-dengan-Model-Kontrak-Lain.webp\" alt=\"cost plus contract\" width=\"1536\" height=\"1024\" srcset=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/Perbandingan-dengan-Model-Kontrak-Lain.webp 1536w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/Perbandingan-dengan-Model-Kontrak-Lain-300x200.webp 300w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/Perbandingan-dengan-Model-Kontrak-Lain-1024x683.webp 1024w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/Perbandingan-dengan-Model-Kontrak-Lain-768x512.webp 768w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/Perbandingan-dengan-Model-Kontrak-Lain-630x420.webp 630w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/Perbandingan-dengan-Model-Kontrak-Lain-150x100.webp 150w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/Perbandingan-dengan-Model-Kontrak-Lain-696x464.webp 696w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/Perbandingan-dengan-Model-Kontrak-Lain-1068x712.webp 1068w\" sizes=\"auto, (max-width: 1536px) 100vw, 1536px\" \/><\/p>\n<p>Memahami posisi cost plus contract dalam praktik konstruksi perlu dilakukan dengan membandingkannya langsung dengan model lain yang paling umum digunakan. Perbandingan ini membantu menentukan jenis kontrak yang paling sesuai berdasarkan tingkat kepastian desain, risiko biaya, dan karakter proyek.<\/p>\n<h3>1. Cost Plus vs. Lump Sum (Fixed Price)<\/h3>\n<p>Kontrak lump sum menetapkan harga total di awal sehingga pemilik mendapat kepastian anggaran meskipun biaya aktual kontraktor berubah. Namun model ini menuntut lingkup kerja yang sudah sangat jelas karena jika desain belum matang kontraktor akan menambahkan biaya cadangan risiko dalam penawaran.<\/p>\n<p>Cost plus lebih cocok ketika lingkup proyek belum final karena memberi fleksibilitas penyesuaian selama pekerjaan berjalan. Memaksakan lump sum pada desain yang belum siap justru berpotensi memicu banyak change order yang meningkatkan biaya akhir dan memicu konflik kerja.<\/p>\n<h3>2. Cost Plus vs. Unit Price<\/h3>\n<p>Kontrak unit price menetapkan harga per satuan pekerjaan lalu pembayaran dihitung berdasarkan volume aktual di lapangan. Model ini umum dipakai pada proyek infrastruktur dengan jenis pekerjaan jelas tetapi jumlah volumenya sulit dipastikan sejak awal.<\/p>\n<p>Berbeda dengan itu, cost plus memisahkan biaya riil dan keuntungan sehingga transparansi lebih tinggi serta pengendalian biaya lebih jelas. Unit price kurang efisien untuk proyek kompleks dengan banyak item unik, sedangkan cost plus lebih fleksibel menangani variasi pekerjaan dan material khusus.<\/p>\n<h2 id=\"studi-kasus\">Studi Kasus dan Penggunaan Industri Spesifik<\/h2>\n<p>Cost plus contract sering dipilih pada proyek dengan tingkat ketidakpastian tinggi atau kebutuhan fleksibilitas besar karena mampu menyesuaikan biaya dengan kondisi lapangan. Berikut contoh sektor yang paling menunjukkan efektivitas model ini dalam praktik nyata:<\/p>\n<h3>1. Renovasi Bangunan Bersejarah dan Cagar Budaya<\/h3>\n<p>Restorasi bangunan tua menjadi contoh klasik proyek yang paling cocok menggunakan cost plus contract karena tingkat ketidakpastiannya sangat tinggi. Saat renovasi dimulai, kontraktor sering baru mengetahui kondisi sebenarnya di balik dinding atau lantai, seperti struktur lapuk, instalasi lama, atau elemen arsitektur yang harus dipertahankan.<\/p>\n<p>Meminta harga tetap dalam kondisi seperti ini biasanya tidak realistis atau justru membuat biaya membengkak akibat penambahan cadangan risiko. Dengan skema cost plus, pekerjaan dapat dilakukan bertahap secara hati-hati sementara biaya menyesuaikan temuan aktual di lapangan.<\/p>\n<h3>2. Proyek Penanggulangan Bencana Alam<\/h3>\n<p>Ketika bencana seperti gempa atau banjir merusak infrastruktur penting seperti jembatan atau rumah sakit, prioritas utama adalah mempercepat pemulihan fungsi layanan. Dalam situasi darurat, proses tender lengkap dan negosiasi harga tetap sering tidak memungkinkan karena waktu menjadi faktor paling kritis.<\/p>\n<p>Karena itu, pemilik proyek biasanya langsung menunjuk kontraktor terpercaya dengan skema cost plus agar mobilisasi alat dan tenaga kerja bisa segera dilakukan. Fokusnya adalah percepatan perbaikan, sementara pengawasan biaya tetap dijaga melalui <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/laporan-audit-internal\/\">proses audit setelah pekerjaan selesai<\/a>.<\/p>\n<h3>3. Fasilitas Riset dan Teknologi Tinggi<\/h3>\n<p>Pembangunan laboratorium farmasi, pusat data, atau fasilitas manufaktur semikonduktor sering melibatkan teknologi baru dengan spesifikasi yang terus berubah mengikuti perkembangan riset. Bahkan, peralatan utama yang akan dipasang kerap belum tersedia saat konstruksi sudah dimulai.<\/p>\n<p>Dalam kondisi seperti ini, fleksibilitas cost plus memungkinkan kontraktor berkolaborasi langsung dengan tim teknis klien untuk menyesuaikan integrasi sistem mekanikal dan elektrikal yang kompleks. Pendekatan ini memastikan proyek tetap adaptif tanpa terhambat batasan kontrak yang terlalu kaku.<\/p>\n<h2 id=\"tren-masa-depan\">Tren Masa Depan Cost Plus Contract di 2026 dan Seterusnya<\/h2>\n<p>Perkembangan teknologi dan dinamika pasar global terus mengubah cara kontrak konstruksi dijalankan, termasuk model cost plus. Memasuki 2026 dan seterusnya, transformasi ini didorong digitalisasi, otomatisasi, dan tuntutan praktik proyek yang lebih transparan serta berkelanjutan.<\/p>\n<h3>1. Integrasi Blockchain untuk Transparansi Mutlak<\/h3>\n<p>Sengketa validitas tagihan menjadi kelemahan klasik cost plus sehingga teknologi blockchain mulai digunakan untuk mencatat transaksi proyek secara permanen dan transparan. Sistem ini memungkinkan smart contract melepas pembayaran otomatis saat syarat terpenuhi, sehingga administrasi lebih cepat dan risiko manipulasi berkurang.<\/p>\n<h3>2. Penerapan Building Information Modeling (BIM) 5D<\/h3>\n<p>BIM kini berkembang dari sekadar model visual menjadi sistem multidimensi yang menggabungkan waktu dan biaya dalam simulasi proyek. Dalam skema cost plus, teknologi ini memungkinkan pemilik langsung melihat dampak finansial setiap perubahan desain sehingga keputusan bisa diambil lebih cepat dan akurat.<\/p>\n<h3>3. Fokus pada Keberlanjutan dan Ekonomi Sirkular<\/h3>\n<p>Tren konstruksi hijau (green building) mendorong kontrak masa depan memasukkan indikator keberlanjutan seperti jejak karbon selain biaya finansial. Transparansi cost plus memudahkan verifikasi penggunaan material ramah lingkungan sekaligus memberi insentif bagi kontraktor yang mampu mengurangi limbah dan meningkatkan efisiensi sumber daya.<\/p>\n<h2 id=\"penerapan-lintas-industri\">Penerapan Lintas Industri: Manufaktur, Ritel, dan E-commerce<\/h2>\n<p>Cost plus contract tidak hanya relevan di konstruksi karena fleksibilitasnya membuat model ini cocok untuk sektor dengan harga input fluktuatif atau lingkup kerja dinamis. Pemahaman penerapannya di manufaktur, ritel, dan teknologi membantu manajer proyek merancang strategi pengadaan yang lebih adaptif dan minim risiko.<\/p>\n<h3 id=\"manufaktur-dan-produksi-pesanan-khusus\">1. Manufaktur dan Produksi Pesanan Khusus<\/h3>\n<p>Produksi custom dan prototipe sering sulit diberi harga tetap karena spesifikasi material dapat berubah mengikuti hasil uji teknis. Skema cost plus memungkinkan produsen menjaga kualitas tanpa mengorbankan margin sekaligus melindungi kedua pihak dari fluktuasi harga bahan baku melalui pembayaran biaya aktual plus margin.<\/p>\n<p>Dalam model ini pembeli <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/pengertian-bill-of-material-beserta-penjelasan-lengkapnya\/\">menanggung biaya Bill of Materials<\/a> dan biaya konversi nyata ditambah keuntungan yang disepakati. Pendekatan tersebut menghindarkan vendor dari risiko lonjakan harga material sekaligus mencegah pembeli membayar premi risiko seperti pada kontrak fixed price.<\/p>\n<h3 id=\"ritel-distribusi-dan-rantai-pasok\">2. Ritel, Distribusi, dan Rantai Pasok<\/h3>\n<p>Dalam kontrak logistik jangka panjang, biaya variabel seperti bahan bakar sering diterapkan sebagai pass-through cost agar tarif tidak perlu dinegosiasi ulang setiap terjadi perubahan harga energi. Peritel dan penyedia logistik biasanya menyepakati biaya aktual ditambah fee manajemen tetap untuk menjaga stabilitas kerja sama.<\/p>\n<p>Pada pengadaan private label, transparansi biaya produksi memungkinkan peritel membayar biaya produksi pabrik (tenaga kerja, bahan, overhead pabrik) ditambah margin yang disetujui. Sistem ini memberi kontrol spesifikasi produk sekaligus fleksibilitas perubahan formula tanpa harus membatalkan kontrak.<\/p>\n<h3 id=\"pengembangan-teknologi-dan-e-commerce\">3. Pengembangan Teknologi dan E-commerce<\/h3>\n<p>Proyek perangkat lunak dan platform digital sering memiliki lingkup yang berkembang sehingga kontrak harga tetap dapat menghambat inovasi. Model berbasis waktu dan material, sebagai bentuk cost plus, memungkinkan pembayaran sesuai jam kerja dan biaya langsung plus margin penyedia.<\/p>\n<p>Pendekatan ini memudahkan pemilik proyek mengubah prioritas fitur tanpa negosiasi kontrak berulang. Selama tim bekerja efisien, proyek dapat beradaptasi cepat terhadap kebutuhan pasar dan perkembangan teknologi.<\/p>\n<h2 id=\"langkah-implementasi-mendalam-dan-kpi\">Langkah Implementasi Mendalam dan KPI Kunci<\/h2>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-189673\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/Langkah-Implementasi-Mendalam-dan-KPI-Kunci.webp\" alt=\"cost plus contract\" width=\"1200\" height=\"675\" srcset=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/Langkah-Implementasi-Mendalam-dan-KPI-Kunci.webp 1200w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/Langkah-Implementasi-Mendalam-dan-KPI-Kunci-300x169.webp 300w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/Langkah-Implementasi-Mendalam-dan-KPI-Kunci-1024x576.webp 1024w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/Langkah-Implementasi-Mendalam-dan-KPI-Kunci-768x432.webp 768w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/Langkah-Implementasi-Mendalam-dan-KPI-Kunci-747x420.webp 747w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/Langkah-Implementasi-Mendalam-dan-KPI-Kunci-150x84.webp 150w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/Langkah-Implementasi-Mendalam-dan-KPI-Kunci-696x392.webp 696w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/Langkah-Implementasi-Mendalam-dan-KPI-Kunci-1068x601.webp 1068w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/p>\n<p>Keberhasilan penerapan <em>cost plus contract<\/em> tidak hanya bergantung pada niat baik, tetapi pada infrastruktur pengawasan yang ketat. Tanpa sistem yang solid, kontrak ini bisa menjadi lubang hitam anggaran. Berikut adalah langkah implementasi taktis beserta metrik keberhasilan yang harus dipantau.<\/p>\n<h3 id=\"tahapan-eksekusi-taktis\">Tahapan Eksekusi Taktis<\/h3>\n<ol>\n<li><strong>Definisi &#8220;Allowable Costs&#8221; yang Presisi:<\/strong> Langkah paling krusial adalah menyusun lampiran kontrak yang merinci secara jelas biaya yang dapat diganti dan yang tidak agar tidak ada ruang interpretasi. Tanpa batasan spesifik seperti apakah biaya konsumsi tim atau pembelian perangkat termasuk klaim proyek, ketidakjelasan mudah memicu sengketa.<\/li>\n<li><strong>Penyelarasan Sistem Akuntansi:<\/strong> Sebelum proyek dimulai, pemilik proyek harus memverifikasi bahwa sistem akuntansi kontraktor mampu memisahkan biaya proyek ini dari proyek lain secara akurat. Penggunaan kode akun biaya (Cost Codes) yang terstandarisasi harus disepakati bersama agar laporan keuangan mudah diaudit.<\/li>\n<li><strong>Protokol Persetujuan Bertingkat:<\/strong> Tetapkan ambang batas (threshold) pengeluaran. Misalnya, pembelian material di bawah Rp 10 juta bisa langsung dieksekusi, namun pembelian di atas Rp 50 juta memerlukan persetujuan tertulis dari pemilik proyek. Ini mencegah kejutan biaya besar di akhir bulan.<\/li>\n<li><strong>Audit Berkala (Interim Audits):<\/strong> Jangan menunggu proyek selesai untuk melakukan audit. Lakukan audit acak setiap bulan atau triwulan terhadap faktur yang diajukan untuk memastikan kepatuhan terhadap kontrak.<\/li>\n<\/ol>\n<h3 id=\"metrik-dan-indikator-kinerja-utama-kpi\">Metrik dan Indikator Kinerja Utama (KPI)<\/h3>\n<p>Untuk mengukur kesehatan proyek berbasis <em>cost plus<\/em>, <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/pentingnya-key-performance-indicator-kpi-serta-fungsinya-pada-bisnis\/\">manajer proyek harus memantau KPI<\/a> berikut secara <em>real-time<\/em>:<\/p>\n<ul>\n<li><strong>Cost Variance (CV):<\/strong> Selisih antara estimasi biaya (budget) dengan biaya aktual yang ditagihkan. Meskipun ini kontrak <em>cost plus<\/em>, harus tetap ada estimasi dasar. CV yang terlalu negatif mengindikasikan ketidakefisienan kontraktor.<\/li>\n<li><strong>Disallowed Costs Ratio:<\/strong> Persentase biaya yang diajukan oleh kontraktor namun ditolak oleh pemilik proyek karena tidak sesuai kontrak. Rasio yang tinggi (misalnya &gt;5%) menandakan adanya masalah pemahaman kontrak atau itikad buruk dari kontraktor.<\/li>\n<li><strong>Invoice Cycle Time:<\/strong> Rata-rata waktu yang dibutuhkan untuk memproses, memverifikasi, dan membayar tagihan kontraktor. Siklus yang terlalu lama dapat mengganggu arus kas kontraktor dan memperlambat proyek.<\/li>\n<li><strong>Audit Finding Rate:<\/strong> Jumlah temuan kesalahan (sengaja atau tidak) per satu juta nilai kontrak yang diaudit. Penurunan <em>rate<\/em> ini seiring waktu menunjukkan bahwa kontraktor mulai disiplin dengan administrasi mereka.<\/li>\n<\/ul>\n<h2 id=\"analisis-jebakan-umum-dan-mitigasi\"><span id=\"c\">Analisis Jebakan Umum (Pitfalls) dan Strategi Mitigasi<\/span><\/h2>\n<p>Meskipun menawarkan fleksibilitas, <em>cost plus contract<\/em> memiliki reputasi risiko yang harus dikelola dengan cerdas. Berikut adalah jebakan paling umum dan cara menghindarinya.<\/p>\n<h3 id=\"jebakan-gold-plating\">1. Jebakan &#8220;Gold Plating&#8221;<\/h3>\n<p>Karena kontraktor dijamin akan dibayar untuk setiap biaya yang dikeluarkan, insentif untuk berhemat menjadi minim. Ada risiko kontraktor memilih material spesifikasi tertinggi (yang mungkin tidak diperlukan) atau menggunakan metode kerja yang boros tenaga kerja hanya untuk meningkatkan basis biaya, terutama jika <em>fee<\/em> mereka berbentuk persentase dari biaya total.<\/p>\n<p><strong>Mitigasi:<\/strong> Gunakan struktur <em>Fixed Fee<\/em> (biaya jasa tetap) alih-alih persentase. Dengan <em>Fixed Fee<\/em>, kontraktor tidak mendapatkan keuntungan tambahan jika biaya proyek membengkak. Selain itu, terapkan klausul <em>Guaranteed Maximum Price<\/em> (GMP) untuk membatasi total eksposur biaya pemilik proyek.<\/p>\n<h3 id=\"jebakan-beban-administrasi\">2. Jebakan Beban Administrasi<\/h3>\n<p>Kontrak ini menghasilkan volume dokumen yang masif. Setiap paku, setiap jam kerja, dan setiap sewa alat harus didokumentasikan. Pemilik proyek sering kali kewalahan memverifikasi tumpukan faktur setiap bulan, yang berujung pada persetujuan &#8220;stempel karet&#8221; tanpa pemeriksaan teliti.<\/p>\n<p><strong>Mitigasi:<\/strong> Wajibkan penggunaan perangkat lunak manajemen proyek berbasis <em>cloud<\/em> yang terintegrasi. Kontraktor harus mengunggah bukti transaksi digital secara <em>real-time<\/em> yang dapat diakses oleh tim audit pemilik proyek kapan saja. Investasikan pada staf khusus (Quantity Surveyor atau Cost Controller) di pihak pemilik untuk menangani verifikasi ini.<\/p>\n<h3 id=\"jebakan-pengalihan-biaya-overhead\">3. Jebakan Pengalihan Biaya Overhead<\/h3>\n<p>Kontraktor yang tidak jujur mungkin mencoba membebankan <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/opex-adalah\/\">biaya operasional kantor pusat<\/a> mereka (seperti gaji staf HRD, listrik kantor pusat, atau biaya pemasaran) ke dalam tagihan biaya langsung proyek (Direct Costs).<\/p>\n<p><strong>Mitigasi:<\/strong> Definisikan secara eksplisit apa yang termasuk dalam biaya <em>overhead<\/em> yang sudah tercakup dalam <em>fee<\/em> kontraktor. Tegaskan bahwa biaya langsung hanya boleh mencakup sumber daya yang secara fisik berada di lokasi proyek atau didedikasikan 100% untuk proyek tersebut.<\/p>\n<h2 id=\"praktik-terbaik-tingkat-lanjut\">Praktik Terbaik Tingkat Lanjut: Menuju Transparansi Total<\/h2>\n<p>Praktik terbaik tingkat lanjut berfokus pada transparansi total untuk memaksimalkan nilai cost plus contract dan mengubah relasi proyek dari sekadar transaksi menjadi kemitraan strategis. Pendekatan ini menuntut kontrol, akuntabilitas, dan insentif yang selaras antara pemilik proyek dan kontraktor.<\/p>\n<p>Klausul Right-to-Audit memberi hak hukum bagi pemilik proyek untuk memeriksa pembukuan kontraktor selama proyek hingga beberapa tahun setelah selesai. Efeknya menciptakan disiplin perilaku karena kontraktor tahu manipulasi biaya bisa terdeteksi di masa depan.<\/p>\n<p>Skema Shared Savings pada kontrak GMP membagi penghematan biaya antara pemilik dan kontraktor jika proyek selesai di bawah batas harga maksimum. Mekanisme ini mengubah motivasi kontraktor menjadi proaktif mencari efisiensi karena mereka ikut menikmati bonus dari selisih penghematan.<\/p>\n<p>Transparansi rantai pasok memungkinkan pemilik proyek membayar langsung subkontraktor atau pemasok utama bila diperlukan. Sistem ini mencegah penyalahgunaan dana proyek oleh kontraktor utama sekaligus menjamin kelancaran pasokan material kritis di lapangan.<\/p>\n<h2 id=\"kesimpulan\">Kesimpulan<\/h2>\n<p>Memilih model kontrak yang tepat adalah keputusan fundamental yang menentukan arah keberhasilan proyek konstruksi. Cost plus contract menjadi solusi ideal bagi proyek dengan lingkup kerja tidak pasti, tuntutan kualitas tinggi, atau kebutuhan percepatan waktu, karena fokusnya pada transparansi biaya sepanjang pelaksanaan.<\/p>\n<p>Fleksibilitas yang ditawarkan skema ini tetap menuntut pengawasan dan administrasi yang ketat agar biaya tetap terkendali. Keberhasilannya bergantung pada kombinasi kepercayaan, sistem verifikasi kuat, definisi biaya jelas, serta dukungan teknologi manajemen proyek.<\/p>\n<p>Bagi pemilik proyek yang siap terlibat aktif dan mengutamakan hasil optimal, model ini merupakan instrumen yang sangat efektif. Seiring kemajuan teknologi digital pada 2026, transparansi biaya dalam kontrak semacam ini semakin mudah dikelola dan makin relevan dalam proyek konstruksi modern yang kompleks.<\/p>\n<a href=\"https:\/\/www.hashmicro.com\/id\/hash-construction-software?medium=moneysite-banner\" target=\"_blank\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/02\/47-Construction-Desktop.webp\" data-desktop-src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/02\/47-Construction-Desktop.webp\" data-mobile-src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/02\/47-Construction-Mobile.webp\" alt=\"HashConstructionSuite\" class=\"responsive-image-banner\"><\/a>\r\n\r\n<script>\r\n    \/\/ check which image to use based on screensize\r\n    document.addEventListener(\"DOMContentLoaded\", function() {\r\n        function updateImageSource() {\r\n            var images = document.querySelectorAll('.responsive-image-banner');\r\n            var screenWidth = window.innerWidth;\r\n\r\n            images.forEach(function(img) {\r\n                var mobileSrc = img.getAttribute('data-mobile-src');\r\n                var desktopSrc = img.getAttribute('data-desktop-src');\r\n\r\n                if (screenWidth < 576 && mobileSrc) {\r\n                    img.setAttribute('src', mobileSrc);\r\n                } else {\r\n                    img.setAttribute('src', desktopSrc);\r\n                }\r\n            });\r\n        }\r\n\r\n        \/\/ Initial check\r\n        updateImageSource();\r\n\r\n        \/\/ Update on resize\r\n        window.addEventListener('resize', updateImageSource);\r\n    });\r\n<\/script>\n<h2 class=\"faqTitle\">Frequently Asked Question<\/h2>\r\n<style>\r\n\t#main-article p.faqTitle{\r\n\t\ttext-align: center;\r\n\t\tmargin-bottom: 0;\r\n\t\tmargin-top: 50px;\r\n\t\tfont-weight: bold;\r\n\t}\r\n\t\r\n\t.accordion-wrapper{\r\n\t\tbackground-color: white;\r\n\t\tborder: 1px solid #9c171e;\r\n\t\tborder-radius: 6px;\r\n\t\ttransition: 0.4s ease;\r\n\t\tmargin-bottom: 20px;\r\n\t\toverflow: hidden;\r\n\t}\r\n\t\r\n\t.header-faq{\r\n\t\tdisplay: flex;\r\n\t\tborder: none;\r\n\t\tborder-radius: 6px 6px 6px 6px;\r\n\t\tbackground: #FFF;\r\n\t\talign-items: center;\r\n\t\tpadding: 18px;\r\n\t\ttransition: 0.4s;\r\n\t\tcursor: pointer;\r\n\t\tjustify-content: space-between;\r\n\t}\r\n\t\r\n\t.header-faq p{\r\n\t\tmargin-bottom: 0;\r\n\t}\r\n\t\r\n\t.question {\r\n\t\tcolor: #3C3C3C;\r\n\t\twidth: 100%;\r\n\t\ttext-align: left;\r\n\t\tfont-size: 16px;\r\n\t\tline-height: 20px;\r\n\t \ttransition: 0.4s;\r\n\t\tborder: none;\r\n\t\tborder-radius: 6px 6px 6px 6px;\r\n\t\tbackground: #FFF;\r\n\t\tpadding: 0;\r\n\/* \t\ttext-transform: uppercase; *\/\r\n\t\tfont-weight: 700;\r\n\t\tdisplay: flex;\r\n\t\tjustify-content: space-between;\r\n\t\talign-items: center;\r\n\t}\r\n\r\n\t.header-faq.active {\r\n\t  background-color: #FFF;\r\n\t}\r\n\t\r\n\tbutton.question{\r\n\t\tcolor: unset;\r\n\t\tbackground-color: unset;\r\n\t}\r\n\t\r\n\tbutton.question::after{\r\n\t\tcontent: \"<\";\r\n\t\twidth: 2.2rem;\r\n\t\theight: 2.2rem;\r\n\t\tdisplay: flex;\r\n\t\tjustify-content: center;\r\n\t\talign-items: center;\r\n\t\tborder-radius: 50%;\r\n\t\tcolor: #FFF;\r\n\t\tflex-shrink: 0;\r\n\t\tfloat: right;\r\n\t\ttransition: 0.4s;\r\n\t\topacity: 0.4;\r\n\t\tposition: relative;\r\n\t\ttransform: rotate(-90deg);\r\n\t\tbackground-color: #9c171e;\r\n\t\tfont-family: monospace;\r\n\t}\r\n\r\n\t.answer {\r\n\t  padding: 0 18px;\r\n\t  max-height: 0;\r\n\t  overflow: hidden;\r\n\t  background-color: white;\r\n\t  border-radius: 0 0 6px 6px;\r\n\t  transition: max-height 0.4s ease, opacity 0.4s ease;\r\n\t  opacity: 0;\r\n\t}\r\n\r\n\t.answer p{\r\n\t\tfont-size: 16px;\r\n\t\tfont-weight: 400;\r\n\t\tline-height: 28px;\r\n\t\ttext-align: left;\r\n\t\ttext-transform: none;\r\n\t\tcolor: #494949;\r\n\t}\r\n\t\r\n\t.accordion-wrapper.active{\r\n\t\tbox-shadow: 0px 0px 20px 0px #4034AB38;\r\n\t}\r\n\t\r\n\t.header-faq.active .accordion-icon .vLine{\r\n\t\ttransform: translateX(-50%) rotate(0deg);\r\n\t}\r\n\r\n\t.header-faq.active + .answer {\r\n\t  opacity: 1;\r\n\t}\r\n\t\r\n\t.header-faq.active button.question::after{\r\n\t\ttransform: rotate(90deg);\r\n\t\topacity: 1;\r\n\t}\r\n\t\r\n\t.header-faq:hover button.question::after{\r\n\t\topacity: 1;\r\n\t}\r\n\t\r\n\t.faq-h3-addition {\r\n\t\tmargin: 0 !important;\r\n\t\tpadding-right: 15px;\r\n\t\tmin-width: 0;\r\n\t}\r\n<\/style>\r\n\r\n    <div class=\"accordion-wrapper\">\r\n        <div class=\"header-faq\">\r\n            <button class=\"question\">Apa perbedaan utama antara Cost Plus Contract dan Lump Sum?<\/button>\r\n        <\/div>\r\n        <div class=\"answer\">\r\n            <p>Perbedaan utamanya terletak pada risiko biaya. Pada Lump Sum, harga ditetapkan di awal dan risiko biaya ditanggung kontraktor. Pada Cost Plus, pemilik membayar biaya aktual plus keuntungan, sehingga risiko biaya bergeser ke pemilik namun menawarkan fleksibilitas lebih tinggi.<\/p>\r\n        <\/div>\r\n    <\/div>\r\n    <div class=\"accordion-wrapper\">\r\n        <div class=\"header-faq\">\r\n            <button class=\"question\">Kapan waktu terbaik menggunakan Cost Plus Contract?<\/button>\r\n        <\/div>\r\n        <div class=\"answer\">\r\n            <p>Kontrak ini paling tepat digunakan saat lingkup proyek belum terdefinisi jelas, proyek membutuhkan penyelesaian cepat (fast-track), renovasi bangunan tua dengan banyak ketidakpastian, atau proyek yang memprioritaskan kualitas material di atas kepastian biaya awal.<\/p>\r\n        <\/div>\r\n    <\/div>\r\n    <div class=\"accordion-wrapper\">\r\n        <div class=\"header-faq\">\r\n            <button class=\"question\">Apa itu Guaranteed Maximum Price (GMP) dalam Cost Plus?<\/button>\r\n        <\/div>\r\n        <div class=\"answer\">\r\n            <p>GMP adalah batas atas total biaya yang akan dibayarkan pemilik dalam kontrak Cost Plus. Jika biaya aktual melebihi batas ini, kontraktor harus menanggung kelebihannya, memberikan perlindungan anggaran bagi pemilik proyek.<\/p>\r\n        <\/div>\r\n    <\/div>\r\n    <div class=\"accordion-wrapper\">\r\n        <div class=\"header-faq\">\r\n            <button class=\"question\">Bagaimana cara mengontrol biaya dalam Cost Plus Contract?<\/button>\r\n        <\/div>\r\n        <div class=\"answer\">\r\n            <p>Pengontrolan dilakukan melalui definisi ketat tentang &#039;biaya yang diperbolehkan&#039; dalam kontrak, audit rutin terhadap tagihan dan faktur, penggunaan software manajemen proyek untuk pelacakan real-time, serta penerapan insentif bagi kontraktor untuk melakukan penghematan.<\/p>\r\n        <\/div>\r\n    <\/div>\r\n    <div class=\"accordion-wrapper\">\r\n        <div class=\"header-faq\">\r\n            <button class=\"question\">Apakah Cost Plus Contract menguntungkan bagi kontraktor?<\/button>\r\n        <\/div>\r\n        <div class=\"answer\">\r\n            <p>Ya, karena risiko kerugian akibat kenaikan harga material atau estimasi yang salah sangat minim. Kontraktor mendapatkan jaminan bahwa biaya mereka akan tertutup, ditambah dengan keuntungan yang sudah disepakati, asalkan mereka bekerja secara transparan dan efisien.<\/p>\r\n        <\/div>\r\n    <\/div>\r\n\r\n<script>\r\n    function toggleAccordion() {\r\n        var acc = document.getElementsByClassName(\"header-faq\");\r\n        for (var i = 0; i < acc.length; i++) {\r\n            acc[i].addEventListener(\"click\", function() {\r\n                for (var j = 0; j < acc.length; j++) {\r\n                    if (acc[j] !== this && acc[j].classList.contains(\"active\")) {\r\n                        acc[j].classList.remove(\"active\");\r\n                        acc[j].closest('.accordion-wrapper').classList.remove('active');\r\n                        var panel = acc[j].nextElementSibling;\r\n                        panel.style.maxHeight = null;\r\n                    }\r\n                }\r\n\r\n                this.classList.toggle(\"active\");\r\n                var accordionWrapper = this.closest('.accordion-wrapper');\r\n                var panel = this.nextElementSibling;\r\n                if (this.classList.contains(\"active\")) {\r\n                    panel.style.maxHeight = panel.scrollHeight + \"px\";\r\n                    accordionWrapper.classList.add('active');\r\n                } else {\r\n                    panel.style.maxHeight = null;\r\n                    accordionWrapper.classList.remove('active');\r\n                }\r\n            });\r\n        }\r\n    }\r\n\r\n    document.addEventListener('DOMContentLoaded', toggleAccordion);\r\n<\/script>\r\n\r\n<!-- <script>\r\n    document.addEventListener('DOMContentLoaded', function() {\r\n        document.querySelectorAll('.header-faq .question').forEach(btn => {\r\n            const text = btn.textContent.trim();\r\n            const h3 = document.createElement('h3');\r\n            h3.textContent = text;\r\n            h3.className = \"faq-h3-addition\";\r\n            btn.textContent = '';\r\n            btn.appendChild(h3);\r\n        });\r\n    });\r\n<\/script> -->\n","protected":false},"excerpt":{"rendered":"<p>Cost plus contract adalah model kontrak yang umum digunakan di berbagai proyek, terutama yang melibatkan banyak komponen biaya. Sistem ini menekankan pencatatan biaya yang transparan dan pembayaran berdasarkan biaya aktual ditambah persentase keuntungan atau fee tertentu. Model kontrak ini sering dipilih ketika proyek bersifat kompleks atau sulit diprediksi biayanya. Dengan pendekatan ini, pihak yang menjalankan [&hellip;]<\/p>\n","protected":false},"author":222,"featured_media":189672,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[3],"tags":[],"class_list":{"0":"post-189598","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-construction"},"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>Panduan Lengkap Cost Plus Contract untuk Proyek Modern<\/title>\n<meta name=\"description\" content=\"Temukan penjelasan lengkap cost plus contract termasuk perbandingan model kontrak, strategi penggunaan, dan cara menghindari risiko biaya.\" \/>\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\/cost-plus-contract\/\" \/>\n<meta property=\"og:locale\" content=\"id_ID\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Panduan Lengkap Cost Plus Contract untuk Proyek Modern\" \/>\n<meta property=\"og:description\" content=\"Temukan penjelasan lengkap cost plus contract termasuk perbandingan model kontrak, strategi penggunaan, dan cara menghindari risiko biaya.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/cost-plus-contract\/\" \/>\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-25T04:36:59+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-26T07:46:49+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/cost-plus-contract.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=\"Kinan Eliana\" \/>\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=\"Kinan Eliana\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimasi waktu membaca\" \/>\n\t<meta name=\"twitter:data2\" content=\"17 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\/cost-plus-contract\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/cost-plus-contract\/\"},\"author\":{\"name\":\"Kinan Eliana\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/53c7ddb69fea5f813a7687ddf4196411\"},\"headline\":\"Panduan Lengkap Cost Plus Contract untuk Proyek Modern\",\"datePublished\":\"2026-02-25T04:36:59+00:00\",\"dateModified\":\"2026-03-26T07:46:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/cost-plus-contract\/\"},\"wordCount\":2888,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/cost-plus-contract\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/cost-plus-contract.webp\",\"articleSection\":[\"Construction Suite\"],\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.hashmicro.com\/id\/blog\/cost-plus-contract\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/cost-plus-contract\/\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/cost-plus-contract\/\",\"name\":\"Panduan Lengkap Cost Plus Contract untuk Proyek Modern\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/cost-plus-contract\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/cost-plus-contract\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/cost-plus-contract.webp\",\"datePublished\":\"2026-02-25T04:36:59+00:00\",\"dateModified\":\"2026-03-26T07:46:49+00:00\",\"description\":\"Temukan penjelasan lengkap cost plus contract termasuk perbandingan model kontrak, strategi penggunaan, dan cara menghindari risiko biaya.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/cost-plus-contract\/#breadcrumb\"},\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.hashmicro.com\/id\/blog\/cost-plus-contract\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/cost-plus-contract\/#primaryimage\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/cost-plus-contract.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/cost-plus-contract.webp\",\"width\":1200,\"height\":675,\"caption\":\"cost plus contract\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/cost-plus-contract\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.hashmicro.com\/id\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Panduan Lengkap Cost Plus Contract untuk Proyek Modern\"}]},{\"@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\/53c7ddb69fea5f813a7687ddf4196411\",\"name\":\"Kinan Eliana\",\"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\/kinan-96x96.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/kinan-96x96.webp\",\"caption\":\"Kinan Eliana\"},\"description\":\"Kinan telah berpengalaman selama 3 tahun di bidang content writing untuk industri manufaktur, konstruksi, dan retail. Ia secara konsisten mengulas topik terkait proses operasional bisnis manufaktur, manajemen omnichannel, manajemen proyek, serta implementasi teknologi digital untuk proses bisnis.\",\"sameAs\":[\"https:\/\/www.hashmicro.com\/id\/\"],\"gender\":\"Perempuan\",\"knowsAbout\":[\"industri\",\"manajemen bisnis\"],\"knowsLanguage\":[\"Inggris\",\"Indonesia\"],\"jobTitle\":\"Content Writer\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/author\/kinan-eliana\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Panduan Lengkap Cost Plus Contract untuk Proyek Modern","description":"Temukan penjelasan lengkap cost plus contract termasuk perbandingan model kontrak, strategi penggunaan, dan cara menghindari risiko biaya.","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\/cost-plus-contract\/","og_locale":"id_ID","og_type":"article","og_title":"Panduan Lengkap Cost Plus Contract untuk Proyek Modern","og_description":"Temukan penjelasan lengkap cost plus contract termasuk perbandingan model kontrak, strategi penggunaan, dan cara menghindari risiko biaya.","og_url":"https:\/\/www.hashmicro.com\/id\/blog\/cost-plus-contract\/","og_site_name":"HashMicro Indonesia","article_publisher":"https:\/\/www.facebook.com\/hashmicro","article_published_time":"2026-02-25T04:36:59+00:00","article_modified_time":"2026-03-26T07:46:49+00:00","og_image":[{"width":1200,"height":675,"url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/cost-plus-contract.webp","type":"image\/webp"}],"author":"Kinan Eliana","twitter_card":"summary_large_image","twitter_creator":"@hashmicro","twitter_site":"@hashmicro","twitter_misc":{"Ditulis oleh":"Kinan Eliana","Estimasi waktu membaca":"17 menit"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hashmicro.com\/id\/blog\/cost-plus-contract\/#article","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/cost-plus-contract\/"},"author":{"name":"Kinan Eliana","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/53c7ddb69fea5f813a7687ddf4196411"},"headline":"Panduan Lengkap Cost Plus Contract untuk Proyek Modern","datePublished":"2026-02-25T04:36:59+00:00","dateModified":"2026-03-26T07:46:49+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/cost-plus-contract\/"},"wordCount":2888,"commentCount":0,"publisher":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#organization"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/cost-plus-contract\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/cost-plus-contract.webp","articleSection":["Construction Suite"],"inLanguage":"id","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.hashmicro.com\/id\/blog\/cost-plus-contract\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/id\/blog\/cost-plus-contract\/","url":"https:\/\/www.hashmicro.com\/id\/blog\/cost-plus-contract\/","name":"Panduan Lengkap Cost Plus Contract untuk Proyek Modern","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/cost-plus-contract\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/cost-plus-contract\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/cost-plus-contract.webp","datePublished":"2026-02-25T04:36:59+00:00","dateModified":"2026-03-26T07:46:49+00:00","description":"Temukan penjelasan lengkap cost plus contract termasuk perbandingan model kontrak, strategi penggunaan, dan cara menghindari risiko biaya.","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/cost-plus-contract\/#breadcrumb"},"inLanguage":"id","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/id\/blog\/cost-plus-contract\/"]}]},{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/cost-plus-contract\/#primaryimage","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/cost-plus-contract.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/cost-plus-contract.webp","width":1200,"height":675,"caption":"cost plus contract"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/id\/blog\/cost-plus-contract\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/id\/blog\/"},{"@type":"ListItem","position":2,"name":"Panduan Lengkap Cost Plus Contract untuk Proyek Modern"}]},{"@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\/53c7ddb69fea5f813a7687ddf4196411","name":"Kinan Eliana","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\/kinan-96x96.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/kinan-96x96.webp","caption":"Kinan Eliana"},"description":"Kinan telah berpengalaman selama 3 tahun di bidang content writing untuk industri manufaktur, konstruksi, dan retail. Ia secara konsisten mengulas topik terkait proses operasional bisnis manufaktur, manajemen omnichannel, manajemen proyek, serta implementasi teknologi digital untuk proses bisnis.","sameAs":["https:\/\/www.hashmicro.com\/id\/"],"gender":"Perempuan","knowsAbout":["industri","manajemen bisnis"],"knowsLanguage":["Inggris","Indonesia"],"jobTitle":"Content Writer","url":"https:\/\/www.hashmicro.com\/id\/blog\/author\/kinan-eliana\/"}]}},"focus_keyword":"cost plus contract","order_j":"","_links":{"self":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/189598","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\/222"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/comments?post=189598"}],"version-history":[{"count":3,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/189598\/revisions"}],"predecessor-version":[{"id":191387,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/189598\/revisions\/191387"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media\/189672"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media?parent=189598"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/categories?post=189598"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/tags?post=189598"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}