{"id":10789,"date":"2024-10-31T06:00:44","date_gmt":"2024-10-31T06:00:44","guid":{"rendered":"https:\/\/www.hashmicro.com\/ph\/blog\/?p=10789"},"modified":"2026-03-05T06:35:54","modified_gmt":"2026-03-05T06:35:54","slug":"finished-goods-inventory","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/ph\/blog\/finished-goods-inventory\/","title":{"rendered":"A Comprehensive Guide to Finished Goods Inventory in Business"},"content":{"rendered":"<p>Managing finished goods inventory is crucial to maintaining smooth operations and driving profitability in any business. As companies grow, keeping accurate records of finished goods directly affects how well they can meet demand, control costs, and avoid supply chain disruptions.<\/p>\n<p>One of the biggest challenges is maintaining accuracy across production, sales, and distribution systems. Without efficient tracking, businesses face overstocking, stockouts, and fulfillment delays. A study from <a href=\"https:\/\/dr.ntu.edu.sg\/handle\/10356\/60671\">Nanyang Technological University<\/a> found that improved production planning helped a leading company reduce inventory levels and lower storage costs significantly.<\/p>\n<p>This article covers what finished goods inventory is, why it matters, how to calculate it, and practical ways to manage it more effectively using the right tools.<\/p>\n<div id=\"toc_group_article\" style=''>\r\n\t<p style='font-size:25px;font-weight:bold; margin-bottom:0px'>\r\n\t\tTable of Contents\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\">Content Lists<\/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\t\r\n#toc {\r\n  background-color: #FFF;\r\n\tpadding: 17px 24px 20px 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  padding-top: 20px;\r\n  margin-top: 0px;\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: 84% !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<\/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\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\/\/ Function to handle click on all <a> elements with href starting with #\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\/\/ Add event listener for all <a> elements in toc-list and 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 class 'td-post-content'\r\n  const article = document.querySelector('.td-post-content');\r\n\r\n  \/\/ Find all h2 elements within the article\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');\r\n\r\n\/\/ Sticky TOC and update heading\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 + 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.innerWidth < 767){\r\n\t\t\ttocTitle.textContent = 'Table of Contents'; \/\/ 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\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  tocTitle.textContent = 'Table of Contents'; \/\/ 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        tocTitle.textContent = activeLink ? activeLink.textContent : \"\"; \/\/ Update title only if activeLink exists\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 = 'Table of Contents'; \/\/ 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\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}\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 = 'Table of Contents'; \/\/ 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\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\/\/             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        } 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\t\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        let headerCounter = 0; \/\/ Counter to generate unique IDs\r\n\r\n\t\t\/\/ Function to generate ID in header0, header1, etc. format\r\n\t\tfunction formatId() {\r\n\t\t\treturn `header-${headerCounter++}`; \/\/ ID format: header0, header1, etc.\r\n\t\t}\r\n\r\n\/\/ \t\tfunction formatId(text) {\r\n\/\/             return text.trim().replace(\/[^\\w\\d]+\/g, '_');\r\n\/\/         }\r\n\t\r\n        \/\/ Function to create 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        \/\/ Object to store list of h2 and h3 with their titles\r\n        const headings = [];\r\n\r\n           \/\/ Get all h2 and h3 elements\r\n        \/\/ Get all h2 and h3 elements\r\n\t\tconst elements = document.querySelectorAll('.td-post-content h2');\r\n\r\n\t\telements.forEach(element => {\r\n\t\t\tif (element.tagName === 'H2') {\r\n\t\t\t\tconst id = formatId(); \/\/ Generate new ID\r\n\t\t\t\telement.id = id; \/\/ Set ID to h2 element\r\n\t\t\t\tif (element.textContent.toLowerCase() === \"key takeaways\") {return;} \/\/ Hide Key Takeaways di ToC\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 = formatId(); \/\/ Generate new ID\r\n\t\t\t\telement.id = id; \/\/ Set ID to h3 element\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       \/\/ Create HTML list from headings object\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}`; \/\/ Use the newly generated ID\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\/\/ Get ul element with id 'list_toc'\r\n\t\tconst ulFloat = document.getElementById('list_toc');\r\n\r\n\t\t\/\/ Get content (child elements) from ul with id 'list_toc'\r\n\t\tconst clonedChildren = ulFloat.cloneNode(true).children;\r\n\r\n\t\t\/\/ Get ul element with id 'list_toc_float'\r\n\t\tconst ulToc = document.getElementById('list_toc_float');\r\n\r\n\t\t\/\/ Add content obtained from 'list_toc' to ul with id 'list_toc_float'\r\n\t\tulToc.append(...clonedChildren);\r\n\r\n\r\n        \/\/ Function to get navbar height\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\/\/ Function to add scroll position offset\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\/\/ Function to handle title link click\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\/\/ Add event listener for all title links\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});\r\n    <\/script> -->\r\n\n<table style=\"border-collapse: collapse; background-color: #fffacd; 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;\"><a href=\"#what\">Ineffective finished goods<\/a> management leads to issues like stock discrepancies and overstocking, disrupting the supply chain and increasing costs.<\/li>\n<li style=\"font-weight: 400;\">Tracking finished goods accurately across production stages<a href=\"#why\"> supports<\/a> better financial budgeting, current asset records, and overall inventory control.<\/li>\n<li style=\"font-weight: 400;\">Understanding the<a href=\"#3\"> three production stages<\/a>, from raw materials to finished goods, helps businesses apply the inventory formula more accurately and anticipate costs at every point.<\/li>\n<li style=\"font-weight: 400;\">Regularly <a href=\"#how\">calculating ending finished goods<\/a> inventory using the right formula helps businesses balance supply with demand and avoid stockouts.<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><strong><span id=\"what\">What is the Finished Goods Inventory?<\/span><\/strong><\/h2>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-10802\" src=\"https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2024\/10\/finished-goods-inventory-2.webp\" alt=\"finished goods inventory\" width=\"1200\" height=\"675\" srcset=\"https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2024\/10\/finished-goods-inventory-2.webp 1200w, https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2024\/10\/finished-goods-inventory-2-300x169.webp 300w, https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2024\/10\/finished-goods-inventory-2-1024x576.webp 1024w, https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2024\/10\/finished-goods-inventory-2-768x432.webp 768w, https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2024\/10\/finished-goods-inventory-2-747x420.webp 747w, https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2024\/10\/finished-goods-inventory-2-150x84.webp 150w, https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2024\/10\/finished-goods-inventory-2-696x392.webp 696w, https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2024\/10\/finished-goods-inventory-2-1068x601.webp 1068w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" \/><\/p>\n<p>Finished goods inventory refers to the stock of products that are entirely manufactured and ready to be sold to customers without requiring further processing or assembly. These products have completed the manufacturing cycle, transitioning from raw materials to finished products, and are now stored as inventory until purchased.<\/p>\n<p>For example, if you own a clothing store, you might need an <a href=\"https:\/\/www.hashmicro.com\/ph\/blog\/erp-for-apparel-industry\/\">ERP system for the finished goods<\/a> includes ready to wear apparel, such as shirts and dresses, ready for sale. However, in their raw material inventory stage, items like fabric rolls or thread do not qualify as finished goods since they require further work to become sellable products.<\/p>\n<p>To effectively manage inventory, businesses must track the flow of products from when they are completed to when they are sold. Implementing a finished goods inventory formula and using <a href=\"https:\/\/www.hashmicro.com\/ph\/blog\/best-inventory-management-software\/\">advanced inventory system<\/a> can help businesses maintain optimal stock levels, reducing the risk of overproduction or stockouts while improving overall operational efficiency.<\/p>\n<h2><strong><span id=\"why\">Why Is Finished Goods Inventory Important?<\/span><\/strong><\/h2>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-10801\" src=\"https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2024\/10\/finished-goods-inventory-1.webp\" alt=\"finished goods inventory\" width=\"1200\" height=\"675\" srcset=\"https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2024\/10\/finished-goods-inventory-1.webp 1200w, https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2024\/10\/finished-goods-inventory-1-300x169.webp 300w, https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2024\/10\/finished-goods-inventory-1-1024x576.webp 1024w, https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2024\/10\/finished-goods-inventory-1-768x432.webp 768w, https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2024\/10\/finished-goods-inventory-1-747x420.webp 747w, https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2024\/10\/finished-goods-inventory-1-150x84.webp 150w, https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2024\/10\/finished-goods-inventory-1-696x392.webp 696w, https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2024\/10\/finished-goods-inventory-1-1068x601.webp 1068w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" \/><\/p>\n<p>A clear understanding of finished goods inventory is essential for operational efficiency and financial accuracy in managing a business&#8217;s inventory. The finished goods formula is a powerful tool that helps businesses track their stock of goods, manage production, and maintain a healthy balance of raw materials to finished products.<\/p>\n<p>This formula allows companies to optimize inventory management, minimize waste, and prevent stockouts. Below are several key reasons why managing stock of goods is critical for any successful business operation.<\/p>\n<h3><strong>1. Improves financial budgeting<\/strong><\/h3>\n<p>Accurately tracking finished goods inventory helps businesses improve financial budgeting by providing precise balance sheets and income statement data. Knowing the value of your stock of goods allows you to plan operating budgets more effectively for current operations and future projections.<\/p>\n<p>This ensures better cash flow management and reduces financial risks. By leveraging the finished goods formula, companies can create more accurate financial reports that enhance strategic planning.<\/p>\n<h3><strong>2. Records the number of current assets<\/strong><\/h3>\n<p>Finished goods is crucial in maintaining accurate accounting records, especially regarding current assets. By using the finished goods formula, businesses can effortlessly track items across various stages of production, from raw materials to finished products.<\/p>\n<p>This helps avoid costly accounting errors and ensures compliance with financial regulations. Accurate inventory records also safeguard businesses from potential audits or financial discrepancies.<\/p>\n<h3><strong>3. Reduces waste of materials<\/strong><\/h3>\n<p>Maintaining an optimal level of finished goods prevents businesses from overstocking, which can lead to unnecessary waste of raw materials and finished products. The finished goods inventory formula helps companies balance storing the right amount of raw materials and finished products.<\/p>\n<p>This reduces warehousing costs and eliminates excess inventory that may go unused or expire. Ultimately, this optimization leads to more sustainable operations and cost savings.<\/p>\n<h3><strong>4. Optimizes inventory management processes<\/strong><\/h3>\n<p>Using the finished goods formula allows businesses to refine their<a href=\"https:\/\/www.hashmicro.com\/ph\/blog\/inventory-management-system\/\"> inventory system by providing<\/a> better visibility into production costs and labor efficiency. Tracking every stage, from raw materials to finished products, helps identify areas for improvement, whether through automation or process adjustments.<\/p>\n<p>This optimization leads to smoother operations, fewer bottlenecks, and better resource use, ultimately improving the supply chain.<\/p>\n<h3><strong>5. Minimizes stockouts<\/strong><\/h3>\n<p>A well maintained finished goods prevents stockouts, ensuring customers can receive orders without delays. By accurately predicting demand and adjusting the stock of goods accordingly, businesses can minimize backorders and avoid lost sales.<\/p>\n<p>Utilizing the finished goods inventory formula allows companies to balance supply with demand, ensuring they have the right inventory levels to meet customer expectations without overextending resources.<\/p>\n<p><strong>Read more:<\/strong> <a href=\"https:\/\/www.hashmicro.com\/ph\/blog\/top-construction-inventory-management-software\/\"><strong>Top Construction Inventory Management Software<\/strong><\/a><\/p>\n<h2><strong><span id=\"3\">3 Steps to Becoming Finished Goods<\/span><\/strong><\/h2>\n<p><img decoding=\"async\" class=\"alignnone wp-image-32801 size-full\" src=\"https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2024\/10\/ChatGPT-Image-Mar-5-2026-11_51_17-AM-e1772686442964.webp\" alt=\"3 Steps to Becoming Finished Goods\" width=\"1536\" height=\"740\" srcset=\"https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2024\/10\/ChatGPT-Image-Mar-5-2026-11_51_17-AM-e1772686442964.webp 1536w, https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2024\/10\/ChatGPT-Image-Mar-5-2026-11_51_17-AM-e1772686442964-300x145.webp 300w, https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2024\/10\/ChatGPT-Image-Mar-5-2026-11_51_17-AM-e1772686442964-1024x493.webp 1024w, https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2024\/10\/ChatGPT-Image-Mar-5-2026-11_51_17-AM-e1772686442964-768x370.webp 768w, https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2024\/10\/ChatGPT-Image-Mar-5-2026-11_51_17-AM-e1772686442964-872x420.webp 872w, https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2024\/10\/ChatGPT-Image-Mar-5-2026-11_51_17-AM-e1772686442964-150x72.webp 150w, https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2024\/10\/ChatGPT-Image-Mar-5-2026-11_51_17-AM-e1772686442964-696x335.webp 696w, https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2024\/10\/ChatGPT-Image-Mar-5-2026-11_51_17-AM-e1772686442964-1068x515.webp 1068w\" sizes=\"(max-width: 1536px) 100vw, 1536px\" \/><\/p>\n<p>Before a product is categorized as finished goods, it must pass through several critical stages in the manufacturing process, including the<a href=\"https:\/\/www.hashmicro.com\/ph\/blog\/semi-finished-goods\/\"> production of semi finished goods<\/a>. Each stage is vital in transforming raw materials into a fully completed product, ready for sale or distribution.<\/p>\n<p>Understanding these steps helps optimize the finished goods inventory formula and clarifies how raw materials transition into valuable goods stocks.<\/p>\n<ul>\n<li><strong>Raw materials:<\/strong> The first step in producing finished goods involves gathering raw materials essential for manufacturing. For example, a company needs to maintain a sufficient inventory of raw materials, such as wood and plastic, to ensure a smooth transition from raw materials to finished products and generate the right stock of goods.<\/li>\n<li><strong>Work in Progress:<\/strong> <a href=\"https:\/\/www.hashmicro.com\/ph\/blog\/work-in-progress-wip\/\">Working in progress (WIP) refers<\/a> to items currently being manufactured but not yet complete. Like a half assembled rowboat, these products have undergone part of the production process but still require labor and additional materials before becoming finished goods ready for distribution.<\/li>\n<li><strong>Finished goods:<\/strong> Once all components are assembled and the product is complete, it becomes finished goods, ready for sale or distribution. Like a fully equipped rowboat, the finished goods inventory is now part of the company&#8217;s stock, available for shipment to customers or retail outlets.<\/li>\n<\/ul>\n<h2><strong><span id=\"how\">How to Calculate Finished Goods Inventory<\/span><\/strong><\/h2>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-10803\" src=\"https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2024\/10\/finished-goods-inventory-3.webp\" alt=\"finished goods inventory\" width=\"1200\" height=\"675\" srcset=\"https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2024\/10\/finished-goods-inventory-3.webp 1200w, https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2024\/10\/finished-goods-inventory-3-300x169.webp 300w, https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2024\/10\/finished-goods-inventory-3-1024x576.webp 1024w, https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2024\/10\/finished-goods-inventory-3-768x432.webp 768w, https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2024\/10\/finished-goods-inventory-3-747x420.webp 747w, https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2024\/10\/finished-goods-inventory-3-150x84.webp 150w, https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2024\/10\/finished-goods-inventory-3-696x392.webp 696w, https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2024\/10\/finished-goods-inventory-3-1068x601.webp 1068w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" \/><\/p>\n<p>Calculating finished goods is vital for any business to understand its stock value at the end of a fiscal period. Finished goods typically carry a higher value than items in earlier stages, like raw materials or work in progress, because direct labor, materials, and overhead have been added.<\/p>\n<p>By using the inventory formula, businesses can accurately assess the value of their stock of goods and ensure their pricing strategy reflects the actual cost of production.<\/p>\n<div style=\"text-align: center; font-size: 18px; margin: 20px 0;\">\n<div style=\"border: 2px solid #990000; padding: 15px; background-color: #f9f9f9; text-align: center; margin: 20px 0;\">\n<p style=\"font-weight: bold; font-size: 18px; margin: 0;\"><span style=\"text-decoration: underline;\">Ending Finished Goods Inventory<\/span> = Beginning Finished Goods Inventory + Cost of Goods Manufactured (COGM) \u2013 Cost of Goods Sold (COGS)<\/p>\n<\/div>\n<\/div>\n<p>To apply this formula, take the beginning finished goods balance, add the Cost of Goods Manufactured (COGM), and subtract the Cost of Goods Sold (COGS). The result represents the ending finished goods inventory for the period.<\/p>\n<p>For example, a manufacturing company begins the quarter with $100,000 in finished goods. During the period, it records $90,000 in COGM and $70,000 in COGS. The ending finished goods inventory is calculated as follows<\/p>\n<div style=\"border: 2px solid #990000; padding: 15px; background-color: #f9f9f9; margin: 20px 0;\">\n<p style=\"margin: 5px 0;\">Beginning Finished Goods: $100,000<\/p>\n<p style=\"margin: 5px 0;\">+ Cost of Goods Manufactured (COGM): $90,000<\/p>\n<p style=\"margin: 5px 0;\">\u2212 Cost of Goods Sold (COGS): $70,000<\/p>\n<p style=\"margin: 10px 0 0 0; font-weight: bold;\">Ending Finished Goods Inventory = $120,000<\/p>\n<\/div>\n<p><span id=\"hashmicro\">This finished goods inventory example shows how tracking the value from raw materials to finished products can help businesses maintain an optimal balance between production, inventory management, and sales growth. <a href=\"\/ph\/blog\/barcode-inventory-system\/\">Implementing a barcode inventory system <\/a>can improve this process by ensuring accurate inventory updates.<\/span><\/p>\n<p><strong>Read More: <a href=\"https:\/\/www.hashmicro.com\/ph\/blog\/manufacturing-inventory-software\/\">Top Manufacturing Inventory Software<\/a><\/strong><\/p>\n<h2><strong>Conclusion<\/strong><\/h2>\n<p>Finished goods inventory sits at the center of production planning, financial reporting, and customer fulfillment. When businesses track it accurately, using the right formula and consistent processes, they reduce waste, prevent stockouts, and maintain healthier cash flow. For businesses looking to put the right tools in place, reviewing the<a href=\"https:\/\/www.hashmicro.com\/ph\/blog\/best-inventory-management-software\/\"> leading inventory management software<\/a> options available today is a practical starting point.<\/p>\n<h2><strong>FAQ About Finished Goods Inventory<\/strong><\/h2>\n<ul class=\"bottom_faq\">\n<li>\n<details>\n<summary><strong>How do you record finished goods inventory?<\/strong><\/summary>\n<p>Add the beginning finished goods inventory to the cost of goods manufactured. Subtract the cost of goods sold (COGS) during the accounting period. The resulting value is the ending finished goods inventory, which should be recorded in the balance sheet as a current asset.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>What is the difference between WIP inventory and finished goods?<\/strong><\/summary>\n<p>WIP Inventory: These products are currently at some phase of the manufacturing process. They&#8217;re in an unfinished state, and, therefore, you cannot sell them. Once a raw material meets human labor, you should consider it a work in process. Finished Goods: These are your final assembled products ready for sale.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>What type of account is finished goods inventory?<\/strong><\/summary>\n<p>Finished goods inventory is a current asset account. It represents the fully manufactured products that are ready for sale but not yet sold. These goods are listed on the balance sheet under current assets because they are expected to be sold within the normal operating cycle, which provides liquidity for the business.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>How are finished goods valued?<\/strong><\/summary>\n<p>Finished goods are valued using cost accounting, which includes direct materials, direct labor, and manufacturing overhead. Businesses typically apply FIFO, LIFO, or weighted average methods. This valuation affects both the balance sheet and income statement.<\/p>\n<\/details>\n<\/li>\n<\/ul>\n<p><script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [\n    {\n      \"@type\": \"Question\",\n      \"name\": \"How do you record finished goods inventory?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Add the beginning finished goods inventory to the cost of goods manufactured, then subtract the cost of goods sold (COGS) during the accounting period. The resulting value is the ending finished goods inventory, which is recorded on the balance sheet as a current asset.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"What are examples of finished goods?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Examples of finished goods include apparel that has completed production, prepared food ready to be served in a restaurant, and computers that have completed manufacturing and are ready for retail distribution.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"What is the difference between WIP inventory and finished goods?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Work-in-progress (WIP) inventory refers to products that are partially completed and still undergoing manufacturing, making them unavailable for sale. Finished goods are fully assembled products that are ready to be sold to customers.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"What type of account is finished goods inventory?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Finished goods inventory is a current asset account. It represents fully manufactured products ready for sale but not yet sold and is listed under current assets on the balance sheet.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"How are finished goods valued?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Finished goods are valued using cost accounting, which includes direct materials, direct labor, and manufacturing overhead. Businesses typically apply FIFO, LIFO, or weighted average methods, which affect both the balance sheet and income statement.\"\n      }\n    }\n  ]\n}\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Managing finished goods inventory is crucial to maintaining smooth operations and driving profitability in any business. As companies grow, keeping accurate records of finished goods directly affects how well they can meet demand, control costs, and avoid supply chain disruptions. One of the biggest challenges is maintaining accuracy across production, sales, and distribution systems. Without [&hellip;]<\/p>\n","protected":false},"author":19,"featured_media":10800,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[20],"tags":[],"class_list":{"0":"post-10789","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-inventory"},"acf":{"content_type_custom_acf":"","post_reviewer":""},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.6 (Yoast SEO v26.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>A Comprehensive Guide to Finished Goods Inventory in Business<\/title>\n<meta name=\"description\" content=\"Finished goods inventory includes all manufactured products ready for sale, which may also serve as raw materials for other buyers\u2019 production processes.\" \/>\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\/ph\/blog\/finished-goods-inventory\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"A Comprehensive Guide to Finished Goods Inventory in Business\" \/>\n<meta property=\"og:description\" content=\"Finished goods inventory includes all manufactured products ready for sale, which may also serve as raw materials for other buyers\u2019 production processes.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/ph\/blog\/finished-goods-inventory\/\" \/>\n<meta property=\"og:site_name\" content=\"HashMicro Philippine Blog\" \/>\n<meta property=\"article:published_time\" content=\"2024-10-31T06:00:44+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-05T06:35:54+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2024\/10\/finished-goods-inventory.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=\"Afresti\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Afresti\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.hashmicro.com\/ph\/blog\/finished-goods-inventory\/\",\"url\":\"https:\/\/www.hashmicro.com\/ph\/blog\/finished-goods-inventory\/\",\"name\":\"A Comprehensive Guide to Finished Goods Inventory in Business\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/ph\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/ph\/blog\/finished-goods-inventory\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/ph\/blog\/finished-goods-inventory\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2024\/10\/finished-goods-inventory.webp\",\"datePublished\":\"2024-10-31T06:00:44+00:00\",\"dateModified\":\"2026-03-05T06:35:54+00:00\",\"author\":{\"@id\":\"https:\/\/www.hashmicro.com\/ph\/blog\/#\/schema\/person\/ad19475b8b2c723c4295ecf114d566f1\"},\"description\":\"Finished goods inventory includes all manufactured products ready for sale, which may also serve as raw materials for other buyers\u2019 production processes.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.hashmicro.com\/ph\/blog\/finished-goods-inventory\/#breadcrumb\"},\"inLanguage\":\"en-PH\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.hashmicro.com\/ph\/blog\/finished-goods-inventory\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-PH\",\"@id\":\"https:\/\/www.hashmicro.com\/ph\/blog\/finished-goods-inventory\/#primaryimage\",\"url\":\"https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2024\/10\/finished-goods-inventory.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2024\/10\/finished-goods-inventory.webp\",\"width\":1200,\"height\":675,\"caption\":\"finished goods inventory\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.hashmicro.com\/ph\/blog\/finished-goods-inventory\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.hashmicro.com\/ph\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"A Comprehensive Guide to Finished Goods Inventory in Business\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.hashmicro.com\/ph\/blog\/#website\",\"url\":\"https:\/\/www.hashmicro.com\/ph\/blog\/\",\"name\":\"HashMicro Philippine Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.hashmicro.com\/ph\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-PH\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.hashmicro.com\/ph\/blog\/#\/schema\/person\/ad19475b8b2c723c4295ecf114d566f1\",\"name\":\"Afresti\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-PH\",\"@id\":\"https:\/\/www.hashmicro.com\/ph\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2025\/02\/cropped-WhatsApp-Image-2024-07-31-at-14.16.47_e4fc5c69-scaled-1-96x96.jpg\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2025\/02\/cropped-WhatsApp-Image-2024-07-31-at-14.16.47_e4fc5c69-scaled-1-96x96.jpg\",\"caption\":\"Afresti\"},\"description\":\"A SEO content writer at HashMicro with a keen interest in savvy tech and a passion for exploring innovative digital strategies, dedicated to continuous learning and professional growth.\",\"url\":\"https:\/\/www.hashmicro.com\/ph\/blog\/author\/afresti\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"A Comprehensive Guide to Finished Goods Inventory in Business","description":"Finished goods inventory includes all manufactured products ready for sale, which may also serve as raw materials for other buyers\u2019 production processes.","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\/ph\/blog\/finished-goods-inventory\/","og_locale":"en_US","og_type":"article","og_title":"A Comprehensive Guide to Finished Goods Inventory in Business","og_description":"Finished goods inventory includes all manufactured products ready for sale, which may also serve as raw materials for other buyers\u2019 production processes.","og_url":"https:\/\/www.hashmicro.com\/ph\/blog\/finished-goods-inventory\/","og_site_name":"HashMicro Philippine Blog","article_published_time":"2024-10-31T06:00:44+00:00","article_modified_time":"2026-03-05T06:35:54+00:00","og_image":[{"width":1200,"height":675,"url":"https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2024\/10\/finished-goods-inventory.webp","type":"image\/webp"}],"author":"Afresti","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Afresti","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/ph\/blog\/finished-goods-inventory\/","url":"https:\/\/www.hashmicro.com\/ph\/blog\/finished-goods-inventory\/","name":"A Comprehensive Guide to Finished Goods Inventory in Business","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/ph\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/ph\/blog\/finished-goods-inventory\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/ph\/blog\/finished-goods-inventory\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2024\/10\/finished-goods-inventory.webp","datePublished":"2024-10-31T06:00:44+00:00","dateModified":"2026-03-05T06:35:54+00:00","author":{"@id":"https:\/\/www.hashmicro.com\/ph\/blog\/#\/schema\/person\/ad19475b8b2c723c4295ecf114d566f1"},"description":"Finished goods inventory includes all manufactured products ready for sale, which may also serve as raw materials for other buyers\u2019 production processes.","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/ph\/blog\/finished-goods-inventory\/#breadcrumb"},"inLanguage":"en-PH","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/ph\/blog\/finished-goods-inventory\/"]}]},{"@type":"ImageObject","inLanguage":"en-PH","@id":"https:\/\/www.hashmicro.com\/ph\/blog\/finished-goods-inventory\/#primaryimage","url":"https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2024\/10\/finished-goods-inventory.webp","contentUrl":"https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2024\/10\/finished-goods-inventory.webp","width":1200,"height":675,"caption":"finished goods inventory"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/ph\/blog\/finished-goods-inventory\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/ph\/blog\/"},{"@type":"ListItem","position":2,"name":"A Comprehensive Guide to Finished Goods Inventory in Business"}]},{"@type":"WebSite","@id":"https:\/\/www.hashmicro.com\/ph\/blog\/#website","url":"https:\/\/www.hashmicro.com\/ph\/blog\/","name":"HashMicro Philippine Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.hashmicro.com\/ph\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-PH"},{"@type":"Person","@id":"https:\/\/www.hashmicro.com\/ph\/blog\/#\/schema\/person\/ad19475b8b2c723c4295ecf114d566f1","name":"Afresti","image":{"@type":"ImageObject","inLanguage":"en-PH","@id":"https:\/\/www.hashmicro.com\/ph\/blog\/#\/schema\/person\/image\/","url":"https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2025\/02\/cropped-WhatsApp-Image-2024-07-31-at-14.16.47_e4fc5c69-scaled-1-96x96.jpg","contentUrl":"https:\/\/www.hashmicro.com\/ph\/blog\/wp-content\/uploads\/2025\/02\/cropped-WhatsApp-Image-2024-07-31-at-14.16.47_e4fc5c69-scaled-1-96x96.jpg","caption":"Afresti"},"description":"A SEO content writer at HashMicro with a keen interest in savvy tech and a passion for exploring innovative digital strategies, dedicated to continuous learning and professional growth.","url":"https:\/\/www.hashmicro.com\/ph\/blog\/author\/afresti\/"}]}},"order_j":"","_links":{"self":[{"href":"https:\/\/www.hashmicro.com\/ph\/blog\/wp-json\/wp\/v2\/posts\/10789","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hashmicro.com\/ph\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hashmicro.com\/ph\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/ph\/blog\/wp-json\/wp\/v2\/users\/19"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/ph\/blog\/wp-json\/wp\/v2\/comments?post=10789"}],"version-history":[{"count":26,"href":"https:\/\/www.hashmicro.com\/ph\/blog\/wp-json\/wp\/v2\/posts\/10789\/revisions"}],"predecessor-version":[{"id":32813,"href":"https:\/\/www.hashmicro.com\/ph\/blog\/wp-json\/wp\/v2\/posts\/10789\/revisions\/32813"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/ph\/blog\/wp-json\/wp\/v2\/media\/10800"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/ph\/blog\/wp-json\/wp\/v2\/media?parent=10789"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/ph\/blog\/wp-json\/wp\/v2\/categories?post=10789"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/ph\/blog\/wp-json\/wp\/v2\/tags?post=10789"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}