{"id":172966,"date":"2025-10-21T15:24:30","date_gmt":"2025-10-21T08:24:30","guid":{"rendered":"https:\/\/www.hashmicro.com\/id\/blog\/?p=172966"},"modified":"2026-01-30T13:39:27","modified_gmt":"2026-01-30T06:39:27","slug":"laporan-laba-rugi-perusahaan-jasa","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/id\/blog\/laporan-laba-rugi-perusahaan-jasa\/","title":{"rendered":"Laporan Laba Rugi Perusahaan Jasa 2026: Analisis &#038; Strategi"},"content":{"rendered":"<p>Laporan laba rugi untuk perusahaan jasa membantu manajemen melihat sumber pendapatan, struktur biaya, dan margin dari layanan yang dijalankan. Angka di laporan ini juga jadi dasar untuk mengecek apakah pricing, kapasitas tim, dan beban operasional sudah seimbang.<\/p>\n<p>Di praktiknya, perusahaan jasa sering kesulitan memetakan biaya ke proyek atau klien yang tepat. Akibatnya, laba terlihat aman, padahal ada proyek yang diam-diam menggerus margin karena biaya tenaga kerja, overhead, atau revisi scope tidak tercatat rapi.<\/p>\n<p>Agar laporan benar-benar berguna, komponen pendapatan dan biaya perlu disusun lebih detail dan konsisten. Dengan pemetaan biaya yang rapi, perusahaan bisa melihat margin per proyek, mengevaluasi tarif, dan menentukan prioritas layanan dengan lebih percaya diri.<\/p>\n<table style=\"border-collapse: collapse; background-color: #fffacd; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); border-radius: 25px 25px 25px 25px;\" width=\"100%\">\n<tbody>\n<tr>\n<td style=\"padding: 15px; border: none;\">\n<h3 style=\"margin-bottom: 10px;\"><span style=\"background-color: #990000; color: #ffffff; padding: 5px;\"><b>Key Takeaways<\/b><\/span><\/h3>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"#a\">Laporan laba rugi perusahaan jasa<\/a> adalah ringkasan pendapatan dan beban dalam periode tertentu yang menunjukkan laba atau rugi dari layanan.<\/li>\n<li aria-level=\"1\">Laporan laba rugi <a href=\"#b\">menjadi krusial<\/a> karena menyajikan bukti objektif atas laba, biaya, dan tren kinerja.<\/li>\n<li aria-level=\"1\"><a href=\"#c\">Ada dua format laporan laba rugi<\/a> yaitu single-step (pendapatan \u2013 beban = laba bersih) dan multiple-step (bertahap: laba kotor \u2192 laba operasional \u2192 laba bersih).<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"text-align: center;\"><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 \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><strong>Apa Itu Laporan Laba Rugi Perusahaan Jasa?<\/strong><\/h2>\n<p>Laporan laba rugi adalah laporan keuangan utama yang merangkum pendapatan dan biaya bisnis dalam periode tertentu. Bagi perusahaan jasa, fokusnya bukan pada penjualan barang, melainkan pada keuntungan dari layanan yang diberikan.<\/p>\n<p>Karena tidak memiliki persediaan barang, laporan laba rugi perusahaan jasa menyoroti pendapatan jasa serta seluruh biaya operasionalnya.<\/p>\n<p>Dengan memahami laporan ini, pemilik dan manajemen dapat menilai kinerja keuangan, menemukan sumber pemborosan, dan mengambil keputusan bisnis yang lebih tepat dan terarah.<\/p>\n<h2><strong>Mengapa Laporan Laba Rugi Penting untuk Keputusan Perusahaan Jasa?<\/strong><\/h2>\n<p>Laporan laba rugi membantu perusahaan jasa melihat layanan mana yang paling menguntungkan, biaya mana yang paling menyedot margin, dan apakah strategi penjualan benar-benar menghasilkan profit. Dari sini, keputusan seperti penetapan tarif, alokasi tim, sampai ekspansi layanan bisa dibuat lebih terukur.<\/p>\n<ul>\n<li><strong>Mengukur profitabilitas layanan\/proyek:<\/strong> Menunjukkan apakah pendapatan dari proyek\/retainer sebanding dengan biaya delivery dan overhead, sehingga margin tidak terlihat aman padahal tipis.<\/li>\n<li><strong>Dasar keputusan pricing dan paket layanan:<\/strong> Memudahkan evaluasi tarif per jam, fee proyek, atau retainer apakah perlu naik, diubah skemanya, atau dibatasi scope-nya.<\/li>\n<li><strong>Mendeteksi inefisiensi biaya operasional:<\/strong> Membantu menilai apakah biaya sales, marketing, dan administrasi tumbuh lebih cepat daripada pendapatan, sehingga strategi bisa disesuaikan lebih cepat.<\/li>\n<li><strong>Bahan penilaian untuk pihak eksternal:<\/strong> Investor\/bank biasanya melihat konsistensi laba dan tren margin untuk menilai kelayakan pendanaan, terutama pada bisnis yang bergantung pada SDM.<\/li>\n<li><strong>Dasar budgeting dan pajak:<\/strong> Menjadi acuan menyusun anggaran periode berikutnya serta menghitung laba sebelum pajak sebagai basis pelaporan pajak penghasilan.<\/li>\n<\/ul>\n<h2><strong>Komponen Utama dalam Laporan Laba Rugi Perusahaan Jasa<\/strong>\u00a0<img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-172992\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Komponen-Utama-dalam-Laporan-Laba-Rugi-Perusahaan-Jasa.webp\" alt=\"laporan laba rugi perusahaan jasa\" width=\"1200\" height=\"675\" srcset=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Komponen-Utama-dalam-Laporan-Laba-Rugi-Perusahaan-Jasa.webp 1200w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Komponen-Utama-dalam-Laporan-Laba-Rugi-Perusahaan-Jasa-300x169.webp 300w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Komponen-Utama-dalam-Laporan-Laba-Rugi-Perusahaan-Jasa-1024x576.webp 1024w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Komponen-Utama-dalam-Laporan-Laba-Rugi-Perusahaan-Jasa-768x432.webp 768w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Komponen-Utama-dalam-Laporan-Laba-Rugi-Perusahaan-Jasa-747x420.webp 747w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Komponen-Utama-dalam-Laporan-Laba-Rugi-Perusahaan-Jasa-150x84.webp 150w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Komponen-Utama-dalam-Laporan-Laba-Rugi-Perusahaan-Jasa-696x392.webp 696w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Komponen-Utama-dalam-Laporan-Laba-Rugi-Perusahaan-Jasa-1068x601.webp 1068w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/h2>\n<p>Agar laporan laba rugi perusahaan jasa bisa dianalisis dengan tepat, setiap komponennya perlu dipahami sejak awal. Setiap angka menggambarkan kinerja dalam satu periode dan berpengaruh langsung pada margin layanan, profit per proyek, serta efisiensi tim.<\/p>\n<p>Berikut komponen utama yang paling relevan untuk perusahaan jasa.<\/p>\n<h3><strong>1. Pendapatan (Revenue)<\/strong><\/h3>\n<p>Pendapatan pada perusahaan jasa biasanya datang dari fee proyek, retainer bulanan, atau tarif per jam. Karena pola penagihan bisa bertahap (DP, termin, final), pendapatan perlu dicatat berdasarkan jasa yang sudah diberikan, bukan sekadar uang yang masuk.<\/p>\n<p>Jika bisnis memakai retainer, pendapatan sebaiknya diakui sesuai periode layanan berjalan. Untuk proyek, pengakuan bisa mengikuti progres pekerjaan agar angka per bulan tidak melonjak tanpa mencerminkan delivery.<\/p>\n<h3><strong>2. Beban Pokok Penjualan Jasa (Cost of Services Rendered)<\/strong><\/h3>\n<p>Beban pokok di bisnis jasa paling sering berbentuk biaya delivery, terutama gaji\/fee tenaga profesional yang mengerjakan proyek. Komponen ini idealnya ditautkan ke proyek\/klien agar margin per proyek bisa terbaca jelas.<\/p>\n<p>Contohnya gaji konsultan yang dialokasikan berdasarkan timesheet, biaya tools khusus proyek, freelancer, serta biaya perjalanan yang memang untuk pekerjaan klien. Semakin rapi pemetaan biaya ini, semakin akurat laba kotor per layanan.<\/p>\n<h3><strong>3. Beban Operasional (<em>Operating Expenses<\/em>)<\/strong><\/h3>\n<p>Beban operasional mencakup biaya rutin untuk menjaga kegiatan perusahaan tetap berjalan, tanpa terikat pada proyek atau klien tertentu. Pada perusahaan jasa, pos ini sering meningkat seiring bertambahnya tim, naiknya biaya mendapatkan klien, serta makin banyaknya kebutuhan administrasi dan pengelolaan kontrak.<\/p>\n<p>Contohnya gaji admin\/HR\/finance, sewa kantor, utilitas, biaya sales &amp; marketing, serta biaya legal untuk kontrak. Memisahkannya dari biaya proyek penting supaya margin delivery tidak tertutup oleh overhead kantor.<\/p>\n<h3><strong>4. Laba atau Rugi (Profit or Loss)<\/strong><\/h3>\n<p>Di perusahaan jasa, angka laba lebih bermakna jika dilihat bertingkat: laba kotor untuk menilai efisiensi delivery, lalu laba operasional untuk menilai kesehatan bisnis setelah overhead.<\/p>\n<p>Jika laba kotor sehat tetapi laba operasional turun, biasanya masalahnya ada di beban kantor atau biaya akuisisi. Kalau laba kotor turun, penyebabnya sering dari jam kerja membengkak, revisi scope, atau pricing yang kurang pas.<\/p>\n<h3><strong>5. Catatan Regulasi Indonesia<\/strong><\/h3>\n<p><strong>Sesuai PSAK 1 (revisi 2023)<\/strong>, laporan laba rugi minimal perlu menampilkan komponen:<\/p>\n<ul>\n<li>Pendapatan<\/li>\n<li>Beban keuangan<\/li>\n<li>Bagian laba\/rugi entitas asosiasi (jika ada)<\/li>\n<li>Beban pajak<\/li>\n<li>Laba\/rugi periode berjalan<\/li>\n<\/ul>\n<p>Untuk UMKM, SAK EMKM umumnya menyederhanakan penyajian menjadi format single-step agar lebih ringkas dan mudah diterapkan.<\/p>\n<style>\r\n.cta-in-article-image .desktop-banner{\r\n    display: none;\r\n    text-align: center;\r\n}\r\n.cta-in-article-image .desktop-mobile{\r\n    display: block;\r\n    text-align: center;\r\n    width: 100%;\r\n}\r\n\t.cta-in-article a {\r\n\t\tfont-size: 0px !important;\r\n\t\tcolor: #fff; \r\n\t\tpadding: 0px !important; \r\n\t\tborder-radius: 0px !important; \r\n\t\tdisplay: block !important; \r\n\t\ttext-decoration: none; \r\n\t}\r\n\t\r\n\t.cta-in-article {\r\n\t\tmargin: 0px !important;\r\n\t\tpadding: 0px !important;\r\n\t\tbox-shadow: none !important;\r\n\t}\r\n\t\r\n@media (min-width: 650px) {\r\n    .cta-in-article-image .desktop-banner {\r\n        display: block!important;\r\n    }\r\n}\r\n@media (min-width: 650px) {\r\n   .cta-in-article-image .desktop-mobile {\r\n        display: none!important;\r\n    }\r\n}\r\n<\/style>\r\n<div class=\"cta-in-article-image\">\r\n\t<a href=\"https:\/\/www.hashmicro.com\/id\/offer\/download-skema-harga-software-erp?blog&utm_source=blog&medium=banner-article\" target=\"_blank\" rel=\"noopener\">\r\n\t\t<div id=\"desktop-banner-container\">\r\n\t\t\t<div class=\"desktop-banner\">\r\n\t\t\t\t<img decoding=\"async\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/02.Skema-Harga-web-resized.webp\" alt=\"download skema harga software erp\">\r\n\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t\t<div id=\"mobile-banner-container\">\r\n\t\t\t<div class=\"desktop-mobile\">\r\n\t\t\t\t<img decoding=\"async\" width=\"372\" height=\"465\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/02.-Skema-Harga-Mobile-372px.webp\" alt=\"download skema harga software erp\">\r\n\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t<\/a>\r\n<\/div>\n<h2><strong>Dua Format Utama Laporan Laba Rugi: Single-Step vs. Multiple-Step<\/strong><\/h2>\n<p>Selain komponennya, format penyajian laporan laba rugi juga penting dipahami. Ada dua format utama, yaitu single-step dan multiple-step, yang memengaruhi seberapa dalam laporan bisa dianalisis.<\/p>\n<p>Keduanya menghasilkan laba bersih yang sama, namun format multiple-step memberikan insight lebih detail untuk pengambilan keputusan. Berikut perbedaan serta kelebihan masing-masing format agar Anda bisa memilih yang paling sesuai untuk bisnis Anda.<\/p>\n<h3>1. Format Single-Step (Langkah Tunggal)<\/h3>\n<p>Format ini adalah yang paling sederhana. Sesuai namanya, perhitungannya hanya melibatkan satu langkah utama: mengurangkan total semua beban dari total semua pendapatan untuk mendapatkan laba bersih.<\/p>\n<p>Semua jenis pendapatan dikelompokkan menjadi satu, dan semua jenis beban (baik pokok maupun operasional) juga digabungkan. Format ini mudah dibuat dan dibaca, sehingga cocok untuk bisnis kecil atau untuk laporan ringkas yang tidak memerlukan analisis mendalam.<\/p>\n<h3>2. Format Multiple-Step (Langkah Ganda)<\/h3>\n<p>Format ini jauh lebih detail dan informatif. Perhitungan laba bersih dilakukan melalui beberapa langkah atau tahapan. Pertama, pendapatan dikurangi beban pokok penjualan untuk menghasilkan <strong>Laba Kotor<\/strong>.<\/p>\n<p>Kemudian, laba kotor dikurangi total beban operasional untuk mendapatkan <strong>Laba Operasional<\/strong>. Terakhir, laba operasional disesuaikan dengan pendapatan dan beban non-operasional serta pajak untuk menghasilkan <strong>Laba Bersih<\/strong>. Keunggulan utamanya adalah penyajian metrik Laba Kotor dan Laba Operasional, yang sangat penting untuk analisis profitabilitas.<\/p>\n<h2><strong>Cara Membuat Laporan Laba Rugi Perusahaan Jasa<\/strong><\/h2>\n<p>Menyusun laporan laba rugi secara manual membutuhkan ketelitian agar pendapatan dan biaya tercatat dengan benar. Prosesnya dimulai dari pencatatan transaksi hingga penyesuaian dan penutupan buku di akhir periode.<\/p>\n<p>Meski terlihat teknis, memahami alurnya membantu Anda mengontrol keuangan bisnis dengan lebih baik. Berikut langkah-langkah praktis menyusun laporan laba rugi perusahaan jasa.<\/p>\n<h3>1. Kumpulkan dan susun neraca saldo (Trial Balance)<\/h3>\n<p>Langkah pertama adalah menyusun <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/neraca-saldo-dalam-akuntansi\/\">neraca saldo<\/a> dari buku besar perusahaan Anda pada akhir periode akuntansi. Neraca saldo adalah daftar semua akun beserta saldo debit dan kreditnya.<\/p>\n<p>Tujuannya adalah untuk memastikan bahwa total debit sama dengan total kredit, yang menandakan tidak ada kesalahan matematis dalam proses pencatatan awal. Neraca saldo ini akan menjadi sumber utama angka-angka yang akan dimasukkan ke dalam laporan laba rugi.<\/p>\n<h3>2. Buat jurnal penyesuaian (Adjusting Entries)<\/h3>\n<p>Tidak semua transaksi tercatat secara sempurna dalam kegiatan sehari-hari. Oleh karena itu, jurnal penyesuaian diperlukan untuk menerapkan prinsip akuntansi akrual, di mana pendapatan diakui saat dihasilkan (bukan saat diterima) dan beban diakui saat terjadi (bukan saat dibayar).<\/p>\n<p>Contoh penyesuaian termasuk mencatat beban penyusutan aset, mengakui pendapatan diterima di muka yang sudah menjadi hak, atau mencatat beban yang masih harus dibayar seperti gaji.<\/p>\n<h3>3. Susun laporan laba rugi berdasarkan format pilihan<\/h3>\n<p>Setelah neraca saldo disesuaikan, Anda dapat mulai menyusun laporan laba rugi. Pindahkan semua saldo akun pendapatan dan akun beban dari neraca saldo yang telah disesuaikan ke dalam format laporan laba rugi yang Anda pilih (<em>single-step<\/em> atau <em>multiple-step<\/em>).<\/p>\n<p>Pastikan Anda mengklasifikasikan setiap akun dengan benar, terutama jika menggunakan format <em>multiple-step<\/em> yang memisahkan beban pokok dan beban operasional.<\/p>\n<h3>4. Hitung laba bersih dan buat laporan perubahan modal<\/h3>\n<p>Setelah semua pendapatan dan beban tercantum, hitunglah laba bersih dengan mengurangkan total beban dari total pendapatan.<\/p>\n<p>Angka laba bersih ini kemudian akan digunakan untuk menyusun laporan perubahan modal, yang menunjukkan bagaimana modal pemilik berubah selama periode tersebut akibat laba (atau rugi) dan penarikan pribadi (prive). Laporan ini penting untuk melacak pertumbuhan ekuitas bisnis Anda.<\/p>\n<h3>5. Lakukan penutupan buku (Closing Entries)<\/h3>\n<p>Langkah terakhir dalam siklus akuntansi adalah membuat jurnal penutup. Tujuannya adalah untuk me-nol-kan saldo semua akun sementara (akun pendapatan, beban, dan prive) dan memindahkan saldo laba bersih ke akun modal.<\/p>\n<p>Proses ini secara resmi menutup pembukuan untuk periode saat ini dan menyiapkan akun-akun tersebut untuk periode akuntansi berikutnya dengan saldo awal nol.<\/p>\n<h2><strong>Contoh Laporan Laba Rugi Perusahaan Jasa (Format Multiple-Step)<\/strong><\/h2>\n<p>Teori dan langkah-langkah akan lebih mudah dipahami dengan melihat contoh konkret. Mari kita lihat bagaimana laporan laba rugi format <em>multiple-step<\/em> diterapkan pada sebuah perusahaan jasa fiktif, yaitu \u201cPT Cipta Solusi Digital,\u201d sebuah agensi konsultan IT. Laporan ini mencakup periode satu tahun yang berakhir pada 31 Desember 2024, dan semua angka disajikan dalam Rupiah.<\/p>\n<p>Dengan menggunakan format <em>multiple-step<\/em>, kita tidak hanya akan melihat laba bersih di akhir, tetapi juga metrik-metrik penting di antaranya seperti laba kotor dan laba operasional.<\/p>\n<p>Perhatikan bagaimana setiap pendapatan dan beban diklasifikasikan dengan cermat untuk memberikan gambaran kinerja yang lebih detail dan memudahkan analisis strategis. contoh laporan laba rugi perusahaan jasa ini akan menjadi panduan visual yang jelas bagi Anda dalam menyusun laporan serupa untuk bisnis Anda sendiri.<\/p>\n<div style=\"overflow-x: auto;\">\n<table style=\"width: 100%; border-collapse: collapse;\">\n<caption style=\"caption-side: bottom; padding-top: 10px; font-size: 0.9em; font-style: italic;\">Tabel 1: Contoh Laporan Laba Rugi Perusahaan Jasa<\/caption>\n<thead>\n<tr>\n<th style=\"border: 1px solid #ddd; padding: 8px; text-align: center; background-color: #f2f2f2;\" colspan=\"2\"><strong>PT Cipta Solusi Digital<\/strong><br \/>\n<strong>Laporan Laba Rugi<\/strong><br \/>\n<strong>Untuk Tahun yang Berakhir pada 31 Desember 2024<\/strong><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"border: 1px solid #ddd; padding: 8px;\"><strong>Pendapatan Jasa<\/strong><\/td>\n<td style=\"border: 1px solid #ddd; padding: 8px; text-align: right;\"><strong>Rp 1.000.000.000<\/strong><\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ddd; padding: 8px; padding-left: 20px;\">Beban Pokok Penjualan:<\/td>\n<td style=\"border: 1px solid #ddd; padding: 8px; text-align: right;\"><\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ddd; padding: 8px; padding-left: 30px;\">Gaji Konsultan<\/td>\n<td style=\"border: 1px solid #ddd; padding: 8px; text-align: right;\">Rp 150.000.000<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ddd; padding: 8px; padding-left: 30px;\">Biaya Software Proyek<\/td>\n<td style=\"border: 1px solid #ddd; padding: 8px; text-align: right;\">Rp 50.000.000<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ddd; padding: 8px; padding-left: 20px;\"><strong>Total Beban Pokok Penjualan<\/strong><\/td>\n<td style=\"border: 1px solid #ddd; padding: 8px; text-align: right;\"><strong>(Rp 200.000.000)<\/strong><\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ddd; padding: 8px; background-color: #f2f2f2;\"><strong>Laba Kotor<\/strong><\/td>\n<td style=\"border: 1px solid #ddd; padding: 8px; text-align: right; background-color: #f2f2f2;\"><strong>Rp 800.000.000<\/strong><\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ddd; padding: 8px; padding-left: 20px;\">Beban Operasional:<\/td>\n<td style=\"border: 1px solid #ddd; padding: 8px; text-align: right;\"><\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ddd; padding: 8px; padding-left: 30px;\">Beban Gaji &amp; Administrasi<\/td>\n<td style=\"border: 1px solid #ddd; padding: 8px; text-align: right;\">Rp 200.000.000<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ddd; padding: 8px; padding-left: 30px;\">Beban Pemasaran<\/td>\n<td style=\"border: 1px solid #ddd; padding: 8px; text-align: right;\">Rp 150.000.000<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ddd; padding: 8px; padding-left: 30px;\">Beban Sewa Kantor<\/td>\n<td style=\"border: 1px solid #ddd; padding: 8px; text-align: right;\">Rp 80.000.000<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ddd; padding: 8px; padding-left: 30px;\">Beban Penyusutan Aset<\/td>\n<td style=\"border: 1px solid #ddd; padding: 8px; text-align: right;\">Rp 20.000.000<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ddd; padding: 8px; padding-left: 20px;\"><strong>Total Beban Operasional<\/strong><\/td>\n<td style=\"border: 1px solid #ddd; padding: 8px; text-align: right;\"><strong>(Rp 450.000.000)<\/strong><\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ddd; padding: 8px; background-color: #f2f2f2;\"><strong>Laba Operasional<\/strong><\/td>\n<td style=\"border: 1px solid #ddd; padding: 8px; text-align: right; background-color: #f2f2f2;\"><strong>Rp 350.000.000<\/strong><\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ddd; padding: 8px;\">Pendapatan Bunga<\/td>\n<td style=\"border: 1px solid #ddd; padding: 8px; text-align: right;\">Rp 10.000.000<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ddd; padding: 8px;\">Beban Bunga<\/td>\n<td style=\"border: 1px solid #ddd; padding: 8px; text-align: right;\">(Rp 20.000.000)<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ddd; padding: 8px;\"><strong>Laba Sebelum Pajak<\/strong><\/td>\n<td style=\"border: 1px solid #ddd; padding: 8px; text-align: right;\"><strong>Rp 340.000.000<\/strong><\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ddd; padding: 8px;\">Beban Pajak Penghasilan<\/td>\n<td style=\"border: 1px solid #ddd; padding: 8px; text-align: right;\">(Rp 74.800.000)<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ddd; padding: 8px; background-color: #e8f5e9;\"><strong>Laba Bersih<\/strong><\/td>\n<td style=\"border: 1px solid #ddd; padding: 8px; text-align: right; background-color: #e8f5e9;\"><strong>Rp 265.200.000<\/strong><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Dari contoh laporan laba rugi perusahaan jasa di atas, kita dapat menarik beberapa <em>insight<\/em> penting yang tidak akan terlihat pada format <em>single-step<\/em>. Laba kotor sebesar Rp 800.000.000 menunjukkan bahwa biaya langsung untuk memberikan layanan sangat efisien, dengan margin laba kotor mencapai 80%.<\/p>\n<p>Namun, setelah dikurangi beban operasional, laba operasional turun menjadi Rp 350.000.000, yang mengindikasikan bahwa biaya untuk menjalankan perusahaan (pemasaran, sewa, administrasi) cukup signifikan.<\/p>\n<p>Kemampuan untuk melakukan analisis tingkat ini adalah kekuatan utama dari format <em>multiple-step<\/em> yang membuatnya menjadi alat manajerial yang strategis.<\/p>\n<h2><strong>Cara Menganalisis Laporan Laba Rugi Perusahaan Jasa<\/strong><\/h2>\n<p><a href=\"https:\/\/www.hashmicro.com\/id\/blog\/laporan-laba-rugi-perusahaan-jasa\/laba-rugi-8\/\" rel=\"attachment wp-att-188078\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-188078\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/laba-rugi-8.webp\" alt=\"laba rugi (8)\" width=\"1336\" height=\"597\" srcset=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/laba-rugi-8.webp 1336w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/laba-rugi-8-300x134.webp 300w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/laba-rugi-8-1024x458.webp 1024w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/laba-rugi-8-768x343.webp 768w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/laba-rugi-8-940x420.webp 940w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/laba-rugi-8-150x67.webp 150w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/laba-rugi-8-696x311.webp 696w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/laba-rugi-8-1068x477.webp 1068w\" sizes=\"auto, (max-width: 1336px) 100vw, 1336px\" \/><\/a><\/p>\n<p>Laporan laba rugi yang rapi baru akan terasa manfaatnya saat angkanya dibaca untuk mengambil keputusan. Untuk perusahaan jasa, analisis yang tepat membantu melihat apakah margin sehat, proyek mana yang paling menguntungkan, dan biaya mana yang mulai membengkak.<\/p>\n<p>Dengan beberapa teknik sederhana, tren kinerja bisa terlihat lebih cepat misalnya pendapatan per layanan naik, tetapi laba tertahan karena biaya delivery atau overhead. Dari sini, manajemen bisa mengecek efisiensi operasional tanpa menunggu masalah membesar.<\/p>\n<p>Berikut teknik analisis yang paling sering dipakai agar laporan laba rugi perusahaan jasa lebih tepat:<\/p>\n<h3><strong>1. Analisis vertikal (common-size)<\/strong><\/h3>\n<p>Ubah setiap pos menjadi persentase dari total pendapatan. Cara ini memudahkan melihat porsi biaya misalnya biaya delivery, administrasi, atau pemasaran dibandingkan omzet jasa.<\/p>\n<p>Contoh: biaya tenaga kerja proyek = 45% dari pendapatan, sementara periode lalu 38%. Ini sinyal efisiensi delivery perlu ditinjau.<\/p>\n<h3><strong>2. Analisis horizontal (tren)<\/strong><\/h3>\n<p>Bandingkan laporan beberapa periode (misalnya 3 bulan\/3 tahun) untuk melihat arah pergerakan. Fokuskan pada pertumbuhan pendapatan per layanan dan laju kenaikan biaya operasional.<\/p>\n<p>Contoh: pendapatan naik 15%, tetapi beban operasional naik 25%\u2014margin berpotensi tertekan.<\/p>\n<h3><strong>3. Rasio profitabilitas<\/strong><\/h3>\n<p>Gunakan rasio untuk menilai efisiensi laba di tiap level. Untuk perusahaan jasa, tiga yang paling praktis:<\/p>\n<ul>\n<li>Margin laba kotor = laba kotor \/ pendapatan<\/li>\n<li>Margin laba operasional = laba operasional \/ pendapatan<\/li>\n<li>Margin laba bersih = laba bersih \/ pendapatan<\/li>\n<\/ul>\n<p>Rasio ini membantu melihat kebocoran margin terjadi di biaya delivery, overhead, atau pos non-operasional.<\/p>\n<h2><strong>Studi Kasus: Analisis Laporan Laba Rugi Perusahaan Jasa di Indonesia<\/strong><\/h2>\n<p>Agar analisis laporan laba rugi perusahaan jasa tidak berhenti di angka, contoh berikut menunjukkan hubungan langsung antara pendapatan proyek, biaya delivery, dan beban operasional.<\/p>\n<p>Dari satu laporan sederhana, perusahaan bisa melihat margin yang realistis, titik biaya yang membengkak, dan keputusan apa yang paling masuk akal untuk memperbaiki profitabilitas.<\/p>\n<h3>Case: PT Cipta Solusi Digital (Konsultan IT Berbasis Proyek)<\/h3>\n<p><strong>Profil singkat:\u00a0<\/strong><\/p>\n<p>Perusahaan konsultan IT di Indonesia dengan pendapatan utama dari proyek implementasi dan kontrak maintenance. Biaya terbesar berasal dari tim delivery (konsultan) dan lembur saat mendekati deadline.<\/p>\n<p><strong>Ringkasan laporan laba rugi (tahun berakhir 31\/12\/2024)<\/strong><\/p>\n<ul>\n<li>Pendapatan: Rp 12.000.000.000<\/li>\n<li>Beban pokok jasa (delivery): Rp 7.100.000.000<\/li>\n<li>Laba kotor: Rp 4.900.000.000<\/li>\n<li>Beban operasional: Rp 3.900.000.000<\/li>\n<li>Laba operasional: Rp 1.000.000.000<\/li>\n<li>Beban keuangan + pajak (net): Rp 350.000.000<\/li>\n<li>Laba bersih: Rp 650.000.000<\/li>\n<\/ul>\n<p><strong>Rasio kunci (untuk perusahaan jasa)<\/strong><\/p>\n<ul>\n<li>Margin laba kotor: 4,9 \/ 12,0 = 40,8%<\/li>\n<li>Margin laba operasional: 1,0 \/ 12,0 = 8,3%<\/li>\n<li>Margin laba bersih: 0,65 \/ 12,0 = 5,4%<\/li>\n<\/ul>\n<p><strong>Interpretasi singkat<\/strong><\/p>\n<ul>\n<li>Laba kotor terlihat sehat, menandakan tarif jasa dan struktur biaya delivery cukup kompetitif. Namun, margin ini baru valid jika biaya delivery ditautkan ke proyek (misalnya lewat timesheet), bukan tercampur dengan biaya kantor.<\/li>\n<li>Margin operasional menipis, biasanya dipicu biaya rekrutmen, sales, atau administrasi proyek yang membesar.<\/li>\n<li>Margin bersih relatif tipis, sehingga pembengkakan jam kerja dan revisi scope yang tidak tertagih bisa cepat menggerus laba.<\/li>\n<\/ul>\n<p><strong>Temuan utama<\/strong><\/p>\n<ul>\n<li>Ada proyek besar yang menyumbang omzet, tetapi menyedot jam tim karena revisi scope, sehingga biaya delivery naik tanpa kenaikan pendapatan yang sepadan.<\/li>\n<li>Beban operasional naik karena penambahan headcount lebih cepat daripada pertumbuhan utilisasi (jam billable).<\/li>\n<\/ul>\n<p><strong>Aksi yang bisa diambil<\/strong><\/p>\n<ul>\n<li>Terapkan aturan change request agar revisi pekerjaan tercatat dan bisa ditagihkan.<\/li>\n<li>Pantau utilization per tim\/proyek untuk menekan kebocoran biaya delivery.<\/li>\n<li>Review pricing proyek dengan memasukkan buffer jam dan risiko perubahan requirement, terutama untuk klien yang sering meminta revisi.<\/li>\n<\/ul>\n<h2><strong>Kesalahan Umum yang Perlu Dihindari Saat Menyusun Laporan Laba Rugi Perusahaan Jasa<\/strong><\/h2>\n<p>Kesalahan kecil pada laporan laba rugi perusahaan jasa bisa membuat profitabilitas proyek, klien, atau layanan terbaca keliru. Ini sering terjadi karena pencatatan manual, standar akun yang tidak konsisten, atau biaya yang tidak dipetakan per proyek.<\/p>\n<p>Berikut kesalahan yang paling sering muncul dan perlu diwaspadai:<\/p>\n<h3><strong>1. Pengakuan pendapatan tidak sesuai progres layanan<\/strong><\/h3>\n<p>Pendapatan dicatat saat uang diterima, bukan saat jasa diberikan. Akibatnya, pendapatan per periode bisa naik-turun tidak wajar, terutama untuk proyek jangka panjang atau retainer.<\/p>\n<p>Contoh: pembayaran di muka proyek 6 bulan seharusnya diakui bertahap, bukan sekaligus.<\/p>\n<h3><strong>2. Biaya proyek tercampur dengan biaya operasional kantor<\/strong><\/h3>\n<p>Biaya delivery layanan (biaya langsung) harus dibedakan dari biaya kantor (operasional). Kalau tercampur, margin terlihat bias dan keputusan pricing bisa meleset.<\/p>\n<p>Contoh: gaji tim delivery proyek berbeda perlakuannya dengan gaji admin kantor.<\/p>\n<h3><strong>3. Biaya tenaga kerja tidak ditautkan ke proyek\/klien<\/strong><\/h3>\n<p>Di perusahaan jasa, biaya terbesar biasanya tenaga kerja. Jika jam kerja tidak dicatat per proyek\/klien, proyek yang menyedot banyak waktu bisa terlihat untung padahal margin sebenarnya tipis.<\/p>\n<h3><strong>4. Depresiasi aset tidak dicatat<\/strong><\/h3>\n<p>Laptop, kendaraan, atau perangkat kerja tetap mengalami penyusutan nilai. Jika depresiasi diabaikan, laba tampak lebih besar dari kondisi sebenarnya dan bisa mengganggu perhitungan pajak.<\/p>\n<h3><strong>5. Rekonsiliasi bank tidak rutin<\/strong><\/h3>\n<p>Biaya admin bank, potongan payment gateway, atau transaksi kecil sering terlewat atau dobel. Lama-lama, ini mengubah angka laba bersih dan saldo kas yang dilaporkan.<\/p>\n<h2><strong>Kesimpulan\u00a0<\/strong><\/h2>\n<p>Laporan laba rugi bukan sekadar kewajiban akuntansi, tetapi alat penting untuk menilai pendapatan, biaya, dan profitabilitas perusahaan jasa. Saat komponennya tersusun rapi dan konsisten, manajemen bisa membaca kinerja bisnis dengan lebih jelas dan mengambil keputusan yang lebih akurat.<\/p>\n<p>Meski begitu, penyusunan manual sering memakan waktu dan rawan salah input, apalagi ketika data tersebar di banyak proyek atau klien. Karena itu, banyak perusahaan beralih ke sistem akuntansi yang membantu pencatatan lebih terstruktur, mempercepat pembuatan laporan, dan menjaga data tetap selaras.<\/p>\n<p>Jika tim ingin mengevaluasi cara penyusunan laporan laba rugi yang lebih efisien dan sesuai kebutuhan operasional, sesi <a href=\"https:\/\/www.hashmicro.com\/id\/tour-produk-gratis\/\">konsultasi gratis<\/a> bisa jadi langkah awal yang praktis untuk mendukung kebutuhan bisnis.<\/p>\n<a href=\"https:\/\/www.hashmicro.com\/id\/sistem-akuntansi?medium=moneysite-banner\" target=\"_blank\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/01\/accounting-laporan.webp\" data-desktop-src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/01\/accounting-laporan.webp\" data-mobile-src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/01\/accounting-laporan-m.webp\" alt=\"Accounting_Laporan\" 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><strong>Pertanyaan tentang Laporan Laba Rugi Perusahaan Jasa<\/strong><\/h2>\n<ul class=\"bottom_faq\">\n<li>\n<details>\n<summary><strong>Apa perbedaan utama laporan laba rugi perusahaan jasa dan dagang?<\/strong><\/summary>\n<p>Perbedaan utama terletak pada komponen Beban Pokok. Perusahaan dagang memiliki &#8216;Harga Pokok Penjualan&#8217; yang terkait persediaan barang, sedangkan perusahaan jasa memiliki &#8216;Beban Pokok Penjualan Jasa&#8217; yang mencakup biaya langsung penyediaan layanan, seperti gaji tenaga ahli.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Seberapa sering perusahaan jasa harus membuat laporan laba rugi?<\/strong><\/summary>\n<p>Idealnya, laporan laba rugi harus dibuat setidaknya setiap bulan. Ini memungkinkan manajemen untuk memantau kinerja secara rutin, mengidentifikasi masalah lebih awal, dan membuat penyesuaian strategi dengan cepat sebelum masalah menjadi lebih besar.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Apa itu laba kotor dalam konteks perusahaan jasa?<\/strong><\/summary>\n<p>Laba kotor pada perusahaan jasa dihitung dengan mengurangi biaya langsung penyediaan layanan (seperti gaji konsultan atau software proyek) dari total pendapatan. Metrik ini menunjukkan efisiensi inti dari model bisnis jasa Anda sebelum memperhitungkan biaya operasional.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Bagaimana software akuntansi membantu menganalisis laporan laba rugi?<\/strong><\/summary>\n<p>Software akuntansi modern seringkali dilengkapi dasbor analitik yang secara otomatis menghitung dan memvisualisasikan rasio profitabilitas, analisis tren, dan perbandingan antar periode. Ini mempercepat proses analisis dan memungkinkan Anda fokus pada interpretasi data, bukan pada perhitungannya.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Apa langkah pertama jika laporan menunjukkan kerugian?<\/strong><\/summary>\n<p>Langkah pertama adalah melakukan analisis mendalam untuk mengidentifikasi penyebabnya. Tinjau setiap komponen beban untuk melihat apakah ada kenaikan yang tidak wajar dan bandingkan dengan periode sebelumnya. Setelah akar masalah ditemukan, Anda dapat menyusun rencana tindakan untuk menekan biaya atau meningkatkan pendapatan.<\/p>\n<\/details>\n<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Laporan laba rugi untuk perusahaan jasa membantu manajemen melihat sumber pendapatan, struktur biaya, dan margin dari layanan yang dijalankan. Angka di laporan ini juga jadi dasar untuk mengecek apakah pricing, kapasitas tim, dan beban operasional sudah seimbang. Di praktiknya, perusahaan jasa sering kesulitan memetakan biaya ke proyek atau klien yang tepat. Akibatnya, laba terlihat aman, [&hellip;]<\/p>\n","protected":false},"author":164,"featured_media":172990,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1232],"tags":[],"class_list":{"0":"post-172966","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-accounting"},"acf":{"post_reviewer":""},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.1 (Yoast SEO v25.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Laporan Laba Rugi Perusahaan Jasa 2026: Analisis &amp; Strategi<\/title>\n<meta name=\"description\" content=\"Laporan laba rugi untuk perusahaan jasa membantu manajemen melihat sumber pendapatan, struktur biaya, dan margin dari layanan yang dijalankan. Angka di\" \/>\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\/laporan-laba-rugi-perusahaan-jasa\/\" \/>\n<meta property=\"og:locale\" content=\"id_ID\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Laporan Laba Rugi Perusahaan Jasa 2026: Analisis &amp; Strategi\" \/>\n<meta property=\"og:description\" content=\"Laporan laba rugi untuk perusahaan jasa membantu manajemen melihat sumber pendapatan, struktur biaya, dan margin dari layanan yang dijalankan. Angka di\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/laporan-laba-rugi-perusahaan-jasa\/\" \/>\n<meta property=\"og:site_name\" content=\"HashMicro Indonesia\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/hashmicro\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-21T08:24:30+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-01-30T06:39:27+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/laporan-laba-rugi-perusahaan-jasa.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=\"Dewi Sartika\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@hashmicro\" \/>\n<meta name=\"twitter:site\" content=\"@hashmicro\" \/>\n<meta name=\"twitter:label1\" content=\"Ditulis oleh\" \/>\n\t<meta name=\"twitter:data1\" content=\"Dewi Sartika\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimasi waktu membaca\" \/>\n\t<meta name=\"twitter:data2\" content=\"16 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\/laporan-laba-rugi-perusahaan-jasa\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/laporan-laba-rugi-perusahaan-jasa\/\"},\"author\":{\"name\":\"Dewi Sartika\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/9d2e46cf3129df0cdcfe1ea9bbdb74f1\"},\"headline\":\"Laporan Laba Rugi Perusahaan Jasa 2026: Analisis &#038; Strategi\",\"datePublished\":\"2025-10-21T08:24:30+00:00\",\"dateModified\":\"2026-01-30T06:39:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/laporan-laba-rugi-perusahaan-jasa\/\"},\"wordCount\":2739,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/laporan-laba-rugi-perusahaan-jasa\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/laporan-laba-rugi-perusahaan-jasa.webp\",\"articleSection\":[\"Accounting\"],\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.hashmicro.com\/id\/blog\/laporan-laba-rugi-perusahaan-jasa\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/laporan-laba-rugi-perusahaan-jasa\/\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/laporan-laba-rugi-perusahaan-jasa\/\",\"name\":\"Laporan Laba Rugi Perusahaan Jasa 2026: Analisis & Strategi\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/laporan-laba-rugi-perusahaan-jasa\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/laporan-laba-rugi-perusahaan-jasa\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/laporan-laba-rugi-perusahaan-jasa.webp\",\"datePublished\":\"2025-10-21T08:24:30+00:00\",\"dateModified\":\"2026-01-30T06:39:27+00:00\",\"description\":\"Laporan laba rugi untuk perusahaan jasa membantu manajemen melihat sumber pendapatan, struktur biaya, dan margin dari layanan yang dijalankan. Angka di\",\"breadcrumb\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/laporan-laba-rugi-perusahaan-jasa\/#breadcrumb\"},\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.hashmicro.com\/id\/blog\/laporan-laba-rugi-perusahaan-jasa\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/laporan-laba-rugi-perusahaan-jasa\/#primaryimage\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/laporan-laba-rugi-perusahaan-jasa.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/laporan-laba-rugi-perusahaan-jasa.webp\",\"width\":1200,\"height\":675,\"caption\":\"laporan laba rugi perusahaan jasa\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/laporan-laba-rugi-perusahaan-jasa\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.hashmicro.com\/id\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Laporan Laba Rugi Perusahaan Jasa 2026: Analisis &#038; 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\/9d2e46cf3129df0cdcfe1ea9bbdb74f1\",\"name\":\"Dewi Sartika\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Dewi-Sartika-2-96x96.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Dewi-Sartika-2-96x96.webp\",\"caption\":\"Dewi Sartika\"},\"description\":\"Berbekal pengalaman selama 6 tahun dalam industri SaaS, Dewi telah menjadi praktisi untuk penulisan artikel terkait accounting dan bidang keuangan. Ia berfokus menulis artikel seputar Laporan keuangan (neraca, laba rugi, arus kas), standar akuntansi (PSAK, IFRS, GAAP), perpajakan (e-faktur, PPn, tax planning), dan manajemen biaya.\",\"sameAs\":[\"https:\/\/www.hashmicro.com\/id\/\"],\"gender\":\"Perempuan\",\"knowsAbout\":[\"Akuntansi\",\"Keuangan\",\"Pembukuan\"],\"knowsLanguage\":[\"Inggris\",\"Indonesia\"],\"jobTitle\":\"Senior Content Writer\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/author\/dewisartika\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Laporan Laba Rugi Perusahaan Jasa 2026: Analisis & Strategi","description":"Laporan laba rugi untuk perusahaan jasa membantu manajemen melihat sumber pendapatan, struktur biaya, dan margin dari layanan yang dijalankan. Angka di","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\/laporan-laba-rugi-perusahaan-jasa\/","og_locale":"id_ID","og_type":"article","og_title":"Laporan Laba Rugi Perusahaan Jasa 2026: Analisis & Strategi","og_description":"Laporan laba rugi untuk perusahaan jasa membantu manajemen melihat sumber pendapatan, struktur biaya, dan margin dari layanan yang dijalankan. Angka di","og_url":"https:\/\/www.hashmicro.com\/id\/blog\/laporan-laba-rugi-perusahaan-jasa\/","og_site_name":"HashMicro Indonesia","article_publisher":"https:\/\/www.facebook.com\/hashmicro","article_published_time":"2025-10-21T08:24:30+00:00","article_modified_time":"2026-01-30T06:39:27+00:00","og_image":[{"width":1200,"height":675,"url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/laporan-laba-rugi-perusahaan-jasa.webp","type":"image\/webp"}],"author":"Dewi Sartika","twitter_card":"summary_large_image","twitter_creator":"@hashmicro","twitter_site":"@hashmicro","twitter_misc":{"Ditulis oleh":"Dewi Sartika","Estimasi waktu membaca":"16 menit"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hashmicro.com\/id\/blog\/laporan-laba-rugi-perusahaan-jasa\/#article","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/laporan-laba-rugi-perusahaan-jasa\/"},"author":{"name":"Dewi Sartika","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/9d2e46cf3129df0cdcfe1ea9bbdb74f1"},"headline":"Laporan Laba Rugi Perusahaan Jasa 2026: Analisis &#038; Strategi","datePublished":"2025-10-21T08:24:30+00:00","dateModified":"2026-01-30T06:39:27+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/laporan-laba-rugi-perusahaan-jasa\/"},"wordCount":2739,"commentCount":0,"publisher":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#organization"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/laporan-laba-rugi-perusahaan-jasa\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/laporan-laba-rugi-perusahaan-jasa.webp","articleSection":["Accounting"],"inLanguage":"id","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.hashmicro.com\/id\/blog\/laporan-laba-rugi-perusahaan-jasa\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/id\/blog\/laporan-laba-rugi-perusahaan-jasa\/","url":"https:\/\/www.hashmicro.com\/id\/blog\/laporan-laba-rugi-perusahaan-jasa\/","name":"Laporan Laba Rugi Perusahaan Jasa 2026: Analisis & Strategi","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/laporan-laba-rugi-perusahaan-jasa\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/laporan-laba-rugi-perusahaan-jasa\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/laporan-laba-rugi-perusahaan-jasa.webp","datePublished":"2025-10-21T08:24:30+00:00","dateModified":"2026-01-30T06:39:27+00:00","description":"Laporan laba rugi untuk perusahaan jasa membantu manajemen melihat sumber pendapatan, struktur biaya, dan margin dari layanan yang dijalankan. Angka di","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/laporan-laba-rugi-perusahaan-jasa\/#breadcrumb"},"inLanguage":"id","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/id\/blog\/laporan-laba-rugi-perusahaan-jasa\/"]}]},{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/laporan-laba-rugi-perusahaan-jasa\/#primaryimage","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/laporan-laba-rugi-perusahaan-jasa.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/laporan-laba-rugi-perusahaan-jasa.webp","width":1200,"height":675,"caption":"laporan laba rugi perusahaan jasa"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/id\/blog\/laporan-laba-rugi-perusahaan-jasa\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/id\/blog\/"},{"@type":"ListItem","position":2,"name":"Laporan Laba Rugi Perusahaan Jasa 2026: Analisis &#038; 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\/9d2e46cf3129df0cdcfe1ea9bbdb74f1","name":"Dewi Sartika","image":{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/image\/","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Dewi-Sartika-2-96x96.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Dewi-Sartika-2-96x96.webp","caption":"Dewi Sartika"},"description":"Berbekal pengalaman selama 6 tahun dalam industri SaaS, Dewi telah menjadi praktisi untuk penulisan artikel terkait accounting dan bidang keuangan. Ia berfokus menulis artikel seputar Laporan keuangan (neraca, laba rugi, arus kas), standar akuntansi (PSAK, IFRS, GAAP), perpajakan (e-faktur, PPn, tax planning), dan manajemen biaya.","sameAs":["https:\/\/www.hashmicro.com\/id\/"],"gender":"Perempuan","knowsAbout":["Akuntansi","Keuangan","Pembukuan"],"knowsLanguage":["Inggris","Indonesia"],"jobTitle":"Senior Content Writer","url":"https:\/\/www.hashmicro.com\/id\/blog\/author\/dewisartika\/"}]}},"focus_keyword":"Laporan laba rugi perusahaan jasa","order_j":"","_links":{"self":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/172966","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/users\/164"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/comments?post=172966"}],"version-history":[{"count":11,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/172966\/revisions"}],"predecessor-version":[{"id":188083,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/172966\/revisions\/188083"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media\/172990"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media?parent=172966"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/categories?post=172966"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/tags?post=172966"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}