{"id":188055,"date":"2026-02-12T10:16:49","date_gmt":"2026-02-12T03:16:49","guid":{"rendered":"https:\/\/www.hashmicro.com\/id\/blog\/?p=188055"},"modified":"2026-03-02T13:26:31","modified_gmt":"2026-03-02T06:26:31","slug":"perbedaan-open-bill-dan-close-bill","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/id\/blog\/perbedaan-open-bill-dan-close-bill\/","title":{"rendered":"Perbedaan Open Bill dan Close Bill: Panduan Lengkap Sistem POS"},"content":{"rendered":"<p>Dalam operasional restoran dan kafe, alur pembayaran bukan hanya urusan kasir, tetapi juga memengaruhi kecepatan layanan dan akurasi transaksi. Karena itu, banyak bisnis mulai membedakan dua pendekatan yang paling umum digunakan, yaitu open bill dan close bill.<\/p>\n<p>Keduanya sama-sama mengatur bagaimana tagihan dibuka, diproses, lalu diselesaikan, namun konteks penggunaannya bisa berbeda. Open bill biasanya memberi fleksibilitas ketika pesanan masih bisa bertambah, sedangkan close bill lebih cocok saat transaksi perlu langsung ditutup setelah pembayaran.<\/p>\n<p>Dengan memahami perbedaan keduanya, pemilik bisnis dapat memilih alur pembayaran yang paling sesuai dengan tipe layanan, jam ramai, dan pola transaksi pelanggan.<\/p>\n<style>\r\n\t.takeaways-container {\r\n\t\tmargin: 20px 0;\r\n\t\tfont-family: sans-serif;\r\n\t}\r\n\t.box-content {\r\n\t\tbackground-color: #fffacd;\r\n\t\tbox-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);\r\n\t\tborder-radius: 25px;\r\n\t\tpadding: 25px;\r\n\t}\r\n\t.title {\r\n\t\tmargin-bottom: 20px;\r\n\t}\r\n\t.title p {\r\n\t\tdisplay: inline-block;\r\n\t\tbackground-color: #8A0E19;\r\n\t\tcolor: #ffffff;\r\n\t\tpadding: 8px 15px;\r\n\t\tborder-radius: 8px;\r\n\t\tfont-size: 22px;\r\n\t\tfont-weight: bold;\r\n\t\tmargin: 0;\r\n\t}\r\n\t.item {\r\n\t\tdisplay: flex;\r\n\t\talign-items: flex-start;\r\n\t\tmargin-bottom: 12px;\r\n\t}\r\n\t.item .circle {\r\n\t\twidth: 8px;\r\n\t\theight: 8px;\r\n\t\tbackground-color: #000000;\r\n\t\tborder-radius: 50%;\r\n\t\tmargin-right: 12px;\r\n\t\tflex-shrink: 0;\r\n\t\tmargin-top: 8px;\r\n\t}\r\n\t.item p {\r\n\t\tmargin: 0;\r\n\t\tfont-size: 16px;\r\n\t\tline-height: 1.6;\r\n\t}\r\n\t.item p a {\r\n\t\tcolor: #8A0E19;\r\n\t\tfont-weight: normal;\r\n\t\ttext-decoration: none;\r\n\t}\r\n\t.item p a:hover {\r\n\t\ttext-decoration: underline;\r\n\t}\r\n\t.button-wrapper {\r\n\t\tmargin-top: 25px;\r\n\t}\r\n\t.submit-button {\r\n\t\tbackground-color: #8a0e19;\r\n\t\tcolor: #fff !important;\r\n\t\ttransition: all .3s ease;\r\n\t\tpadding: 12px 28px;\r\n\t\tdisplay: inline-block;\r\n\t\tborder-radius: 12px;\r\n\t\tfont-size: 16px;\r\n\t\tfont-weight: bold;\r\n\t\ttext-decoration: none;\r\n\t}\r\n\t.submit-button:hover {\r\n\t\tbackground-color: #991b26;\r\n\t}\r\n\t@media (max-width: 767px) {\r\n\t\t.takeaways-container {\r\n\t\t\theight: auto;\r\n\t\t\tpadding: 0;\r\n\t\t}\r\n\t\t.box-content {\r\n\t\t\tpadding: 24px;\r\n\t\t}\r\n\t\t.content,\r\n\t\t.main-content,\r\n\t\t.list-item {\r\n\t\t\twidth: 100%;\r\n\t\t}\r\n\t}\r\n<\/style>\r\n\r\n<div class=\"takeaways-container\">\r\n\t<div class=\"box-content\">\r\n\t\t<div class=\"content\">\r\n\t\t\t<div class=\"title\">\r\n\t\t\t\t<p>Key Takeaways<\/p>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"main-content\">\r\n\t\t\t\t<div class=\"list-item\">\r\n\t\t\t\t\t<div class=\"item\">    <div class=\"circle\"><\/div>    <p>Memahami <a href=\"#definisi-konseptual-dan-mekanisme-dasar\">Definisi Konseptual<\/a> antara status transaksi sementara dan final sangat penting untuk akurasi data penjualan.<\/p><\/div><div class=\"item\">    <div class=\"circle\"><\/div>    <p>Penerapan status tagihan memiliki <a href=\"#perbedaan-utama-dalam-implikasi-operasional\">Implikasi Operasional<\/a> langsung terhadap kecepatan layanan dan fleksibilitas pesanan tambahan.<\/p><\/div><div class=\"item\">    <div class=\"circle\"><\/div>    <p>Strategi <a href=\"#manajemen-risiko-dan-keamanan-transaksi\">Manajemen Risiko<\/a> diperlukan untuk mencegah potensi fraud yang sering terjadi pada tagihan yang berstatus open.<\/p><\/div>\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n<!-- \t\t\t<div class=\"button-wrapper\">\r\n\t\t\t\t<a href=\"https:\/\/www.equiperp.com\/tour-produk-gratis\/?medium=key-takeaways\" class=\"submit-button\">Klik untuk Demo Gratis!<\/a>\r\n\t\t\t<\/div> -->\r\n\t\t<\/div>\r\n\t<\/div>\r\n<\/div>\n<div id=\"toc_group_article\" style=''>\r\n\t<p style='font-size:25px;font-weight:bold; margin-bottom:0px'>\r\n\t\tDaftar Isi:\r\n\t<\/p>\r\n\t<ul id=\"list_toc\" class='list_toc'><\/ul>\r\n<\/div>\r\n\r\n<div id=\"placeholder-toc\"><\/div>\r\n<div id=\"toc\">\r\n    <div class=\"header\">\r\n\t<span class=\"toc-title\" id=\"toc-title\">Daftar Isi<\/span>\t\r\n\t <i class=\"toc-icon\">\r\n        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"30\" height=\"30\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#000\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"header-icon\">\r\n          <path d=\"m6 9 6 6 6-6\" \/>\r\n        <\/svg>\r\n      <\/i>\r\n\t<\/div>\r\n    <div class=\"list\">\r\n      <ul id=\"toc-list\"><\/ul>\r\n    <\/div>\r\n <\/div>\r\n\r\n<style>\r\n\/* Simple styling for the TOC *\/\r\n\t\r\n\t#toc ul li:last-child {\r\n    padding-bottom: 16px; \/* Adjust the value as needed *\/\r\n}\r\n\r\n.td-fix-index {\r\n\t transform: unset !important;\r\n     -webkit-transform: unset !important; \r\n}\r\n.footer-contact .td-fix-index {\r\n\t transform: translateZ(0) !important;\r\n     -webkit-transform: translateZ(0) !important; \r\n}\r\n\t.tdb_single_content .tdb-block-inner.td-fix-index{\r\n\t\tposition: static;\r\n\t}\r\n\t\r\n\r\n\r\n\t\r\n#toc {\r\n  background-color: #FFF;\r\n\tpadding: 17px 24px 0px 24px !important;\r\n  margin-bottom: 20px;\r\n\/*   border: 1px solid #9C171E; *\/\r\n  border-radius: 6px;\r\n\tdisplay: none;\r\n  max-width: 100%;\r\n  transition: .4s ease height;\r\n\tmargin-left: 0;\r\n\toverflow: hidden;\r\n}\r\n\r\n#toc .header{\r\n  display: flex;\r\n  align-items: center;\r\n  justify-content: space-between;\r\n\tbackground-color: transparent;\r\n}\r\n\t\r\n\t#toc.sticky .header{\r\n\t\tpadding: 4px 0;\r\n\t}\r\n\t\r\n.header p{\r\n  font-size: 18px !important;\r\n  font-weight: 600 !important;\r\n  color: #393939;\r\n   margin-bottom: 0;\r\n  \/* margin-top: 20px; *\/\r\n}\r\n\r\n.toc-icon{\r\n  float: right;\r\n\/*   visibility: hidden; *\/\r\n}\r\n\r\n\t.toc-title{\r\n\t\tmargin-right: auto;\r\n\/* \t\tpadding-left: 20px; *\/\r\n\t\tfont-weight: 600;\r\n\t\talign-self: center;\t}\t\r\n\r\n#toc ul {\r\n  list-style-type: none;\r\n  padding-left: 0;\r\n}\r\n\t\r\n#toc.sticky ul{\r\n\toverflow-y: auto;\r\n\tmax-height: 250px;\r\n\tmargin-top: 0px;\r\n\tpadding-top: 20px;\r\n\/* \tborder-top: 1px solid #d3d3d3; *\/\r\n}\r\n\t\r\n#toc ul li {\r\n\/*   margin-bottom: 10px; *\/\r\n  margin-bottom: 10px;\r\n\tmargin-left: 0;\r\n\ttransition: .2s ease;\r\n\tcursor: pointer;\r\n}\r\n\t\r\n\t#toc.sticky ul li {\r\n\t  margin-right: 10px;\r\n\t}\r\n\t\r\n.td-post-content #toc-list li a:hover, .td-post-content #toc-list a.active{\r\n\tbackground-color: #FFF;\r\n\/* \tpadding: 8px 16px 8px 16px; *\/\r\n\tpadding: 4px 16px 4px 16px;\r\n\tborder-radius: 6px;\r\n\tcolor: #9c171e !important;\r\n\tfont-weight: 600 !important;\r\n}\r\n\t\r\n\t.td-post-content #toc-list li:hover a, .td-post-content #toc-list a.active{\r\n\t\tcolor: #9C171E !important;\r\n\t\tfont-weight: 600 !important;\r\n\t}\r\n\t\r\n.td-post-content #toc-list a.active{\r\n\tfont-weight: bold !important;\r\n\tcolor: #9C171E !important;\r\n}\r\n\t\r\n#toc a, .td-post-content #toc-list a {\r\n  text-decoration: none;\r\n  color: #ea1717 !important;\r\n  transition: .2s ease;\r\n\tfont-weight: 400 !important;\r\n\tdisplay: block;\r\n\t\r\n\tpadding: 4px 16px 4px 0;\r\n}\r\n\r\n#toc.sticky {\r\n  position: fixed;\r\n\/*   top: 73px; *\/\r\n\tbottom: 0;\r\n  z-index: 100; \r\n  box-shadow: 0 2px 5px rgba(0,0,0,0.1); \r\n\twidth: 100%; \r\n\tbackground-color: #FFF;\r\n\/* \tbackground-color: #FFF1F1; *\/\r\n\tborder-bottom: 1px solid #ea1717;\r\n\/*   border: 1px solid #393939; *\/\r\n  box-shadow: 0px 0px 14px 0px #00000040;\r\n  cursor: pointer;\r\n\tanimation: fadein .3s ease;\r\n\tpadding: 12px 16px !important;\r\n}\r\n\t\r\n\t.fadein{\r\n\t\tanimation: fadein .3s ease;\r\n\t}\r\n\t\r\n\t.fadeout{\r\n\t\tanimation: fadeout .3s ease;\r\n\t}\r\n\t\r\n\t\r\n\t@keyframes fadein{\r\n\t\t0% {\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t\t100%{\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@keyframes fadeout{\r\n\t\t0% {\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t\t100%{\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t}\r\n\r\n\t\r\n#toc.sticky .header p{\r\n\tmargin-bottom: 10px;\r\n\tmargin-top: 10px;\r\n}\r\n\r\n#toc.sticky .toc-icon{\r\n  visibility: visible;\r\n\/* \ttransition: 0.4s ease; *\/\r\n}\r\n\t\r\n\t.toc-icon{\r\n\t\talign-items: center;\r\n    \tdisplay: flex;\r\n\t}\r\n\t\r\n\tsvg.header-icon{\r\n\/* \t\tbackground-color: #9c171e; *\/\r\n\t\tbackground-color: #FFF;\r\n\t\tborder-radius: 30px;\r\n\t\tpadding: 5px;\r\n\t}\r\n\r\n#toc.sticky .list{\r\n\/*   max-height: 0; *\/\r\n  transition: height 0.4s ease;\r\n}\r\n\t\r\n\t#toc .list{\r\n\/*   max-height: 0; *\/\r\n  transition: height 0.4s ease;\r\n}\r\n\r\n#toc .header.active .toc-icon{\r\n\ttransform: rotate(0deg); \r\n\topacity: 1;\r\n}\r\n\r\n\t#toc .header.active + .list {\r\n\t  max-height: 200px; \/* Adjust this value as needed *\/\r\n\t  opacity: 1;\r\n\t}\r\n\t\r\n\t#placeholder-toc{\r\n\/* \t\tdisplay: none; *\/\r\n\t}\r\n\t\r\n\t@media (min-width: 768px) and (max-width: 991px){\r\n\t\t#toc.sticky{\r\n\/* \t\t\ttop: 104px; *\/\r\n\t\t\tbottom: 0px;\r\n\t\t}\r\n\t\t\r\n\t\t#toc{\r\n\t\t\twidth: unset !important;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@media (max-width: 767px){\r\n\t\t#toc{\r\n\t\t\twidth: 100% !important;\r\n\t\t\tdisplay: inline-block;\r\n\t\t}\r\n\t\t\r\n\t\t#toc.sticky{\r\n\t\t\twidth: 90% !important;\r\n\/* \t\t\ttop: 81px; *\/\r\n\t\t\tbottom: 60px;\r\n\t\t\tmargin-left: auto;\r\n\t\t\tmargin-right: auto;\r\n\t\t\tpadding: 0 16px;\r\n\t\t\tright: 5%;\r\n\t\t}\r\n\t}\r\n\t\r\n\t<\/style>\r\n\r\n<style>\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc > li > ul {padding-left: 20px;margin-bottom: 0;}\r\n\t#list_toc{height:max-content;transition:ease-in-out}\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc_float li.active > a {color:#b1252d;background: #ffe1e3;}\r\n\t#list_toc_float li a {padding:3px 7px}\r\n\t#list_toc_float li a {\r\n\t\tdisplay: block;\r\n\t\tcolor:#000;\r\n\t\tmargin-bottom: 10px;\r\n\t\ttransition:all 0.2s ease-in-out;\r\n\t\tfont-size:15px\r\n\t}\r\n\t#list_toc_float li{list-style:none;list-style-position:inside; margin-left:0;}\r\n\t#list_toc_float a:hover{color:#b1252d;}\r\n\t\r\n\t#list_toc_float li a{margin-bottom:0px}\r\n\t#toc_group_float{\r\n\t\tline-height: 24px;\r\n\t\tmax-height: calc(100vh - 100px);\r\n\t\toverflow: auto;\r\n\t\tz-index: 99;\r\n\t\tdisplay:none!important;\r\n\t\tbackground:#fff;\r\n\t\ttransition:all 0.5s linear\r\n\t}\r\n\t\r\n\t@media (min-width:1019px){\r\n\t\t#toc_group_float {\r\n\t\t\tdisplay:block!important;\r\n\t\t\t}\r\n\t\t#toc_group_article {\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@media (max-width:768px){\r\n\t\t#toc_group_article {\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\t}\r\n\t\r\n\t \/* custom scrollbar style *\/\r\n::-webkit-scrollbar {\r\n    width: 7px;\r\n}\r\n::-webkit-scrollbar-track {\r\n    background: #d7a2a4;\r\n}\r\n::-webkit-scrollbar-thumb {\r\n    background: #b1252d;\r\n    border-radius: 15px;\r\n}\t\t\r\n\r\n<\/style>\r\n\r\n<script>\r\n\tdocument.addEventListener('DOMContentLoaded', function() {\r\n\t\t\/\/ Fungsi untuk menangani klik pada semua elemen <a> dengan href yang dimulai dengan #\r\n\t\tfunction handleTitleClick(event) {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tconst targetId = this.getAttribute('href').substring(1);\r\n\t\t\tconst targetElement = document.getElementById(targetId);\r\n\r\n\t\t\tif (targetElement) {\r\n\t\t\t\tconst headerHeight = document.querySelector('#toc .header').offsetHeight;\r\n\t\t\t\tconst navbarHeight = document.getElementById('tdi_34') ? document.getElementById('tdi_34').offsetHeight : 0;\r\n\t\t\t\tconst windowHeight = window.innerHeight;\r\n\t\t\t\tconst targetOffset = targetElement.offsetTop;\r\n\t\t\t\tconst scrollTo = targetOffset + (windowHeight \/ 2) + (headerHeight) - navbarHeight - 40;\r\n\r\n\t\t\t\twindow.scrollTo({\r\n\t\t\t\t\ttop: scrollTo,\r\n\t\t\t\t\tbehavior: 'smooth'\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t\/\/ Tambahkan event listener untuk semua elemen <a> di toc-list dan list-toc\r\n\t\tconst titleLinks = document.querySelectorAll('#toc-list a, #list_toc a');\r\n\t\ttitleLinks.forEach(link => {\r\n\t\t\tlink.addEventListener('click', handleTitleClick);\r\n\t\t});\r\n\t});\r\n<\/script>\r\n\r\n<!-- ToC List for mobile -->\r\n<script>\r\n \/\/ Generate TOC based on headings\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  \/\/ Get the element that will contain the TOC\r\n  const tocList = document.getElementById('toc-list');\r\n\r\n  \/\/ Get the element with the ID 'article-left'\r\n  const article = document.querySelector('.td-post-content');\r\n\r\n  \/\/ Find all h2 elements within 'myarticle'\r\n  const headers = article.getElementsByTagName('h2');\r\n\r\n  \/\/ Loop through the h2 elements and create a list item for each one\r\n  for (let i = 0; i < headers.length; i++) {\r\n    const header = headers[i];\r\n    const headerText = header.textContent;\r\n\/\/     const headerId = 'header-' + i;\r\n    const headerId = headerText\r\n    .toLowerCase()\r\n    .trim()\r\n    .replace(\/[^\\w\\s-]\/g, '')  \/\/ hapus tanda baca\r\n    .replace(\/\\s+\/g, '-'); \/\/ ganti spasi jadi \"-\"\r\n\r\n    \/\/ Set an ID for the header if it doesn't have one\r\n    header.setAttribute('id', headerId);\r\n\r\n    \/\/ Create a list item for the TOC\r\n    const listItem = document.createElement('li');\r\n\r\n    \/\/ Create a link for the list item\r\n    const link = document.createElement('a');\r\n    link.setAttribute('href', '#' + headerId);\r\n    link.textContent = headerText;\r\n\r\n    \/\/ Append the link to the list item\r\n    listItem.appendChild(link);\r\n\r\n    \/\/ Append the list item to the TOC list\r\n    tocList.appendChild(listItem);\r\n  }\r\n});\r\n\r\n\/\/ Keep height and placement of content using placeholder in place of TOC\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  const toc = document.querySelector('#toc');\r\n  const placeholderToc = document.querySelector('#placeholder-toc');\r\n\r\n  function setPlaceholderHeight() {\r\n    placeholderToc.style.height = `${toc.offsetHeight}px`;\r\n  }\r\n\r\n  \/\/ Set the initial height of the placeholder\r\n  setPlaceholderHeight();\r\n\r\n  \/\/ Update the height on window resize\r\n  window.addEventListener('resize', setPlaceholderHeight);\r\n});\r\n  const tocTitle = document.querySelector('#toc-title'); \/\/ Assuming header-faq is the element for TOC title\r\n\r\n\/\/ Sticky TOC and update heading\r\n\/\/ document.addEventListener(\"DOMContentLoaded\", function() {\r\n\/\/   const toc = document.querySelector('#toc');\r\n\/\/   const footer = document.querySelector('.td-footer-template-wrap');\r\n\/\/   const tocParent = toc.parentElement;\r\n\/\/   const divTop = tocParent.getBoundingClientRect().top + window.pageYOffset;\r\n\/\/   const tocHeight = toc.offsetHeight;\r\n\/\/   const triggerPoint = divTop + tocHeight + 700;\r\n\/\/   const footerHeight = footer.offsetHeight;\r\n\/\/   const triggerFooterPoint = footer.getBoundingClientRect().top + window.pageYOffset - footerHeight - footerHeight - footerHeight;\r\n\/\/   const phtoc = document.querySelector('#placeholder-toc');\r\n\/\/   const headers = document.querySelectorAll('.td-post-content h2');\r\n\/\/   const navLinks = document.querySelectorAll('#toc-list a');\r\n\t\r\n\/\/ \tconst panel2 = document.querySelector(\"#toc .list\");\r\n\/\/ \tvar icon = document.querySelector(\".toc-icon\");\r\n\r\n\/\/   let activeLink = null; \/\/ Declare activeLink outside the loop\r\n\t\r\n\/\/   \/\/ Function to handle scroll and add\/remove .sticky class\r\n\/\/   function handleScroll() {\r\n\/\/     const windowTop = window.pageYOffset || document.documentElement.scrollTop;\r\n\/\/     let currentHeader = '';\r\n\r\n\/\/     \/\/ Highlight user progress as the heading comes\r\n\/\/     headers.forEach(header => {\r\n\/\/ \t\tconst headerTop = header.offsetTop;\r\n\/\/ \t\tconst headerHeight = header.clientHeight;\r\n\/\/ \/\/ \t\tif (window.scrollY >= (headerTop - headerHeight + 700)) {\r\n\/\/ \/\/ \t\t\tconst currentHeaderId = header.getAttribute('id');\r\n\/\/ \/\/ \t\t\tconst currentHeaderText = document.getElementById(currentHeaderId).textContent;\r\n\/\/ \/\/ \t\t\tconsole.log(\"current header text:\", currentHeaderText);\r\n\/\/ \/\/ \t\t\ttocTitle.textContent = currentHeaderText;\r\n\/\/ \/\/ \t\t\tcurrentHeader = currentHeaderId;\r\n\t\t\t\r\n\/\/ \/\/ \t\t\tif(window.innerWidth < 767){\r\n\/\/ \/\/ \t\t\t\ttocTitle.textContent = 'Daftar Isi';\r\n\/\/ \/\/ \t\t\t}\r\n\/\/ \/\/ \t\t}\r\n\/\/ \t\tif(window.innerWidth < 767){\r\n\/\/ \t\t\ttocTitle.textContent = 'Daftar Isi'; \/\/ Selalu pertahankan judul ini di mobile\r\n\/\/ \t\t} else {\r\n\/\/ \t\t\tif (window.scrollY >= (headerTop - headerHeight + 700)) {\r\n\/\/ \t\t\t\tconst currentHeaderId = header.getAttribute('id');\r\n\/\/ \t\t\t\tconst currentHeaderText = document.getElementById(currentHeaderId).textContent;\r\n\/\/ \t\t\t\ttocTitle.textContent = currentHeaderText;\r\n\/\/ \t\t\t\tcurrentHeader = currentHeaderId;\r\n\/\/ \t\t\t}\r\n\/\/ \t\t}\r\n\/\/ \t});\r\n\r\n\/\/     navLinks.forEach(link => {\r\n\/\/       link.classList.remove('active');\r\n\/\/       if(currentHeader != '') {\r\n\/\/ \t\t  if (link.getAttribute('href').includes(currentHeader)) {\r\n\/\/ \t\t\t  link.classList.add('active');\r\n\/\/ \t\t  }\r\n\/\/ \t  }\r\n\/\/     });\r\n\/\/ \/\/     if (windowTop < triggerFooterPoint) {\r\n\/\/ \/\/         toc.style.display = 'block';\r\n\/\/ \/\/ \t}else{\r\n\/\/ \/\/         toc.style.display = 'none';\r\n\/\/ \/\/ \t}\r\n\/\/     \/\/ Update TOC title if sticky\r\n\/\/     if (windowTop > triggerPoint) {\r\n\/\/       if (!toc.classList.contains('sticky')) {\r\n\/\/         phtoc.style.display = \"block\";\r\n\/\/         toc.classList.add('sticky');\r\n\/\/         toc.style.width = `${tocParent.offsetWidth}px`; \/\/ Set width to match the parent element\r\n\/\/         toc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\/\/         toc.style.backgroundColor = \"#FFF\";\r\n\/\/ \t\tpanel2.style.height = '0px';\r\n\/\/ \t\t  icon.style.transform = \"rotate(180deg)\";\r\n\/\/ \t\t  if(window.innerWidth < 767){\r\n\/\/ \/\/ \t\t\t  const tocs = document.querySelector('#toc.sticky');\r\n\/\/ \t\t\t  tocTitle.textContent = 'Daftar Isi'; \/\/ Reset title\r\n\/\/        \t\t  toc.style.width = '150px'; \/\/ Set width to match the parent element\r\n\/\/ \t\t  }\r\n\/\/       }\r\n\/\/       if (currentHeader) {\r\n\/\/ \/\/         console.log(\"activeLink:\", activeLink);\r\n\/\/         if (activeLink) {\r\n\/\/ \/\/           tocTitle.textContent = activeLink.textContent; \/\/ Update TOC title\r\n\/\/           tocTitle.textContent = activeLink ? activeLink.textContent : \"\"; \/\/ Update title only if activeLink exists\r\n\/\/         }\r\n\/\/       }\r\n\/\/     } else {\r\n\/\/       toc.classList.remove('sticky');\r\n\/\/       phtoc.style.display = \"none\";\r\n\/\/       toc.style.width = 'unset'; \/\/ Reset to original width\r\n\/\/       toc.style.backgroundColor = \"#FFF\";\r\n\/\/       tocTitle.textContent = 'Daftar isi'; \/\/ Reset title\r\n\/\/ \t\tpanel2.style.height = panel2.scrollHeight + \"px\";\r\n\/\/ \t\ticon.style.transform = \"rotate(180deg)\";\r\n\/\/     }\r\n\/\/   }\r\n\r\n\/\/     \/\/ Attach the scroll event listener to the window\r\n\/\/     window.addEventListener('scroll', handleScroll);\r\n\r\n\/\/     \/\/ Initial call to handleScroll to set the correct state on load\r\n\/\/     handleScroll();\r\n\/\/ });\r\n\t\r\n\/\/ \t\/\/ Open toggle TOC\r\n\/\/ \t  document.addEventListener(\"DOMContentLoaded\", function() {\r\n\/\/ \t\tvar tocHeader = document.querySelector(\"#toc .header\");\r\n\/\/ \t\tvar toc = document.querySelector(\"#toc\");\r\n\/\/ \t\tvar icon = document.querySelector(\".toc-icon\");\r\n\/\/ \t\tconst tocTitle = document.querySelector('#toc-title');\r\n\/\/ \t\tconst tocs = document.querySelector('#toc.sticky');\r\n\/\/  \t\tconst tocParent = toc.parentElement;\t\t  \r\n\r\n\/\/ \t\t  tocHeader.addEventListener(\"click\", function() {\r\n\/\/ \t\t\tvar panel = this.nextElementSibling;\r\n\/\/ \t\t\tif (panel.style.height !== '0px') { \/\/ Check if height is not 0px\r\n\/\/ \t\t\t  panel.style.height = '0px'; \/\/ Set height to 0 for full collapse\r\n\/\/ \t\t\t  icon.style.transform = \"rotate(180deg)\";\r\n\/\/ \/\/ \t\t\t\ttoc.style.paddingBottom = '6px'; \r\n\/\/ \t\t\t\tif(window.innerWidth > 768){\r\n\/\/ \t\t\t\t\tif(!toc.classList.contains('sticky')){\r\n\/\/ \t\t\t\t\t\ttoc.style.width = \"unset\";\r\n\/\/ \/\/ \t\t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\/\/ \t\t\t\t\t}\r\n\/\/ \t\t\t\t\tif (toc.classList.contains('sticky')){\r\n\/\/ \t\t\t\t\t\ttoc.style.width = '${tocParent.offsetWidth}px';\r\n\/\/ \t\t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\/\/ \t\t\t\t\t}\r\n\/\/ \t\t\t\t}\r\n\/\/ \t\t\t\tif(window.innerWidth < 767){\r\n\/\/ \t\t\t\t\ttoc.style.width = \"unset\"; \/\/ Reset width\r\n\/\/ \t\t\t\t}\r\n\/\/ \t\t\t\ttoc.style.backgroundColor = \"#FFF1F1\";\r\n\/\/ \t\t\t} else {\r\n\/\/ \t\t\t  panel.style.height = panel.scrollHeight + \"px\";\r\n\/\/ \t\t\t  icon.style.transform = \"rotate(0deg)\";\r\n\/\/ \t\t\t  toc.style.backgroundColor = \"#FFF\";\r\n\/\/ \t\t\t  tocTitle.textContent = 'Daftar isi'; \/\/ Reset title\r\n\/\/ \t\t\t\ttoc.style.paddingBottom = '24px';\r\n\/\/ \t\t\t \tif(window.innerWidth < 767){\r\n\/\/ \t\t\t\t\ttoc.style.width = `${tocParent.offsetWidth}px`; \/\/ Set width to match the parent element\r\n\/\/ \t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\/\/ \t\t\t\t}\r\n\/\/ \t\t\t}\r\n\/\/ \t\t  });\r\n\r\n\/\/ \t\t  \/\/ Close TOC when a link inside it is clicked\r\n\/\/ \t\t  var tocLinks = document.querySelectorAll(\"#toc .list a\");\r\n\/\/ \t\t  tocLinks.forEach(function(link) {\r\n\/\/ \t\t\tlink.addEventListener(\"click\", function() {\r\n\/\/ \t\t\t  var panel = document.querySelector(\"#toc .list\");\r\n\/\/ \t\t\t  panel.style.height = '0px'; \/\/ Set height to 0 for full collapse\r\n\/\/ \t\t\t  icon.style.transform = \"rotate(180deg)\";\r\n\/\/ \t\t\t  toc.style.backgroundColor = \"#FFF\";\r\n\/\/ \t\t\t});\r\n\/\/ \t\t  });\r\n\/\/ \t\t});\r\n\r\n\/\/ START new JS for ToC improvements\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  const toc = document.querySelector('#toc');\r\n  const footer = document.querySelector('.td-footer-template-wrap');\r\n  const tocParent = toc.parentElement;\r\n  const divTop = tocParent.getBoundingClientRect().top + window.pageYOffset;\r\n  const tocHeight = toc.offsetHeight;\r\n  const triggerPoint = divTop + tocHeight + 1750;\r\n\tconsole.log(triggerPoint)\r\n  const footerHeight = footer.offsetHeight;\r\n  const triggerFooterPoint = footer.getBoundingClientRect().top + window.pageYOffset - footerHeight*3;\r\n  const phtoc = document.querySelector('#placeholder-toc');\r\n  const headers = document.querySelectorAll('.td-post-content h2');\r\n  const navLinks = document.querySelectorAll('#toc-list a');\r\n  \r\n  const panel2 = document.querySelector(\"#toc .list\");\r\n  const icon = document.querySelector(\".toc-icon\");\r\n  const tocTitle = document.querySelector('#toc-title');\r\n\r\n  let activeLink = null;\r\n  let userClosedTOC = false; \/\/ Flag user menutup TOC\r\n\r\n  function handleScroll() {\r\n    const windowTop = window.pageYOffset || document.documentElement.scrollTop;\r\n    let currentHeader = '';\r\n\r\n    \/\/ Update TOC title sesuai header yang terlihat\r\n    headers.forEach(header => {\r\n      const headerTop = header.offsetTop;\r\n      const headerHeight = header.clientHeight;\r\n      if(window.innerWidth < 767){\r\n        tocTitle.textContent = 'Daftar Isi'; \r\n      } else {\r\n        if (window.scrollY >= (headerTop - headerHeight + 1750)) {\r\n          const currentHeaderId = header.getAttribute('id');\r\n          const currentHeaderText = document.getElementById(currentHeaderId).textContent;\r\n          tocTitle.textContent = currentHeaderText;\r\n          currentHeader = currentHeaderId;\r\n        }\r\n      }\r\n    });\r\n\r\n    navLinks.forEach(link => {\r\n      link.classList.remove('active');\r\n      if(currentHeader && link.getAttribute('href').includes(currentHeader)) {\r\n        link.classList.add('active');\r\n      }\r\n    });\r\n\r\n    if (windowTop > triggerPoint) {\r\n      if (!toc.classList.contains('sticky')) {\r\n        phtoc.style.display = \"block\";\r\n        toc.classList.add('sticky');\r\n        toc.style.width = `${tocParent.offsetWidth}px`;\r\n        toc.style.backgroundColor = \"#FFF\";\r\n        \/\/ Saat sticky, TOC otomatis tertutup\r\n        panel2.style.height = '0px';\r\n        icon.style.transform = \"rotate(180deg)\";\r\n        userClosedTOC = true; \/\/ Set flag supaya tidak terbuka saat scroll\r\n      }\r\n      \r\n      if(window.innerWidth < 767){\r\n        tocTitle.textContent = 'Daftar Isi'; \r\n        toc.style.width = '150px';\r\n      }\r\n\r\n    } else {\r\n      toc.classList.remove('sticky');\r\n      phtoc.style.display = \"none\";\r\n      toc.style.width = 'unset';\r\n      toc.style.backgroundColor = \"#FFF\";\r\n      tocTitle.textContent = 'Daftar isi'; \r\n\r\n      \/\/ Kembalikan panel jika user belum menutup manual\r\n      if(!userClosedTOC) {\r\n        panel2.style.height = panel2.scrollHeight + \"px\";\r\n        icon.style.transform = \"rotate(0deg)\";\r\n      }\r\n    }\r\n  }\r\n\r\n  window.addEventListener('scroll', handleScroll);\r\n  handleScroll();\r\n\r\n  \/\/ Toggle TOC saat user klik\r\n  const tocHeader = document.querySelector(\"#toc .header\");\r\n  tocHeader.addEventListener(\"click\", function() {\r\n    const panel = panel2;\r\n    if (panel.style.height !== '0px') {\r\n      panel.style.height = '0px';\r\n      icon.style.transform = \"rotate(180deg)\";\r\n      userClosedTOC = true;\r\n    } else {\r\n      panel.style.height = panel.scrollHeight + \"px\";\r\n      icon.style.transform = \"rotate(0deg)\";\r\n      userClosedTOC = false;\r\n    }\r\n  });\r\n\r\n  \/\/ Close TOC saat link diklik\r\n  document.querySelectorAll(\"#toc .list a\").forEach(link => {\r\n    link.addEventListener(\"click\", function() {\r\n      panel2.style.height = '0px';\r\n      icon.style.transform = \"rotate(180deg)\";\r\n      userClosedTOC = true;\r\n    });\r\n  });\r\n});\r\n\/\/ END new JS for ToC improvements\r\n\r\n\t\r\n\/\/ \tmake the heading at the center of the viewport\r\n\/\/ \tdocument.addEventListener('DOMContentLoaded', function() {\r\n\/\/     \/\/ Add click event listener to all links in the TOC list\r\n\/\/     document.querySelectorAll('#toc-list a').forEach(anchor => {\r\n\/\/         anchor.addEventListener('click', function (e) {\r\n\/\/             e.preventDefault(); \/\/ Prevent the default behavior of jumping to the anchor\r\n\/\/ \/\/ \t\t\tconsole.log(\"prevent default\");\r\n\/\/             const targetId = this.getAttribute('href').substring(1); \/\/ Get the ID of the target element\r\n\/\/             const targetElement = document.getElementById(targetId); \/\/ Get the target element\r\n\r\n\/\/             if (targetElement) {\r\n\/\/                 const headerHeight = document.querySelector('#toc .header').offsetHeight; \/\/ Get the height of the fixed header\r\n\/\/                 const windowHeight = window.innerHeight; \/\/ Get the height of the viewport\r\n\/\/                 const targetOffset = targetElement.offsetTop; \/\/ Get the top offset of the target element\r\n\/\/                 const scrollTo = targetOffset + (windowHeight \/ 2) + (headerHeight); \/\/ Calculate the scroll position to center the target element\r\n\r\n\/\/                 \/\/ Scroll to the calculated position smoothly\r\n\/\/                 window.scrollTo({\r\n\/\/                     top: scrollTo,\r\n\/\/                     behavior: 'smooth'\r\n\/\/                 });\r\n\/\/             }\r\n\/\/         });\r\n\/\/     });\r\n\/\/ });\r\n<\/script>\r\n\r\n<script>\r\n    \/\/ Scrollspy function to highlight the active TOC item based on the scroll position\r\n  function scrollSpy(tocClass) {\r\n    const scrollPosition = window.scrollY;\r\n\r\n    \/\/ Find the active h2 and h3 headings based on their position in the corresponding TOC\r\n    let activeH2 = null;\r\n    let activeH3 = null;\r\n\r\n    const tocItems = document.querySelectorAll(`.${tocClass} li`);\r\n    tocItems.forEach(item => {\r\n      const a = item.querySelector('a');\r\n      if (!a) return;\r\n      const href = a.getAttribute('href');\r\n      const targetId = href.substring(1); \/\/ Remove the '#' from the href to get the target ID\r\n      const targetElement = document.getElementById(targetId);\r\n      if (!targetElement) return;\r\n\r\n      const targetTop = targetElement.getBoundingClientRect().top + scrollPosition;\r\n      const nextItem = item.nextElementSibling;\r\n      const nextTop = nextItem ? nextItem.getBoundingClientRect().top + scrollPosition : Infinity;\r\n\r\n      if (targetTop <= scrollPosition + 150) {\r\n        if (a.parentElement.parentElement === tocItems) {\r\n          \/\/ The h2 heading is at the root level of the TOC\r\n          activeH2 = { id: targetId, level: 'h2' };\r\n        } \r\n\t\t  else {\r\n          \/\/ The h3 heading is nested under an h2 heading\r\n          const parentH2 = a.parentElement.parentElement.previousElementSibling;\r\n          if (parentH2) {\r\n            const h2Link = parentH2.querySelector('a');\r\n            if (h2Link) {\r\n              const h2Href = h2Link.getAttribute('href');\r\n              const h2Id = h2Href.substring(1);\r\n              activeH2 = { id: h2Id, level: 'h2' };\r\n            }\r\n          }\r\n          activeH3 = { id: targetId, level: 'h3' };\r\n        }\r\n      }\r\n\r\n      if (targetTop > scrollPosition + 150 && nextTop > scrollPosition + 150 && !activeH3) {\r\n        \/\/ Reset the activeH2 when there are no more active h3 headings\r\n        activeH2 = null;\r\n      }\r\n    });\r\n\r\n    \/\/ Update the active state for the TOC items\r\n    tocItems.forEach(item => {\r\n      item.classList.remove('active');\r\n      const a = item.querySelector('a');\r\n      if (a) {\r\n        const href = a.getAttribute('href');\r\n        const targetId = href.substring(1);\r\n        if ((activeH2 && activeH2.id === targetId) || (activeH3 && activeH3.id === targetId)) {\r\n          item.classList.add('active');\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  \/\/ Call scrollSpy for each TOC on window scroll\r\n  const tocClasses = ['list_toc', 'list_toc_float']; \/\/ Add other TOC class names here if you have more than two instances\r\n  tocClasses.forEach(tocClass => {\r\n    window.addEventListener('scroll', () => scrollSpy(tocClass));\r\n  });\r\n<\/script>\r\n\r\n<!-- ToC List for desktop side bar, diganti jadi inject by php, di code snippet \"Sidebar Accordion\" -->\r\n<!-- <script>\r\n\tdocument.addEventListener(\"DOMContentLoaded\", function() {\r\n\r\n        \/\/ Fungsi untuk membuat nested list\r\n        function createNestedList(parentNode, children) {\r\n            if (children.length === 0) return;\r\n\r\n            const nestedUl = document.createElement('ul');\r\n            children.forEach(child => {\r\n                const nestedLi = document.createElement('li');\r\n                const nestedA = document.createElement('a');\r\n                nestedA.textContent = child.title;\r\n                nestedA.href = `#${child.id}`;\r\n                nestedLi.appendChild(nestedA);\r\n                nestedUl.appendChild(nestedLi);\r\n\r\n                if (child.children.length > 0) {\r\n                    createNestedList(nestedLi, child.children);\r\n                }\r\n            });\r\n\r\n            parentNode.appendChild(nestedUl);\r\n        }\r\n\r\n        \/\/ Membuat objek untuk menyimpan daftar h2 dan h3 beserta judulnya\r\n        const headings = [];\r\n\r\n           \/\/ Mengambil semua elemen h2 dan h3\r\n        \/\/ Mengambil semua elemen h2 dan h3\r\n\t\tconst elements = document.querySelectorAll('.td-post-content h2');\r\n\r\n\t\t\tfunction newFormatId(text) {\r\n\t\t\t\tif(text.toLowerCase() === \"key takeaways\") {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tconst result = text.toLowerCase()\r\n\t\t\t\t.trim()\r\n\t\t\t\t.replace(\/[^\\w\\s-]\/g, '')  \/\/ hapus tanda baca\r\n\t\t\t\t.replace(\/\\s+\/g, '-'); \/\/ ganti spasi jadi \"-\"\r\n\r\n\t\t\t\treturn result;\r\n\t\t\t}\r\n\t\r\n\t\telements.forEach(element => {\r\n\t\t\tif (element.tagName === 'H2') {\r\n\t\t\t\tconst id = newFormatId(element.textContent); \/\/ Hasilkan ID baru\r\n\t\t\t\telement.id = id; \/\/ Tetapkan ID ke elemen h2\r\n\t\t\t\tif (element.textContent.toLowerCase() === \"key takeaways\") {return;} \/\/ Kalau Key Takeaways, jangan dimasukin\r\n\t\t\t\theadings.push({ level: 'h2', id: id, title: element.textContent, children: [] });\r\n\t\t\t} else if (element.tagName === 'H3') {\r\n\t\t\t\tconst id = newFormatId(element.textContent); \/\/ Hasilkan ID baru\r\n\t\t\t\telement.id = id; \/\/ Tetapkan ID ke elemen h3\r\n\t\t\t\tif (headings.length > 0) {\r\n\t\t\t\t\theadings[headings.length - 1].children.push({ level: 'h3', id: id, title: element.textContent, children: [] });\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n       \/\/ Membuat list HTML dari objek headings\r\n\t\tconst ul = document.getElementById('list_toc');\r\n\t\tlet currentUl = ul;\r\n\t\theadings.forEach(heading => {\r\n\t\t\tconst li = document.createElement('li');\r\n\t\t\tconst a = document.createElement('a');\r\n\t\t\ta.textContent = heading.title;\r\n\t\t\ta.href = `#${heading.id}`; \/\/ Gunakan ID yang baru dihasilkan\r\n\t\t\tli.appendChild(a);\r\n\r\n\t\t\tif (heading.level === 'h2') {\r\n\t\t\t\tcurrentUl = li;\r\n\t\t\t\tul.appendChild(li);\r\n\t\t\t} else if (heading.level === 'h3') {\r\n\t\t\t\tif (!currentUl.lastElementChild || currentUl.lastElementChild.tagName !== 'UL') {\r\n\t\t\t\t\tconst nestedUl = document.createElement('ul');\r\n\t\t\t\t\tcurrentUl.appendChild(nestedUl);\r\n\t\t\t\t\tcurrentUl = nestedUl;\r\n\t\t\t\t}\r\n\t\t\t\tcurrentUl.appendChild(li);\r\n\t\t\t}\r\n\r\n\t\t\tcreateNestedList(li, heading.children);\r\n\t\t});\r\n\t\t\/\/ Dapatkan elemen ul dengan id 'list_toc'\r\n\t\tconst ulFloat = document.getElementById('list_toc');\r\n\r\n\t\t\/\/ Dapatkan isi (child elements) dari ul dengan id 'list_toc'\r\n\t\tconst clonedChildren = ulFloat.cloneNode(true).children;\r\n\r\n\t\t\/\/ Dapatkan elemen ul dengan id 'list_toc_float'\r\n\t\tconst ulToc = document.getElementById('list_toc_float');\r\n\r\n\t\t\/\/ Tambahkan isi yang telah didapatkan dari 'list_toc' ke ul dengan id 'list_toc_float'\r\n\t\tulToc.append(...clonedChildren);\r\n\r\n\r\n        \/\/ Fungsi untuk mengambil tinggi navbar\r\n\t\tfunction getNavbarHeight() {\r\n\t\t\tconst navbar = document.getElementById('tdi_34');\r\n\t\t\treturn navbar ? navbar.offsetHeight : 0;\r\n\t\t}\r\n\r\n\t\t\/\/ Fungsi untuk menambahkan offset posisi scroll\r\n\t\tfunction scrollToElementWithOffset(elementId) {\r\n\t\t\tconst element = document.getElementById(elementId);\r\n\t\t\tif (element) {\r\n\t\t\t\tconst offset = getNavbarHeight();\r\n\t\t\t\tconst elementPosition = element.getBoundingClientRect().top;\r\n\t\t\t\tconst offsetPosition = elementPosition - offset - 40;\r\n\r\n\t\t\t\twindow.scrollBy({\r\n\t\t\t\t\ttop: offsetPosition,\r\n\t\t\t\t\tbehavior: 'smooth'\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t\/\/ Fungsi untuk menangani klik pada tautan judul\r\n\t\tfunction handleTitleClick(event) {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tconst href = event.target.getAttribute('href').substr(1);\r\n\t\t\tscrollToElementWithOffset(href);\r\n\t\t}\r\n\r\n\t\t\/\/ Tambahkan event listener untuk semua tautan judul\r\n\t\tconst titleLinks = document.querySelectorAll('a[href^=\"#\"]');\r\n\t\ttitleLinks.forEach(link => {\r\n\t\t\tlink.addEventListener('click', handleTitleClick);\r\n\t\t});\r\n\t\t\r\n\t});\r\n    <\/script> -->\r\n\n<h2><strong>Apa Itu Open Bill?<\/strong><\/h2>\n<p><span id=\"definisi-konseptual-dan-mekanisme-dasar\">Open bill adalah metode penagihan di mana transaksi dibuka terlebih dahulu dan tetap aktif selama pelanggan masih dapat menambah pesanan. Tagihan baru ditutup ketika pelanggan selesai dan siap melakukan pembayaran.<\/span><\/p>\n<p>Dalam operasional restoran, <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/open-bill\/\">open bill umum digunakan<\/a> pada layanan dine-in karena pesanan sering datang bertahap. Pramusaji atau kasir dapat menambahkan item ke tagihan yang sama, sehingga seluruh pesanan tetap tercatat dalam satu bill.<\/p>\n<p>Metode ini memberi fleksibilitas saat ada perubahan pesanan, perpindahan meja, atau permintaan pembayaran gabungan di akhir. Namun, karena tagihan terbuka lebih lama, pencatatan perlu konsisten agar tidak ada item yang terlewat atau salah input.<\/p>\n<h2><strong>Apa Itu Close Bill?<\/strong><\/h2>\n<p>Close bill adalah metode penagihan di mana transaksi langsung ditutup setelah pesanan dicatat dan pembayaran diselesaikan. Tagihan dianggap selesai dalam satu rangkaian proses tanpa menunggu penambahan pesanan.<\/p>\n<p>Model ini sering digunakan pada layanan dengan alur cepat, seperti takeaway, kios, atau counter service. Karena transaksi tidak dibiarkan terbuka, kasir dapat memproses antrean lebih efisien dan mengurangi transaksi yang tertunda.<\/p>\n<p>Close bill memudahkan kontrol kas dan rekonsiliasi karena transaksi selesai pada waktu yang sama. Jika pelanggan ingin menambah pesanan setelah pembayaran, biasanya perlu dibuat transaksi baru, sehingga tingkat fleksibilitasnya lebih terbatas dibanding open bill.<\/p>\n<h2><strong>Perbedaan Open Bill dan Close Bill dalam Alur Pembayaran<\/strong><\/h2>\n<p><span id=\"perbedaan-utama-dalam-implikasi-operasional\">Open bill dan close bill sama-sama mengatur cara tagihan dicatat dan diselesaikan, tetapi perbedaannya terlihat dari cara transaksi dikelola sepanjang layanan. Memahami perbedaan ini membantu bisnis memilih metode billing yang paling sesuai dengan tipe layanan, ritme transaksi, dan kebutuhan kontrol kasir.<\/span><\/p>\n<h3>1. Waktu penutupan transaksi<\/h3>\n<p>Pada open bill, transaksi tetap terbuka sampai pelanggan benar-benar selesai dan bill ditutup di akhir. Pada close bill, transaksi langsung dianggap selesai setelah pesanan dicatat dan pembayaran dilakukan, sehingga tagihan tidak dibiarkan aktif terlalu lama.<\/p>\n<h3>2. Fleksibilitas penambahan pesanan<\/h3>\n<p>Open bill memungkinkan penambahan item ke tagihan yang sama selama transaksi belum ditutup, sehingga cocok untuk pesanan bertahap. Close bill lebih terbatas karena penambahan pesanan setelah pembayaran biasanya perlu dibuat sebagai transaksi baru.<\/p>\n<h3>3. Kesesuaian dengan alur layanan<\/h3>\n<p>Open bill umumnya lebih pas untuk dine-in karena proses pelayanan berjalan lebih panjang dan pesanan bisa berubah. Close bill lebih sesuai untuk layanan cepat seperti takeaway atau counter service karena alurnya sederhana, antrean lebih cepat bergerak, dan kontrol transaksi lebih mudah.<\/p>\n<div style=\"max-width: 900px; margin: 18px auto; font-family: Arial, sans-serif;\">\n<div style=\"overflow-x: auto; border: 1px solid #e6e6e6; border-radius: 12px; background: #fff;\">\n<table style=\"width: 100%; border-collapse: separate; border-spacing: 0; table-layout: fixed;\">\n<thead>\n<tr>\n<th style=\"background: #b91c1c; color: #fff; text-align: left; padding: 14px 16px; font-size: 14px; font-weight: bold; width: 34%; border-top-left-radius: 12px;\">Aspek<\/th>\n<th style=\"background: #b91c1c; color: #fff; text-align: left; padding: 14px 16px; font-size: 14px; font-weight: bold; width: 33%;\">Open Bill<\/th>\n<th style=\"background: #b91c1c; color: #fff; text-align: left; padding: 14px 16px; font-size: 14px; font-weight: bold; width: 33%; border-top-right-radius: 12px;\">Close Bill<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 12px 16px; font-size: 13px; font-weight: bold; color: #111; border-top: 1px solid #f0f0f0; vertical-align: top;\">Pengelolaan meja<\/td>\n<td style=\"padding: 12px 16px; font-size: 13px; color: #111; border-top: 1px solid #f0f0f0; vertical-align: top;\">Bill terkait meja, mudah pindah\/merge<\/td>\n<td style=\"padding: 12px 16px; font-size: 13px; color: #111; border-top: 1px solid #f0f0f0; vertical-align: top;\">Bill per transaksi, meja tidak jadi acuan utama<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px 16px; font-size: 13px; font-weight: bold; color: #111; border-top: 1px solid #f0f0f0; vertical-align: top;\">Split bill di akhir<\/td>\n<td style=\"padding: 12px 16px; font-size: 13px; color: #111; border-top: 1px solid #f0f0f0; vertical-align: top;\">Lebih praktis, item bisa dibagi per orang<\/td>\n<td style=\"padding: 12px 16px; font-size: 13px; color: #111; border-top: 1px solid #f0f0f0; vertical-align: top;\">Kurang fleksibel, biasanya perlu transaksi tambahan<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px 16px; font-size: 13px; font-weight: bold; color: #111; border-top: 1px solid #f0f0f0; vertical-align: top;\">Koreksi pesanan<\/td>\n<td style=\"padding: 12px 16px; font-size: 13px; color: #111; border-top: 1px solid #f0f0f0; vertical-align: top;\">Koreksi lebih mudah sebelum bill ditutup<\/td>\n<td style=\"padding: 12px 16px; font-size: 13px; color: #111; border-top: 1px solid #f0f0f0; vertical-align: top;\">Setelah bayar, koreksi biasanya lewat void\/refund<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px 16px; font-size: 13px; font-weight: bold; color: #111; border-top: 1px solid #f0f0f0; vertical-align: top;\">Kecepatan saat antrean<\/td>\n<td style=\"padding: 12px 16px; font-size: 13px; color: #111; border-top: 1px solid #f0f0f0; vertical-align: top;\">Lebih cocok untuk layanan meja<\/td>\n<td style=\"padding: 12px 16px; font-size: 13px; color: #111; border-top: 1px solid #f0f0f0; vertical-align: top;\">Lebih cepat untuk transaksi singkat<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px 16px; font-size: 13px; font-weight: bold; color: #111; border-top: 1px solid #f0f0f0; vertical-align: top;\">Rekonsiliasi kas harian<\/td>\n<td style=\"padding: 12px 16px; font-size: 13px; color: #111; border-top: 1px solid #f0f0f0; vertical-align: top;\">Perlu kontrol bill aktif agar tidak menggantung<\/td>\n<td style=\"padding: 12px 16px; font-size: 13px; color: #111; border-top: 1px solid #f0f0f0; vertical-align: top;\">Lebih sederhana karena transaksi langsung selesai<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px 16px; font-size: 12px; color: #444; border-top: 1px solid #f0f0f0; background: #fff; border-bottom-left-radius: 12px; border-bottom-right-radius: 12px;\" colspan=\"3\"><strong style=\"color: #111;\">Catatan:<\/strong> Pilih open bill untuk layanan meja dan transaksi yang cenderung bertahap. Pilih close bill untuk layanan cepat dengan volume transaksi tinggi.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h2><strong>Contoh Alur Transaksi di Restoran untuk Masing-Masing Metode<\/strong><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter wp-image-188745 size-full\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/ChatGPT-Image-Feb-10-2026-03_13_34-PM-e1770712167482.webp\" alt=\"alur open bill close bill\" width=\"1536\" height=\"942\" srcset=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/ChatGPT-Image-Feb-10-2026-03_13_34-PM-e1770712167482.webp 1536w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/ChatGPT-Image-Feb-10-2026-03_13_34-PM-e1770712167482-300x184.webp 300w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/ChatGPT-Image-Feb-10-2026-03_13_34-PM-e1770712167482-1024x628.webp 1024w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/ChatGPT-Image-Feb-10-2026-03_13_34-PM-e1770712167482-768x471.webp 768w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/ChatGPT-Image-Feb-10-2026-03_13_34-PM-e1770712167482-685x420.webp 685w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/ChatGPT-Image-Feb-10-2026-03_13_34-PM-e1770712167482-150x92.webp 150w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/ChatGPT-Image-Feb-10-2026-03_13_34-PM-e1770712167482-696x427.webp 696w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/ChatGPT-Image-Feb-10-2026-03_13_34-PM-e1770712167482-1068x655.webp 1068w\" sizes=\"auto, (max-width: 1536px) 100vw, 1536px\" \/><\/h2>\n<p>Berikut gambaran alur transaksi yang umum terjadi di restoran agar perbedaan open bill dan close bill terlihat lebih praktis. Contoh ini bisa disesuaikan dengan pola layanan, seperti dine-in, takeaway, atau counter service.<\/p>\n<h3><strong>Alur Open Bill<\/strong><\/h3>\n<p>Pada layanan dine-in, kasir atau pramusaji membuka bill saat pelanggan duduk dan pesanan pertama dicatat. Bill tetap aktif selama pelanggan masih memesan, sehingga item tambahan dapat masuk ke tagihan yang sama tanpa membuat transaksi baru.<\/p>\n<p>Setelah pelanggan selesai makan, pramusaji mengonfirmasi pesanan terakhir, lalu kasir menampilkan total tagihan. Jika diperlukan, item dapat dipisahkan untuk split bill, termasuk pembagian berdasarkan orang atau item tertentu.<\/p>\n<p>Transaksi ditutup setelah pembayaran selesai, kemudian meja diperbarui statusnya agar siap dipakai pelanggan berikutnya. Karena bill terbuka lebih lama, kontrol pencatatan dan update item perlu konsisten, terutama saat jam ramai.<\/p>\n<h3><strong>Alur Close Bill<\/strong><\/h3>\n<p>Pada layanan counter service atau takeaway, bill dibuat ketika pelanggan memesan dan total langsung dihitung. Pembayaran dilakukan pada saat itu juga, sehingga transaksi bisa segera ditutup dalam satu proses yang singkat.<\/p>\n<p>Setelah pembayaran selesai, sistem mencetak struk dan pesanan diteruskan ke dapur atau area pickup. Jika pelanggan menambah pesanan setelah itu, kasir biasanya membuat transaksi baru karena bill sebelumnya sudah ditutup.<\/p>\n<p>Metode ini memudahkan antrean bergerak lebih cepat dan kontrol kas harian lebih sederhana. Namun, fleksibilitas untuk perubahan pesanan atau penggabungan transaksi cenderung lebih terbatas dibanding open bill.<\/p>\n<h2><strong>Studi Kasus Industri: Kapan Memilih Metode yang Paling Tepat?<\/strong><\/h2>\n<p>Pemilihan open bill atau close bill sebaiknya mengikuti konsep layanan dan pola transaksi pelanggan. Tidak semua restoran membutuhkan alur yang sama, karena kebutuhan fleksibilitas, kecepatan antrean, dan kontrol pembayaran bisa berbeda di tiap model bisnis.<\/p>\n<h3>1. Fine dining dan casual dining<\/h3>\n<p>Pada fine dining dan banyak casual dining, open bill biasanya menjadi pendekatan utama karena pesanan cenderung bertahap. Pelanggan dapat menambah menu di tengah layanan, meminta pairing minuman, atau memesan dessert setelah sesi utama selesai.<\/p>\n<p>Karena itu, bill umumnya ditutup menjelang pelanggan akan pulang, baik melalui kasir maupun pembayaran di meja.<\/p>\n<p>Contoh penerapan yang mudah ditemui adalah jaringan casual dining seperti <strong>Pizza Hut Restaurant atau Sushi Tei<\/strong>, di mana pelanggan dine-in sering menambah pesanan beberapa kali sebelum tagihan diselesaikan di akhir kunjungan.<\/p>\n<h3>2. Quick service restaurant dan coffee shop<\/h3>\n<p>Pada QSR dan coffee shop, close bill lebih lazim karena transaksi perlu cepat dan sederhana. Pelanggan memesan, membayar di depan, struk tercetak, lalu pesanan diproses tanpa perlu tagihan dibiarkan aktif. Pendekatan ini menjaga antrean tetap lancar dan mengurangi risiko transaksi tertunda.<\/p>\n<p>Contohnya terlihat pada model layanan seperti <strong>McDonald\u2019s atau KFC<\/strong>, serta kedai kopi grab-and-go seperti Kopi Kenangan yang umumnya menerapkan bayar di muka untuk mempercepat throughput, terutama saat jam sibuk.<\/p>\n<h3>3. Food court<\/h3>\n<p>Di food court modern, sistem sering memakai konsep tagihan terpusat yang mirip open bill. Pelanggan dapat memesan di beberapa gerai dengan satu kartu atau akun pembayaran, lalu seluruh transaksi dikonsolidasikan sebagai tagihan virtual.<\/p>\n<p>Pembayaran akhirnya diselesaikan di kasir pusat atau melalui sistem terintegrasi ketika pelanggan selesai berkeliling.<\/p>\n<p>Contoh yang sering dijumpai adalah food court di mal besar yang menerapkan kartu top-up atau sistem cashless terpusat, sehingga pelanggan bisa memesan dari beberapa tenant tanpa perlu membayar terpisah di setiap gerai.<\/p>\n<h2><strong>Tantangan Teknis dan Solusi dalam Implementasi<\/strong><\/h2>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter wp-image-188741 size-full\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/perbedaan-open-bill-close-bill.jpg\" alt=\"perbedaan open bill close bill\" width=\"1200\" height=\"675\" srcset=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/perbedaan-open-bill-close-bill.jpg 1200w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/perbedaan-open-bill-close-bill-300x169.jpg 300w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/perbedaan-open-bill-close-bill-1024x576.jpg 1024w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/perbedaan-open-bill-close-bill-768x432.jpg 768w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/perbedaan-open-bill-close-bill-747x420.jpg 747w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/perbedaan-open-bill-close-bill-150x84.jpg 150w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/perbedaan-open-bill-close-bill-696x392.jpg 696w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/perbedaan-open-bill-close-bill-1068x601.jpg 1068w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/p>\n<p><span id=\"manajemen-risiko-dan-keamanan-transaksi\">Penerapan open bill dan close bill perlu didukung prosedur yang rapi agar operasional tetap aman dan efisien. Berikut beberapa tantangan yang umum terjadi di restoran, beserta pendekatan solusi yang biasanya digunakan.<\/span><\/p>\n<h3>1. Risiko pelanggan pergi tanpa membayar<\/h3>\n<p>Pada skema open bill, tagihan yang terbuka tanpa pembayaran di muka berpotensi memunculkan kasus pelanggan meninggalkan lokasi sebelum transaksi ditutup. Situasi ini menimbulkan kerugian langsung dan biasanya terjadi saat restoran ramai atau kontrol meja kurang ketat.<\/p>\n<p><strong>Solusi:<\/strong> Beberapa bisnis menerapkan kebijakan penjaminan, misalnya menyimpan kartu identitas atau kartu kredit fisik saat membuka tagihan. Alternatif yang lebih modern adalah pra-otorisasi kartu kredit, yaitu sistem menahan sejumlah dana sebagai jaminan hingga pembayaran akhir diselesaikan.<\/p>\n<h3>2. Tagihan masih terbuka saat operasional berakhir<\/h3>\n<p>Di akhir jam operasional, kadang ditemukan tagihan yang masih berstatus open padahal meja sudah kosong. Penyebabnya bisa karena pembayaran tunai sudah diterima tetapi kasir lupa menutup transaksi di sistem, atau pramusaji tidak menginformasikan bahwa meja telah selesai.<\/p>\n<p><strong>Solusi:<\/strong> SOP penutupan harian perlu memasukkan pengecekan wajib seluruh open bill. Idealnya, sistem POS juga dibuat tidak mengizinkan proses tutup buku harian jika masih ada transaksi terbuka, sehingga manajer dapat menelusuri dan menyelesaikan statusnya terlebih dahulu.<\/p>\n<h3>3. Proses split bill yang memakan waktu<\/h3>\n<p>Split bill sering menjadi hambatan ketika meja dengan open bill meminta pembayaran terpisah tepat sebelum close bill dilakukan. Jika prosesnya manual atau tidak didukung fitur yang memadai, antrean kasir bisa melambat, terutama pada jam sibuk.<\/p>\n<p><strong>Solusi:<\/strong> Gunakan <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/keunggulan-sistem-kasir-dengan-sistem-pos\/\">POS yang mendukung split bill<\/a> lanjutan, misalnya pemisahan berdasarkan item, pembagian per orang, atau kombinasi keduanya. Dengan fitur ini, kasir dapat menyelesaikan pemisahan tagihan lebih cepat sebelum transaksi ditutup.<\/p>\n<h2><strong>Kesimpulan<\/strong><\/h2>\n<p>Memahami perbedaan open bill dan close bill tidak hanya soal teknis kasir, tetapi juga strategi layanan dan kontrol transaksi. Open bill mendukung fleksibilitas saat pesanan bertahap, sedangkan close bill menekankan kepastian pembayaran dan kerapian arus kas.<\/p>\n<p>Penerapannya perlu mengikuti konsep restoran dan didukung SOP yang jelas. Aturan seperti siapa yang berwenang membuka tagihan, batas waktu tagihan tetap aktif, serta verifikasi sebelum penutupan transaksi membantu mengurangi kesalahan pencatatan dan potensi kebocoran pendapatan.<\/p>\n<p>Jika Anda ingin menentukan metode yang paling tepat dan menyusun SOP billing yang rapi untuk operasional restoran, silakan jadwalkan <a href=\"https:\/\/www.hashmicro.com\/id\/tour-produk-gratis\/\">konsultasi gratis<\/a>. Pembahasan dapat mencakup alur kerja kasir, pengaturan peran staf, serta skenario transaksi yang paling sering terjadi di bisnis Anda.<\/p>\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 open bill dan close bill?<\/button>\r\n        <\/div>\r\n        <div class=\"answer\">\r\n            <p>Open bill adalah status transaksi yang masih aktif dan memungkinkan penambahan pesanan, sedangkan close bill adalah transaksi yang sudah diselesaikan pembayarannya dan tidak bisa diubah lagi.<\/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 open bill aman dari risiko kecurangan karyawan?<\/button>\r\n        <\/div>\r\n        <div class=\"answer\">\r\n            <p>Open bill memiliki risiko jika tidak diawasi, seperti kasir membatalkan pesanan (void) setelah menerima uang. Risiko ini dapat diminimalisir dengan pembatasan hak akses pada sistem POS.<\/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 sebaiknya menggunakan sistem open bill?<\/button>\r\n        <\/div>\r\n        <div class=\"answer\">\r\n            <p>Sistem open bill sangat ideal untuk restoran full service, bar, atau kafe di mana pelanggan cenderung memesan menu tambahan selama kunjungan mereka.<\/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 mengatasi pelanggan yang lupa membayar pada sistem open bill?<\/button>\r\n        <\/div>\r\n        <div class=\"answer\">\r\n            <p>Restoran dapat menerapkan sistem pra-otorisasi kartu kredit atau menahan kartu identitas pelanggan sebagai jaminan sebelum membuka tagihan (tab).<\/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 stok barang berkurang saat open bill atau close bill?<\/button>\r\n        <\/div>\r\n        <div class=\"answer\">\r\n            <p>Tergantung konfigurasi sistem POS, namun umumnya stok bahan baku dipotong saat pesanan open bill dikirim ke dapur (kitchen order) untuk menjaga akurasi ketersediaan menu.<\/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>Dalam operasional restoran dan kafe, alur pembayaran bukan hanya urusan kasir, tetapi juga memengaruhi kecepatan layanan dan akurasi transaksi. Karena itu, banyak bisnis mulai membedakan dua pendekatan yang paling umum digunakan, yaitu open bill dan close bill. Keduanya sama-sama mengatur bagaimana tagihan dibuka, diproses, lalu diselesaikan, namun konteks penggunaannya bisa berbeda. Open bill biasanya memberi [&hellip;]<\/p>\n","protected":false},"author":221,"featured_media":188740,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[7],"tags":[],"class_list":{"0":"post-188055","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-pos"},"acf":{"post_reviewer":""},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.1 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Perbedaan Open Bill dan Close Bill: Panduan Lengkap Sistem POS<\/title>\n<meta name=\"description\" content=\"Pahami perbedaan open bill dan close bill lewat flow transaksi, contoh penerapan, serta tips memilih metode billing yang paling sesuai.\" \/>\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\/perbedaan-open-bill-dan-close-bill\/\" \/>\n<meta property=\"og:locale\" content=\"id_ID\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Perbedaan Open Bill dan Close Bill: Panduan Lengkap Sistem POS\" \/>\n<meta property=\"og:description\" content=\"Pahami perbedaan open bill dan close bill lewat flow transaksi, contoh penerapan, serta tips memilih metode billing yang paling sesuai.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/perbedaan-open-bill-dan-close-bill\/\" \/>\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-12T03:16:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-02T06:26:31+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/open-bill-close-bill-7.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=\"Oscar Renatha\" \/>\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=\"Oscar Renatha\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimasi waktu membaca\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 menit\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/perbedaan-open-bill-dan-close-bill\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/perbedaan-open-bill-dan-close-bill\\\/\"},\"author\":{\"name\":\"Oscar Renatha\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#\\\/schema\\\/person\\\/499b4ccbd39a4544e629ce4d1bf64382\"},\"headline\":\"Perbedaan Open Bill dan Close Bill: Panduan Lengkap Sistem POS\",\"datePublished\":\"2026-02-12T03:16:49+00:00\",\"dateModified\":\"2026-03-02T06:26:31+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/perbedaan-open-bill-dan-close-bill\\\/\"},\"wordCount\":1700,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/perbedaan-open-bill-dan-close-bill\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/open-bill-close-bill-7.webp\",\"articleSection\":[\"POS\"],\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/perbedaan-open-bill-dan-close-bill\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/perbedaan-open-bill-dan-close-bill\\\/\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/perbedaan-open-bill-dan-close-bill\\\/\",\"name\":\"Perbedaan Open Bill dan Close Bill: Panduan Lengkap Sistem POS\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/perbedaan-open-bill-dan-close-bill\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/perbedaan-open-bill-dan-close-bill\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/open-bill-close-bill-7.webp\",\"datePublished\":\"2026-02-12T03:16:49+00:00\",\"dateModified\":\"2026-03-02T06:26:31+00:00\",\"description\":\"Pahami perbedaan open bill dan close bill lewat flow transaksi, contoh penerapan, serta tips memilih metode billing yang paling sesuai.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/perbedaan-open-bill-dan-close-bill\\\/#breadcrumb\"},\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/perbedaan-open-bill-dan-close-bill\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/perbedaan-open-bill-dan-close-bill\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/open-bill-close-bill-7.webp\",\"contentUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/open-bill-close-bill-7.webp\",\"width\":1200,\"height\":675,\"caption\":\"open bill close bill\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/perbedaan-open-bill-dan-close-bill\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Perbedaan Open Bill dan Close Bill: Panduan Lengkap Sistem POS\"}]},{\"@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\\\/499b4ccbd39a4544e629ce4d1bf64382\",\"name\":\"Oscar Renatha\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/Oscar-96x96.webp\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/Oscar-96x96.webp\",\"contentUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/Oscar-96x96.webp\",\"caption\":\"Oscar Renatha\"},\"description\":\"Berpengalaman selama 3 tahun dalam industri SaaS khususnya bidang POS, Oscar berfokus pada penulisan artikel terkait integrasi POS dengan modul lain, manajemen transaksi penjualan, multi-store management, dan strategi penjualan yang dapat membantu para pelaku bisnis meningkatkan pertumbuhan bisnis mereka.\",\"sameAs\":[\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/\"],\"gender\":\"Laki-laki\",\"knowsAbout\":[\"POS\",\"penjualan\",\"strategi penjualan\"],\"knowsLanguage\":[\"Inggris\",\"Indonesia\"],\"jobTitle\":\"Content Writer\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/author\\\/oscar-renatha\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Perbedaan Open Bill dan Close Bill: Panduan Lengkap Sistem POS","description":"Pahami perbedaan open bill dan close bill lewat flow transaksi, contoh penerapan, serta tips memilih metode billing yang paling sesuai.","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\/perbedaan-open-bill-dan-close-bill\/","og_locale":"id_ID","og_type":"article","og_title":"Perbedaan Open Bill dan Close Bill: Panduan Lengkap Sistem POS","og_description":"Pahami perbedaan open bill dan close bill lewat flow transaksi, contoh penerapan, serta tips memilih metode billing yang paling sesuai.","og_url":"https:\/\/www.hashmicro.com\/id\/blog\/perbedaan-open-bill-dan-close-bill\/","og_site_name":"HashMicro Indonesia","article_publisher":"https:\/\/www.facebook.com\/hashmicro","article_published_time":"2026-02-12T03:16:49+00:00","article_modified_time":"2026-03-02T06:26:31+00:00","og_image":[{"width":1200,"height":675,"url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/open-bill-close-bill-7.webp","type":"image\/webp"}],"author":"Oscar Renatha","twitter_card":"summary_large_image","twitter_creator":"@hashmicro","twitter_site":"@hashmicro","twitter_misc":{"Ditulis oleh":"Oscar Renatha","Estimasi waktu membaca":"10 menit"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hashmicro.com\/id\/blog\/perbedaan-open-bill-dan-close-bill\/#article","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/perbedaan-open-bill-dan-close-bill\/"},"author":{"name":"Oscar Renatha","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/499b4ccbd39a4544e629ce4d1bf64382"},"headline":"Perbedaan Open Bill dan Close Bill: Panduan Lengkap Sistem POS","datePublished":"2026-02-12T03:16:49+00:00","dateModified":"2026-03-02T06:26:31+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/perbedaan-open-bill-dan-close-bill\/"},"wordCount":1700,"commentCount":0,"publisher":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#organization"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/perbedaan-open-bill-dan-close-bill\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/open-bill-close-bill-7.webp","articleSection":["POS"],"inLanguage":"id","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.hashmicro.com\/id\/blog\/perbedaan-open-bill-dan-close-bill\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/id\/blog\/perbedaan-open-bill-dan-close-bill\/","url":"https:\/\/www.hashmicro.com\/id\/blog\/perbedaan-open-bill-dan-close-bill\/","name":"Perbedaan Open Bill dan Close Bill: Panduan Lengkap Sistem POS","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/perbedaan-open-bill-dan-close-bill\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/perbedaan-open-bill-dan-close-bill\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/open-bill-close-bill-7.webp","datePublished":"2026-02-12T03:16:49+00:00","dateModified":"2026-03-02T06:26:31+00:00","description":"Pahami perbedaan open bill dan close bill lewat flow transaksi, contoh penerapan, serta tips memilih metode billing yang paling sesuai.","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/perbedaan-open-bill-dan-close-bill\/#breadcrumb"},"inLanguage":"id","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/id\/blog\/perbedaan-open-bill-dan-close-bill\/"]}]},{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/perbedaan-open-bill-dan-close-bill\/#primaryimage","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/open-bill-close-bill-7.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/open-bill-close-bill-7.webp","width":1200,"height":675,"caption":"open bill close bill"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/id\/blog\/perbedaan-open-bill-dan-close-bill\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/id\/blog\/"},{"@type":"ListItem","position":2,"name":"Perbedaan Open Bill dan Close Bill: Panduan Lengkap Sistem POS"}]},{"@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\/499b4ccbd39a4544e629ce4d1bf64382","name":"Oscar Renatha","image":{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Oscar-96x96.webp","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Oscar-96x96.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Oscar-96x96.webp","caption":"Oscar Renatha"},"description":"Berpengalaman selama 3 tahun dalam industri SaaS khususnya bidang POS, Oscar berfokus pada penulisan artikel terkait integrasi POS dengan modul lain, manajemen transaksi penjualan, multi-store management, dan strategi penjualan yang dapat membantu para pelaku bisnis meningkatkan pertumbuhan bisnis mereka.","sameAs":["https:\/\/www.hashmicro.com\/id\/"],"gender":"Laki-laki","knowsAbout":["POS","penjualan","strategi penjualan"],"knowsLanguage":["Inggris","Indonesia"],"jobTitle":"Content Writer","url":"https:\/\/www.hashmicro.com\/id\/blog\/author\/oscar-renatha\/"}]}},"focus_keyword":"perbedaan open bill dan close bill","order_j":"","_links":{"self":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/188055","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\/221"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/comments?post=188055"}],"version-history":[{"count":4,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/188055\/revisions"}],"predecessor-version":[{"id":190155,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/188055\/revisions\/190155"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media\/188740"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media?parent=188055"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/categories?post=188055"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/tags?post=188055"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}