{"id":1324,"date":"2025-02-02T10:23:26","date_gmt":"2025-02-02T10:23:26","guid":{"rendered":"https:\/\/www.hashmicro.com\/my\/blog\/?p=1324"},"modified":"2026-03-10T03:15:45","modified_gmt":"2026-03-10T03:15:45","slug":"proforma-invoice","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/my\/blog\/proforma-invoice\/","title":{"rendered":"What is a Proforma Invoice? Definition, Benefits and Example"},"content":{"rendered":"<p>Your buyer agrees to purchase 500 units at RM 45 each, shipping included. Before you manufacture anything or book the shipment, you need that agreement in writing. Not a final invoice, just a document that confirms what both sides expect.<\/p>\n<p>That document is a proforma invoice. It locks in the details, including price, quantity, shipping terms, and delivery timeline, before money changes hands or goods leave your warehouse.<\/p>\n<p>Below is a breakdown of what proforma invoices include, how they differ from commercial invoices and purchase orders, and when Malaysian businesses typically use them.<\/p>\n<table style=\"border-collapse: coacllapse; background-color: #fffacd; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); border-radius: 25px 25px 25px 25px;\" width=\"100%\">\n<tbody>\n<tr>\n<td style=\"padding: 15px; border: none;\">\n<h3 style=\"margin-bottom: 10px;\"><span style=\"background-color: #990000; color: #ffffff; padding: 5px;\"><b>Key Takeaways<\/b><\/span><\/h3>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\">A <a href=\"#proforma\">proforma invoice<\/a> is an important preliminary document in international trade, providing a detailed yet adjustable outline of agreed terms between buyer and seller before finalizing a transaction.<\/li>\n<li aria-level=\"1\"><a href=\"#differences\">In international trade<\/a>, proforma invoices help customs estimate duties and allow buyers to arrange financing or import permits before shipment.<\/li>\n<li aria-level=\"1\">Proforma invoices <a href=\"#example\">can be revised<\/a> during negotiation. Once terms are final, a commercial invoice replaces it as the official payment document.<\/li>\n<li aria-level=\"1\">Businesses in Malaysia, like <a href=\"#msic\">MISC Berhad<\/a>, have already integrated proforma invoices into their operations.<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><a href=\"https:\/\/www.hashmicro.com\/my\/free-product-demo\/?medium=free-product-demo\" target=\"_blank\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/08\/free-demo-desktop-my.webp\" data-desktop-src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/08\/free-demo-desktop-my.webp\" data-mobile-src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2024\/07\/free-demo-mobile-my.jpg\" alt=\"FreeDemo\" class=\"responsive-image-banner\"><\/a>\r\n\r\n<script>\r\n    \/\/ check which image to use based on screensize\r\n    document.addEventListener(\"DOMContentLoaded\", function() {\r\n        function updateImageSource() {\r\n            var images = document.querySelectorAll('.responsive-image-banner');\r\n            var screenWidth = window.innerWidth;\r\n\r\n            images.forEach(function(img) {\r\n                var mobileSrc = img.getAttribute('data-mobile-src');\r\n                var desktopSrc = img.getAttribute('data-desktop-src');\r\n\r\n                if (screenWidth < 576 && mobileSrc) {\r\n                    img.setAttribute('src', mobileSrc);\r\n                } else {\r\n                    img.setAttribute('src', desktopSrc);\r\n                }\r\n            });\r\n        }\r\n\r\n        \/\/ Initial check\r\n        updateImageSource();\r\n\r\n        \/\/ Update on resize\r\n        window.addEventListener('resize', updateImageSource);\r\n    });\r\n<\/script> <!-- <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 Content\r\n\t<\/p>\r\n\t<ul id=\"list_toc\" class='list_toc'><\/ul>\r\n<\/div>\r\n\r\n<div class=\"dropdown-fixed-top\" id=\"dropdown-fixed-top\">\r\n\t<div class=\"row\">\r\n\t\t<p id=\"pilihDaftarIsi\">Content Lists<\/p>\r\n\t\t<p><i class=\"td-icon-menu-down\"><\/i><\/p>\r\n\t<\/div>\r\n\t\r\n\t<div>\r\n\t\t<ul id=\"list_toc_top\" class='list_toc'><\/ul>\r\n\t<\/div>\r\n<\/div> -->\r\n\r\n<!-- TOC mobile -->\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\">Table of Content<\/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<!-- TOC mobile -->\r\n\r\n<style>\r\n\t@media (max-width: 992px) {\r\n\t\t#toc_group_article {\r\n\t\t\tpadding-top: 24px;\r\n\t\t}\r\n\t}\r\n\t\r\n\t#list_toc_float {\r\n\t\tmax-height: calc(100vh - 250px);\r\n\t\toverflow-y: auto;\r\n\t}\r\n\t\r\n\t#list_toc_top {\r\n\t\tdisplay: none;\r\n\t\tbackground: #fff;\r\n\t\tmargin-bottom: 4px;\r\n\t}\r\n\t\r\n\t#list_toc_top li {\r\n\t\tdisplay: block;\r\n\t\tmargin-left: 0;\r\n\t\tlist-style: none;\r\n\t}\r\n\t\r\n\t#list_toc_top a {\r\n\t\tpadding: 5px;\r\n\t\tdisplay: block;\r\n\t}\r\n\t\r\n\t#list_toc_top.show {\r\n\t\tdisplay: block;\r\n\t}\r\n\r\n\t#list_toc_top a {\r\n\t\tcolor: #434343;\r\n\t\tborder-bottom: 1px solid #bbb;\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top {\r\n\t\tposition: fixed;\r\n\t\ttop: 59px;\r\n\t\twidth: 100%;\r\n\t\tz-index: 99;\r\n\t\tborder-bottom: 2px solid #9c171e;\r\n\t\tpadding: 12px;\r\n\t\tbackground: #fff;\r\n\t\twidth: 100%;\r\n\t\tcursor: pointer;\r\n\t\tdisplay: none;\r\n\t\tleft: 0;\r\n\t\tbox-shadow: 0 -2px 7px 6px rgba(0, 0, 0, 0.17);\r\n\t}\r\n\t\r\n\t#dropdown-fixed-top.show {\r\n\t\tanimation: showAnim 0.5s ease;\r\n\t\tdisplay: block;\r\n\t\topacity: 1;\r\n\t}\r\n\t\r\n\t@keyframes showAnim {\r\n\t\tfrom {\r\n\t\t\tdisplay: none;\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t\tto {\r\n\t\t\tdisplay: block;\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top #list_toc_top {\r\n\t\tmax-height: calc(50vh - 110px);\r\n\t\toverflow-y: scroll;\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top .row {\r\n\t\tdisplay: flex;\r\n\t\tjustify-content: space-between\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top .row p {\r\n\t\tmargin-bottom: 0;\r\n\t}\r\n\t\r\n\t#pilihDaftarIsi {\r\n\t\tmax-width: 100%;\r\n\t\toverflow: hidden;\r\n\t\twhite-space: nowrap;\r\n\t}\r\n\t\r\n\t@media (min-width: 1018px) {\r\n\t\t.dropdown-fixed-top {\r\n\t\t\tdisplay: none;\r\n\t\t}\r\n\t}\r\n\t\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_top 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: 6px;\r\n\t\tpadding-top: 2px;\r\n\t\tpadding-bottom: 2px;\r\n\t\ttransition: all 0.2s ease-in-out;\r\n\t\tfont-size: 15px;\r\n\t\tline-height: 18px;\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#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}\r\n\t\t#toc_group_article {\r\n\t\t\tdisplay:none;\r\n\t\t}\t\t\t\t\r\n\t}\r\n\r\n<\/style>\r\n\r\n<style>\r\n\t@media (max-width: 992px) {\r\n\t\t#toc_group_article {\r\n\t\t\tpadding-top: 24px;\r\n\t\t}\r\n\t}\r\n\t\r\n\t#list_toc_float {\r\n\t\tmax-height: calc(100vh - 250px);\r\n\t\toverflow-y: auto;\r\n\t}\r\n\t\r\n\t#list_toc_top {\r\n\t\tdisplay: none;\r\n\t\tbackground: #fff;\r\n\t\tmargin-bottom: 4px;\r\n\t}\r\n\t\r\n\t#list_toc_top li {\r\n\t\tdisplay: block;\r\n\t\tmargin-left: 0;\r\n\t\tlist-style: none;\r\n\t}\r\n\t\r\n\t#list_toc_top a {\r\n\t\tpadding: 5px;\r\n\t\tdisplay: block;\r\n\t}\r\n\t\r\n\t#list_toc_top.show {\r\n\t\tdisplay: block;\r\n\t}\r\n\r\n\t#list_toc_top a {\r\n\t\tcolor: #434343;\r\n\t\tborder-bottom: 1px solid #bbb;\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top {\r\n\t\tposition: fixed;\r\n\t\ttop: 59px;\r\n\t\twidth: 100%;\r\n\t\tz-index: 99;\r\n\t\tborder-bottom: 2px solid #9c171e;\r\n\t\tpadding: 12px;\r\n\t\tbackground: #fff;\r\n\t\twidth: 100%;\r\n\t\tcursor: pointer;\r\n\t\tdisplay: none;\r\n\t\tleft: 0;\r\n\t\tbox-shadow: 0 -2px 7px 6px rgba(0, 0, 0, 0.17);\r\n\t}\r\n\t\r\n\t#dropdown-fixed-top.show {\r\n\t\tanimation: showAnim 0.5s ease;\r\n\t\tdisplay: block;\r\n\t\topacity: 1;\r\n\t}\r\n\t\r\n\t@keyframes showAnim {\r\n\t\tfrom {\r\n\t\t\tdisplay: none;\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t\tto {\r\n\t\t\tdisplay: block;\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top #list_toc_top {\r\n\t\tmax-height: calc(50vh - 110px);\r\n\t\toverflow-y: scroll;\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top .row {\r\n\t\tdisplay: flex;\r\n\t\tjustify-content: space-between\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top .row p {\r\n\t\tmargin-bottom: 0;\r\n\t}\r\n\t\r\n\t#pilihDaftarIsi {\r\n\t\tmax-width: 100%;\r\n\t\toverflow: hidden;\r\n\t\twhite-space: nowrap;\r\n\t}\r\n\t\r\n\t@media (min-width: 1018px) {\r\n\t\t.dropdown-fixed-top {\r\n\t\t\tdisplay: none;\r\n\t\t}\r\n\t}\r\n\t\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_top 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: 6px;\r\n\t\tpadding-top: 2px;\r\n\t\tpadding-bottom: 2px;\r\n\t\ttransition: all 0.2s ease-in-out;\r\n\t\tfont-size: 15px;\r\n\t\tline-height: 18px;\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#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\r\n<\/style>\r\n\r\n<!-- START ToC styling  -->\r\n<style>\r\n\t\/* 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 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<!-- END ToC styling  -->\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\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.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 = 'Table of Content';\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 = 'Table of Content'; \/\/ 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 = 'Table of Content'; \/\/ 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 = 'Table of Content'; \/\/ 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<\/script>\r\n\r\n<!-- <script>\r\n\tvar pilihDaftarIsi = document.getElementById('pilihDaftarIsi');\r\n\t\r\n\tdocument.addEventListener('DOMContentLoaded', function() {\r\n\t\tvar dropdownFixedTop = document.querySelector('.dropdown-fixed-top');\r\n\r\n\t\tdropdownFixedTop.addEventListener('click', function() {\r\n\t\t\tvar dropdownContent = this.querySelector('.list_toc');\r\n\t\t\tdropdownContent.classList.toggle('show');\r\n\t\t});\r\n\r\n\t\twindow.addEventListener('click', function(event) {\r\n\t\t\tvar listTocTop = document.getElementById('list_toc_top');\r\n\r\n\t\t\tif (!dropdownFixedTop.contains(event.target)) {\r\n\t\t\t\tlistTocTop.classList.remove('show');\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\t\r\n\tvar daftarIsiContainer = document.getElementById('toc_group_article');\r\n\tvar dropdownFixedTop = document.getElementById('dropdown-fixed-top');\r\n    var triggered = false; \/\/ Flag to keep track of whether the function has been triggered\r\n\r\n    window.addEventListener('scroll', function() {\r\n        if (!triggered && isCompletelyScrolledPast(daftarIsiContainer)) {\r\n            showSectionDropdownFixedTop(false);\r\n            triggered = true;\r\n        } else if (triggered && !isCompletelyScrolledPast(daftarIsiContainer)) {\r\n            showSectionDropdownFixedTop(true);\r\n            triggered = false;\r\n        }\r\n    });\r\n\r\n    function isCompletelyScrolledPast(element) {\r\n        var elementTop = element.getBoundingClientRect().top;\r\n        var elementBottom = element.getBoundingClientRect().bottom;\r\n        return elementTop < 0 && elementBottom < 0;\r\n    }\r\n\r\n    function showSectionDropdownFixedTop(show) {\r\n\t\tif (show) {\r\n\t\t\tdropdownFixedTop.classList.remove(\"show\");\r\n\t\t} else {\r\n\t\t\tdropdownFixedTop.classList.add(\"show\");\r\n\t\t}\r\n    }\r\n\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\t\t  pilihDaftarIsi.innerHTML = a.textContent;\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', 'list_toc_top']; \/\/ 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<!-- END script lama -->\r\n\t\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', 'list_toc_top']; \/\/ 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        \/\/ Fungsi untuk mengubah teks menjadi format id\r\n        function formatId(text) {\r\n            return text.trim().replace(\/[^\\w\\d]+\/g, '_');\r\n        }\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        const elements = document.querySelectorAll('.td-post-content h2');\r\n\t\t\t\/\/, .td-post-content h3\r\n\r\n        elements.forEach(element => {\r\n            if (element.tagName === 'H2') {\r\n                const id = formatId(element.textContent);\r\n                element.id = id;\r\n\t\t\t\tif(element.textContent.toLowerCase() === \"key takeaways\") {return;} \/\/ Biar ga nampilin Key Takeaways di ToC\r\n                headings.push({ level: 'h2', id: id, title: element.textContent, children: [] });\r\n            } else if (element.tagName === 'H3') {\r\n                const id = formatId(element.textContent);\r\n                element.id = id;\r\n                if (headings.length > 0) {\r\n                    headings[headings.length - 1].children.push({ level: 'h3', id: id, title: element.textContent, children: [] });\r\n                }\r\n            }\r\n        });\r\n\r\n        \/\/ Membuat list HTML dari objek headings\r\n        const ul = document.getElementById('list_toc');\r\n        let currentUl = ul;\r\n        headings.forEach(heading => {\r\n            const li = document.createElement('li');\r\n            const a = document.createElement('a');\r\n            a.textContent = heading.title;\r\n            a.href = `#${heading.id}`;\r\n            li.appendChild(a);\r\n\r\n            if (heading.level === 'h2') {\r\n                \/\/ Menyimpan ul saat ini untuk menambahkan nested ul\r\n                currentUl = li;\r\n                ul.appendChild(li);\r\n            } else if (heading.level === 'h3') {\r\n                if (!currentUl.lastElementChild || currentUl.lastElementChild.tagName !== 'UL') {\r\n                    \/\/ Jika belum ada nested ul, buat satu\r\n                    const nestedUl = document.createElement('ul');\r\n                    currentUl.appendChild(nestedUl);\r\n                    currentUl = nestedUl;\r\n                }\r\n                currentUl.appendChild(li);\r\n            }\r\n\r\n            createNestedList(li, heading.children);\r\n        });\r\n\t\t\/\/ Dapatkan elemen ul dengan id 'list_toc_float'\r\nconst ulFloat = document.getElementById('list_toc');\r\nconst ulJourney = document.getElementById('list_journey');\r\n\r\n\/\/ Dapatkan isi (child elements) dari ul dengan id 'list_toc_float'\r\n\tif (ulFloat !== null) {\r\n\t\tconst clonedChildren = ulFloat.cloneNode(true).children;\r\n\t\tconst ulToc = document.getElementById('list_toc_float');\r\n\t\tconst ulTocTop = document.getElementById('list_toc_top');\r\n\t\tif ((ulToc !== null || ulToc !== undefined) && window.innerWidth > 1018){\r\n\t\t\tulToc.append(...clonedChildren);\r\n\t\t} else {\r\n\t\t\tulTocTop.append(...clonedChildren);\r\n\t\t}\r\n\t} \r\n\r\n\tif (ulJourney !== null) {\r\n\t\tconst clonedChildrenJourney = ulJourney.cloneNode(true).children;\r\n\t\tconst ulTocJourney = document.getElementById('list_toc_journey');\r\n\t\tulTocJourney.append(...clonedChildrenJourney);\r\n\t} \r\n\r\n\r\n\r\n\r\n\t\r\n        \/\/ Fungsi untuk mengambil tinggi navbar\r\n        function getNavbarHeight() {\r\n            const navbar = document.getElementById('tdi_34');\r\n            return navbar ? navbar.offsetHeight : 0;\r\n        }\r\n\r\n        \/\/ Fungsi untuk menambahkan offset posisi scroll\r\n        function scrollToElementWithOffset(elementId) {\r\n            const element = document.getElementById(elementId);\r\n            if (element) {\r\n                const offset = getNavbarHeight();\r\n                const elementPosition = element.getBoundingClientRect().top;\r\n                const offsetPosition = elementPosition - offset-40;\r\n\r\n                window.scrollBy({\r\n                    top: offsetPosition,\r\n                    behavior: 'smooth'\r\n                });\r\n            }\r\n        }\r\n\r\n        \/\/ Fungsi untuk menangani klik pada tautan judul\r\n        function handleTitleClick(event) {\r\n            event.preventDefault();\r\n            const href = event.target.getAttribute('href').substr(1);\r\n            scrollToElementWithOffset(href);\r\n        }\r\n\r\n        \/\/ Tambahkan event listener untuk semua tautan judul\r\n        const titleLinks = document.querySelectorAll('a[href^=\"#\"]');\r\n        titleLinks.forEach(link => {\r\n            link.addEventListener('click', handleTitleClick);\r\n        });\r\n\t});\r\n    <\/script> -->\r\n<!-- \t<style>#toc_group_float{display:block !important}<\/style> -->\r\n<\/p>\n<h2><b><span id=\"proforma-invoice\">What is Proforma Invoice?<\/span><\/b><\/h2>\n<p><span id=\"proforma\">A proforma invoice is a preliminary document that outlines what you intend to sell, at what price, and under what terms. It goes to the buyer before you deliver anything.<\/span><\/p>\n<p>Unlike a standard invoice, a proforma does not demand payment. It serves as a written confirmation of the deal so both parties can review details before committing. If the buyer wants to change quantities or negotiate shipping terms, the proforma gets revised. Once everything is agreed, you issue <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/commercial-invoice-template\/\">the actual commercial invoice.<\/a><\/p>\n<p>International traders use proforma invoices frequently because buyers often need documentation to arrange letters of credit, apply for import licenses, or estimate customs duties before the shipment arrives.<\/p>\n<p>Generating proforma invoices can be risky, that&#8217;s why the use of invoicing software is important. You can explore <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/best-invoicing-software\/\">the most recommended invoicing software in Malaysia<\/a>, or download the price scheme below for more detailed information.<\/p>\n<a href=\"https:\/\/www.hashmicro.com\/my\/offer\/download-erp-pricing-list?medium=banner-article\" target=\"_blank\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/08\/skema-harga-desktop-my.webp\" data-desktop-src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/08\/skema-harga-desktop-my.webp\" data-mobile-src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/08\/skema-harga-mobile-my.webp\" alt=\"SkemaHarga\" class=\"responsive-image-banner\"><\/a>\r\n\r\n<script>\r\n    \/\/ check which image to use based on screensize\r\n    document.addEventListener(\"DOMContentLoaded\", function() {\r\n        function updateImageSource() {\r\n            var images = document.querySelectorAll('.responsive-image-banner');\r\n            var screenWidth = window.innerWidth;\r\n\r\n            images.forEach(function(img) {\r\n                var mobileSrc = img.getAttribute('data-mobile-src');\r\n                var desktopSrc = img.getAttribute('data-desktop-src');\r\n\r\n                if (screenWidth < 576 && mobileSrc) {\r\n                    img.setAttribute('src', mobileSrc);\r\n                } else {\r\n                    img.setAttribute('src', desktopSrc);\r\n                }\r\n            });\r\n        }\r\n\r\n        \/\/ Initial check\r\n        updateImageSource();\r\n\r\n        \/\/ Update on resize\r\n        window.addEventListener('resize', updateImageSource);\r\n    });\r\n<\/script>\n<style>\r\n    #custom-quote {\r\n        background-color: #f0f0f0;\r\n        padding: 20px;\r\n        border-radius: 12px;\r\n        margin: 20px;\r\n        display: flex;\r\n        flex-direction: column;\r\n    }\r\n\r\n    #custom-quote .quote-body {\r\n        display: flex;\r\n        flex-direction: row;\r\n        align-items: flex-start;\r\n        gap: 15px;\r\n        font-size: 16px;\r\n        line-height: 1.5;\r\n        font-style: italic;\r\n    }\r\n\r\n    #custom-quote .quote-icon {\r\n        width: 40px;\r\n        height: 40px;\r\n        flex-shrink: 0;\r\n    }\r\n\r\n    #custom-quote .quote-author-wrapper {\r\n        margin-top: 15px;\r\n        align-self: flex-start;\r\n        margin-left: 55px; \r\n\t\tmargin-bottom: 0px;\r\n    }\r\n\r\n    #custom-quote em {\r\n        font-family: 'Roboto Serif', serif !important;\r\n        font-size: 12px;\r\n        font-weight: bold;\r\n        font-style: normal;\r\n    }\r\n\r\n    @media screen and (max-width: 768px) {\r\n        #custom-quote {\r\n            margin: 15px 0;\r\n            padding: 15px;\r\n        }\r\n        \r\n        #custom-quote .quote-body {\r\n            gap: 12px;\r\n        }\r\n\r\n        #custom-quote .quote-author-wrapper {\r\n            margin-left: 52px;\r\n        }\r\n    }\r\n\r\n    @media screen and (max-width: 480px) {\r\n        #custom-quote {\r\n            margin: 10px 0;\r\n            padding: 12px;\r\n        }\r\n\r\n        #custom-quote .quote-body {\r\n            font-size: 14px;\r\n            gap: 10px;\r\n        }\r\n\r\n        #custom-quote .quote-icon {\r\n            width: 32px;\r\n            height: 32px;\r\n        }\r\n\r\n        #custom-quote .quote-author-wrapper {\r\n            margin-top: 10px;\r\n            margin-left: 42px;\r\n        }\r\n    }\r\n<\/style>\r\n\r\n<div id=\"custom-quote\">\r\n    <div class=\"quote-body\">\r\n        <img decoding=\"async\" src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/12\/quote.webp\" alt=\"Quote Icon\" class=\"quote-icon\">\r\n        <div>\r\n            A proforma invoice is not about paperwork. It is about avoiding the conversation where your buyer says &#039;that is not what we agreed&#039; after the goods already shipped.        <\/div>\r\n    <\/div>\r\n    <p class=\"quote-author-wrapper\">\r\n        <em>\u2014 Angela Tan, Regional Manager<\/em>\r\n    <\/p>\r\n<\/div>\n<h2><b><span id=\"differences\">Proforma Invoice vs. Other Invoices<\/span><\/b><\/h2>\n<p>Different documents serve different stages of a transaction. A proforma invoice comes before the sale is final. A commercial invoice comes after. A purchase order comes from the buyer, not the seller. Here is how they compare:<\/p>\n<style>\r\n  \/* Outer container: only handles horizontal scroll *\/\r\n  #custom-shortcode-scrollable-table {\r\n    width: 100%;\r\n    overflow-x: auto;\r\n  }\r\n  \/* Inner container: fixes vertical scroll visibility *\/\r\n  #custom-shortcode-scrollable-table .table-wrapper {\r\n    display: inline-block;\r\n    width: 130%;\r\n    vertical-align: top;\r\n  }\r\n  #custom-shortcode-scrollable-table table {\r\n    border-collapse: collapse;\r\n    table-layout: fixed;\r\n    width: 100%;\r\n  }\r\n  #custom-shortcode-scrollable-table thead {\r\n    background-color: #af2828;\r\n    color: #ffffff;\r\n    position: sticky;\r\n    top: 0;\r\n    z-index: 2;\r\n  }\r\n  #custom-shortcode-scrollable-table th {\r\n    font-size: 16px;\r\n  }\r\n  #custom-shortcode-scrollable-table td {\r\n    font-size: 14px;\r\n  }\r\n  #custom-shortcode-scrollable-table th:first-child,\r\n  #custom-shortcode-scrollable-table td:first-child {\r\n    width: 140px;\r\n  }\r\n  \r\n  \/* Styling khusus untuk type=\"check\" *\/\r\n    \r\n  \/* Scrollable tbody with visible vertical scrollbar *\/\r\n  #custom-shortcode-scrollable-table tbody {\r\n    display: block;\r\n    overflow-y: auto;\r\n    overflow-x: hidden;\r\n    width: 100%;\r\n    \/* max-height will be set dynamically *\/\r\n  }\r\n  #custom-shortcode-scrollable-table thead,\r\n  #custom-shortcode-scrollable-table tbody tr {\r\n    display: table;\r\n    width: 100%;\r\n    table-layout: fixed;\r\n  }\r\n  \/* Scrollbar styles for both x and y *\/\r\n  #custom-shortcode-scrollable-table::-webkit-scrollbar,\r\n  #custom-shortcode-scrollable-table tbody::-webkit-scrollbar {\r\n    width: 8px;\r\n    height: 8px;\r\n  }\r\n  #custom-shortcode-scrollable-table::-webkit-scrollbar-track,\r\n  #custom-shortcode-scrollable-table tbody::-webkit-scrollbar-track {\r\n    background: #f1f1f1;\r\n    border-radius: 4px;\r\n  }\r\n  #custom-shortcode-scrollable-table::-webkit-scrollbar-thumb,\r\n  #custom-shortcode-scrollable-table tbody::-webkit-scrollbar-thumb {\r\n    background: #af2828;\r\n    border-radius: 4px;\r\n  }\r\n  #custom-shortcode-scrollable-table::-webkit-scrollbar-thumb:hover,\r\n  #custom-shortcode-scrollable-table tbody::-webkit-scrollbar-thumb:hover {\r\n    background: #8a1f1f;\r\n  }\r\n  @media (max-width: 767px) {\r\n    #custom-shortcode-scrollable-table th {\r\n      font-size: 12px;\r\n    }\r\n    #custom-shortcode-scrollable-table td {\r\n      font-size: 10px;\r\n    }\r\n    #custom-shortcode-scrollable-table::-webkit-scrollbar,\r\n    #custom-shortcode-scrollable-table tbody::-webkit-scrollbar {\r\n      width: 6px;\r\n      height: 6px;\r\n    }\r\n      }\r\n<\/style>\r\n<div id=\"custom-shortcode-scrollable-table\">\r\n  <div class=\"table-wrapper\">\r\n    <table>\r\n      <thead>\r\n        <tr>\r\n                      <th>Comparison Aspect<\/th>\r\n                      <th>Proforma Invoice<\/th>\r\n                      <th>Invoice<\/th>\r\n                      <th>Commercial Invoice<\/th>\r\n                      <th>Purchase Order<\/th>\r\n                  <\/tr>\r\n      <\/thead>\r\n      <tbody>\r\n                            <tr>\r\n                          <td><b>Definition<\/b><\/td>\r\n                          <td>A preliminary bill of sale issued before delivery. It outlines the seller\u2019s intent to provide goods or services.<\/td>\r\n                          <td>A formal request for payment issued after delivery, reflecting the actual amount owed.<\/td>\r\n                          <td>A document used in international trade that states the value of shipped goods for customs and tax purposes.<\/td>\r\n                          <td>A document issued by the buyer to authorise a purchase and state the transaction requirements.<\/td>\r\n                      <\/tr>\r\n                            <tr>\r\n                          <td><b>Legal Binding<\/b><\/td>\r\n                          <td>Not legally binding and does not require payment upon receipt.<\/td>\r\n                          <td>Legally binding and requires the buyer to make payment.<\/td>\r\n                          <td>Legally binding and used for customs clearance, including duties and taxes.<\/td>\r\n                          <td>Becomes binding once accepted by the seller, stating what is ordered, at what price, and in what quantity.<\/td>\r\n                      <\/tr>\r\n                            <tr>\r\n                          <td><b>Purpose in Transaction<\/b><\/td>\r\n                          <td>Used to formalise a future transaction. Common in cross-border deals for customs reference but has no fiscal value.<\/td>\r\n                          <td>Used to finalise the transaction and trigger the payment process after goods or services are delivered.<\/td>\r\n                          <td>Used mainly for cross-border shipping to complete the sale and declare goods to customs.<\/td>\r\n                          <td>Used by the buyer to specify and approve a purchase before any invoice is issued by the seller.<\/td>\r\n                      <\/tr>\r\n                            <tr>\r\n                          <td><b>Typical Usage<\/b><\/td>\r\n                          <td>Used to confirm sale terms and get buyer approval before issuing the official invoice.<\/td>\r\n                          <td>Used to request payment and confirm completion of a sale.<\/td>\r\n                          <td>Used for importing and exporting goods across borders, detailing shipment contents.<\/td>\r\n                          <td>Used to control purchasing and track goods or services as part of inventory and procurement control.<\/td>\r\n                      <\/tr>\r\n              <\/tbody>\r\n    <\/table>\r\n  <\/div>\r\n<\/div>\r\n<script>\r\ndocument.addEventListener(\"DOMContentLoaded\", function () {\r\n  const tbody = document.querySelector(\"#custom-shortcode-scrollable-table tbody\");\r\n  if (!tbody) return;\r\n  const rows = tbody.querySelectorAll(\"tr\");\r\n  if (rows.length > 10) {\r\n    let totalHeight = 0;\r\n    for (let i = 0; i < 10 && i < rows.length; i++) {\r\n      totalHeight += rows[i].offsetHeight;\r\n    }\r\n    tbody.style.maxHeight = totalHeight + \"px\";\r\n  }\r\n});\r\n<\/script>\n<h2><b><span id=\"example\">Proforma Invoice Example<\/span><\/b><\/h2>\n<p><span style=\"font-weight: 400;\">To give you more understanding about how a proforma invoice in Malay looks like, we have provided a proforma invoice example below.<\/span><\/p>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-1326 size-full\" src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2024\/08\/proforma-invoice-example.webp\" alt=\"proforma invoice example\" width=\"1414\" height=\"2000\" srcset=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2024\/08\/proforma-invoice-example.webp 1414w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2024\/08\/proforma-invoice-example-212x300.webp 212w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2024\/08\/proforma-invoice-example-724x1024.webp 724w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2024\/08\/proforma-invoice-example-768x1086.webp 768w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2024\/08\/proforma-invoice-example-1086x1536.webp 1086w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2024\/08\/proforma-invoice-example-297x420.webp 297w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2024\/08\/proforma-invoice-example-150x212.webp 150w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2024\/08\/proforma-invoice-example-300x424.webp 300w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2024\/08\/proforma-invoice-example-696x984.webp 696w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2024\/08\/proforma-invoice-example-1068x1511.webp 1068w\" sizes=\"(max-width: 1414px) 100vw, 1414px\" \/><\/p>\n<h2><b><span id=\"overview\">Proforma Invoice Overview<\/span><\/b><\/h2>\n<p><span data-sheets-root=\"1\">\r\n<style>\r\n    .accordion-wrapper-content{\r\n        background-color: white;\r\n        border: 1px solid #9c171e;\r\n        border-radius: 6px;\r\n        transition: 0.4s ease;\r\n        margin-bottom: 20px;\r\n        overflow: hidden;\r\n        box-shadow: 0px 0px 20px 0px #4034AB38;\r\n    }\r\n    \r\n    .header-content{\r\n        display: flex;\r\n        border: none;\r\n        border-radius: 6px 6px 6px 6px;\r\n        background: #9c171e;\r\n        align-items: center;\r\n        padding: 18px;\r\n        transition: 0.4s;\r\n        cursor: pointer;\r\n        justify-content: space-between;\r\n    }\r\n    \r\n    .header-content p{\r\n        margin-bottom: 0;\r\n    }\r\n    \r\n    .contenttitle {\r\n        color: #FFFFFF;\r\n        width: 100%;\r\n        text-align: left;\r\n        font-size: 16px;\r\n        line-height: 20px;\r\n        transition: 0.4s;\r\n        border: none;\r\n        border-radius: 6px 6px 6px 6px;\r\n        background: unset;\r\n        padding: 0;\r\n        text-transform: uppercase;\r\n        font-weight: 700;\r\n        display: flex;\r\n        justify-content: space-between;\r\n        align-items: center;\r\n        cursor: pointer;\r\n    }\r\n\r\n    .title-with-icon {\r\n        display: flex;\r\n        align-items: center;\r\n        gap: 10px;\r\n    }\r\n    \r\n    .title-with-icon svg {\r\n        flex-shrink: 0;\r\n    }\r\n\r\n    .header-content.active {\r\n      background-color: #9c171e;\r\n    }\r\n    \r\n    button.contenttitle{\r\n        background-color: unset;\r\n    }\r\n    \r\n    button.contenttitle::after{\r\n        content: \"<\";\r\n        width: 2.2rem;\r\n        height: 2.2rem;\r\n        display: flex;\r\n        justify-content: center;\r\n        align-items: center;\r\n        border-radius: 50%;\r\n        color: #FFF;\r\n        flex-shrink: 0;\r\n        transition: 0.4s;\r\n        opacity: 1;\r\n        transform: rotate(90deg);\r\n        font-family: monospace;\r\n        font-size: 1.8rem;\r\n        font-weight: bold;\r\n        line-height: 1;\r\n    }\r\n\r\n    .contentbody {\r\n      padding: 0 18px;\r\n      max-height: none;\r\n      overflow: visible;\r\n      background-color: #ffffff;\r\n      border-radius: 0 0 6px 6px;\r\n      transition: max-height 0.4s ease, opacity 0.4s ease, padding 0.4s ease;\r\n      opacity: 1;\r\n    }\r\n\r\n    .contentbody.closed {\r\n      max-height: 0;\r\n      opacity: 0;\r\n      padding: 0 18px;\r\n    }\r\n\r\n    .contentbody p{\r\n        font-size: 16px;\r\n        font-weight: 400;\r\n        line-height: 28px;\r\n        text-align: left;\r\n        text-transform: none;\r\n        color: #494949;\r\n        padding: 18px 0;\r\n        margin: 0;\r\n    }\r\n    \r\n    .header-content:hover button.contenttitle::after{\r\n        opacity: 1;\r\n    }\r\n\r\n    .header-content.closed button.contenttitle::after{\r\n        transform: rotate(-90deg);\r\n    }\r\n<\/style>\r\n\r\n    <div class=\"accordion-wrapper-content\">\r\n        <div class=\"header-content active\" onclick=\"toggleAccordionItem(this)\">\r\n            <button class=\"contenttitle\" type=\"button\">\r\n                <span class=\"title-with-icon\">\r\n                    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"25\" height=\"25\" viewBox=\"0 0 25 25\" fill=\"#FFFFFF\">\r\n                        <path d=\"M18.6199 3.14893C17.8129 3.0182 17.003 3.36419 16.1982 3.84491C15.3796 4.33399 14.3916 5.07497 13.1853 5.97971L11.7497 7.0564L6 7.0564C3.37665 7.0564 1.25 9.18304 1.25 11.8064C1.25 14.4298 3.37665 16.5564 6 16.5564L11.7503 16.5564L13.1852 17.6326C14.3916 18.5374 15.3795 19.2784 16.1983 19.7674C17.003 20.2482 17.8129 20.5941 18.6199 20.4634C18.9831 20.4046 19.25 20.091 19.25 19.7231L19.25 3.88928C19.25 3.52136 18.9831 3.20776 18.6199 3.14893Z\" fill=\"#FFFFFF\"><\/path>\r\n                        <path d=\"M20.75 15.4814C22.4617 15.1339 23.75 13.6206 23.75 11.8064C23.75 9.99217 22.4617 8.47886 20.75 8.13141L20.75 15.4814Z\" fill=\"#FFFFFF\"><\/path>\r\n                        <path d=\"M5.25 18.0564L9.75 18.0564L9.75 20.3065C9.75 21.5491 8.74264 22.5565 7.5 22.5565C6.25736 22.5565 5.25 21.5491 5.25 20.3065L5.25 18.0564Z\" fill=\"#FFFFFF\"><\/path>\r\n                    <\/svg>\r\n                    <span>For International Shipments<\/span>\r\n                <\/span>\r\n            <\/button>\r\n        <\/div>\r\n        <div class=\"contentbody\">\r\n            <p>A proforma invoice isn&#039;t typically required for international shipments but is often used to provide an estimate of costs for transactions that are not yet finalized. It helps customs determine necessary duties with included details such as estimated price, product description, quantity, payment method, and expected delivery time. When used, it must be followed by a commercial invoice within 120 days.<\/p>\r\n        <\/div>\r\n    <\/div>\r\n\r\n<script>\r\nfunction toggleAccordionItem(element) {\r\n    var panel = element.nextElementSibling;\r\n    var isActive = element.classList.contains('active');\r\n    \r\n    if (isActive) {\r\n        element.classList.remove('active');\r\n        element.classList.add('closed');\r\n        panel.classList.add('closed');\r\n    } else {\r\n        element.classList.remove('closed');\r\n        element.classList.add('active');\r\n        panel.classList.remove('closed');\r\n    }\r\n}\r\n<\/script><\/span><\/p>\n<p><span data-sheets-root=\"1\">\r\n<style>\r\n    .accordion-wrapper-content{\r\n        background-color: white;\r\n        border: 1px solid #9c171e;\r\n        border-radius: 6px;\r\n        transition: 0.4s ease;\r\n        margin-bottom: 20px;\r\n        overflow: hidden;\r\n        box-shadow: 0px 0px 20px 0px #4034AB38;\r\n    }\r\n    \r\n    .header-content{\r\n        display: flex;\r\n        border: none;\r\n        border-radius: 6px 6px 6px 6px;\r\n        background: #9c171e;\r\n        align-items: center;\r\n        padding: 18px;\r\n        transition: 0.4s;\r\n        cursor: pointer;\r\n        justify-content: space-between;\r\n    }\r\n    \r\n    .header-content p{\r\n        margin-bottom: 0;\r\n    }\r\n    \r\n    .contenttitle {\r\n        color: #FFFFFF;\r\n        width: 100%;\r\n        text-align: left;\r\n        font-size: 16px;\r\n        line-height: 20px;\r\n        transition: 0.4s;\r\n        border: none;\r\n        border-radius: 6px 6px 6px 6px;\r\n        background: unset;\r\n        padding: 0;\r\n        text-transform: uppercase;\r\n        font-weight: 700;\r\n        display: flex;\r\n        justify-content: space-between;\r\n        align-items: center;\r\n        cursor: pointer;\r\n    }\r\n\r\n    .title-with-icon {\r\n        display: flex;\r\n        align-items: center;\r\n        gap: 10px;\r\n    }\r\n    \r\n    .title-with-icon svg {\r\n        flex-shrink: 0;\r\n    }\r\n\r\n    .header-content.active {\r\n      background-color: #9c171e;\r\n    }\r\n    \r\n    button.contenttitle{\r\n        background-color: unset;\r\n    }\r\n    \r\n    button.contenttitle::after{\r\n        content: \"<\";\r\n        width: 2.2rem;\r\n        height: 2.2rem;\r\n        display: flex;\r\n        justify-content: center;\r\n        align-items: center;\r\n        border-radius: 50%;\r\n        color: #FFF;\r\n        flex-shrink: 0;\r\n        transition: 0.4s;\r\n        opacity: 1;\r\n        transform: rotate(90deg);\r\n        font-family: monospace;\r\n        font-size: 1.8rem;\r\n        font-weight: bold;\r\n        line-height: 1;\r\n    }\r\n\r\n    .contentbody {\r\n      padding: 0 18px;\r\n      max-height: none;\r\n      overflow: visible;\r\n      background-color: #ffffff;\r\n      border-radius: 0 0 6px 6px;\r\n      transition: max-height 0.4s ease, opacity 0.4s ease, padding 0.4s ease;\r\n      opacity: 1;\r\n    }\r\n\r\n    .contentbody.closed {\r\n      max-height: 0;\r\n      opacity: 0;\r\n      padding: 0 18px;\r\n    }\r\n\r\n    .contentbody p{\r\n        font-size: 16px;\r\n        font-weight: 400;\r\n        line-height: 28px;\r\n        text-align: left;\r\n        text-transform: none;\r\n        color: #494949;\r\n        padding: 18px 0;\r\n        margin: 0;\r\n    }\r\n    \r\n    .header-content:hover button.contenttitle::after{\r\n        opacity: 1;\r\n    }\r\n\r\n    .header-content.closed button.contenttitle::after{\r\n        transform: rotate(-90deg);\r\n    }\r\n<\/style>\r\n\r\n    <div class=\"accordion-wrapper-content\">\r\n        <div class=\"header-content active\" onclick=\"toggleAccordionItem(this)\">\r\n            <button class=\"contenttitle\" type=\"button\">\r\n                <span class=\"title-with-icon\">\r\n                    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"25\" height=\"25\" viewBox=\"0 0 25 25\" fill=\"#FFFFFF\">\r\n                        <path d=\"M18.6199 3.14893C17.8129 3.0182 17.003 3.36419 16.1982 3.84491C15.3796 4.33399 14.3916 5.07497 13.1853 5.97971L11.7497 7.0564L6 7.0564C3.37665 7.0564 1.25 9.18304 1.25 11.8064C1.25 14.4298 3.37665 16.5564 6 16.5564L11.7503 16.5564L13.1852 17.6326C14.3916 18.5374 15.3795 19.2784 16.1983 19.7674C17.003 20.2482 17.8129 20.5941 18.6199 20.4634C18.9831 20.4046 19.25 20.091 19.25 19.7231L19.25 3.88928C19.25 3.52136 18.9831 3.20776 18.6199 3.14893Z\" fill=\"#FFFFFF\"><\/path>\r\n                        <path d=\"M20.75 15.4814C22.4617 15.1339 23.75 13.6206 23.75 11.8064C23.75 9.99217 22.4617 8.47886 20.75 8.13141L20.75 15.4814Z\" fill=\"#FFFFFF\"><\/path>\r\n                        <path d=\"M5.25 18.0564L9.75 18.0564L9.75 20.3065C9.75 21.5491 8.74264 22.5565 7.5 22.5565C6.25736 22.5565 5.25 21.5491 5.25 20.3065L5.25 18.0564Z\" fill=\"#FFFFFF\"><\/path>\r\n                    <\/svg>\r\n                    <span>For other transactions<\/span>\r\n                <\/span>\r\n            <\/button>\r\n        <\/div>\r\n        <div class=\"contentbody\">\r\n            <p>Proforma invoices in non-international contexts should detail all transaction elements to avoid surprises for the buyer. They should clearly indicate that they are not final invoices with terms such as Pro Forma Invoice and Not an Invoice. Key details often include transaction date, product descriptions, quantity, selling price, and applicable fees like handling and shipping.<\/p>\r\n        <\/div>\r\n    <\/div>\r\n\r\n<script>\r\nfunction toggleAccordionItem(element) {\r\n    var panel = element.nextElementSibling;\r\n    var isActive = element.classList.contains('active');\r\n    \r\n    if (isActive) {\r\n        element.classList.remove('active');\r\n        element.classList.add('closed');\r\n        panel.classList.add('closed');\r\n    } else {\r\n        element.classList.remove('closed');\r\n        element.classList.add('active');\r\n        panel.classList.remove('closed');\r\n    }\r\n}\r\n<\/script><\/span><\/p>\n<h2><b><span id=\"msic\">Proforma Invoice Use Case: How MISC Berhad Implements Proforma Invoices<\/span><\/b><\/h2>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-1325 size-full\" src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2024\/08\/misc.webp\" alt=\"misc\" width=\"798\" height=\"449\" srcset=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2024\/08\/misc.webp 798w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2024\/08\/misc-300x169.webp 300w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2024\/08\/misc-768x432.webp 768w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2024\/08\/misc-746x420.webp 746w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2024\/08\/misc-150x84.webp 150w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2024\/08\/misc-696x392.webp 696w\" sizes=\"(max-width: 798px) 100vw, 798px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">MISC Berhad, a leading Malaysian shipping company, integrates proforma invoices into their business operations, significantly streamlining their billing and export processes. The use of proforma invoices by MISC Berhad exemplifies their utility in international trade, providing a clear, preliminary document that outlines the terms of trade agreements before the official transaction occurs.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">When MISC Berhad receives an order for international shipment, they issue a proforma invoice. This document serves as an initial agreement, detailing the shipment&#8217;s contents, <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/erp-tco-total-cost-of-ownership\/\">the total cost<\/a>, and other terms like shipping fees and insurance costs. The proforma invoice facilitates discussions and adjustments between MISC Berhad and their international clients regarding any terms that may require modification before the final deal.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The benefits for MISC Berhad include enhanced clarity and agreement on trade terms before the shipment and official invoicing. This preliminary agreement mitigates risks of disputes over terms after the delivery, ensures compliance with international trading standards, and assists in the smooth clearance of goods through customs by providing detailed information upfront. Additionally, it allows for better financial planning and coordination with clients, enhancing overall business efficiency and customer satisfaction\u200b.<\/span><\/p>\n<h2><strong>Using Invoicing Software for Proforma Invoice Management<\/strong><\/h2>\n<p><strong><a href=\"https:\/\/www.hashmicro.com\/my\/invoicing-software\">Invoicing software simplifies how businesses create<\/a><\/strong>, track, and convert proforma invoices into final invoices. Instead of managing documents manually or duplicating data across spreadsheets, the system keeps everything in one place.<\/p>\n<p>For example, a furniture exporter in Johor sends proforma invoices to buyers in Singapore and Australia. Each country has different currency and shipping terms. With invoicing software, the finance team selects the customer, and the system pulls the correct currency, applies current exchange rates, and formats the invoice accordingly. When the buyer confirms the order, the proforma converts to a commercial invoice with one click, no retyping required.<\/p>\n<p><strong>Features that matter for proforma invoices:<\/strong><\/p>\n<ul>\n<li><strong>Template Customisation:<\/strong> Adjust layout for different customers or transaction types without starting from scratch.<\/li>\n<li><strong>Multi-Currency Support:<\/strong> Automatic rate updates so you do not manually check exchange rates for every foreign invoice.<\/li>\n<li><strong>Document Conversion:<\/strong> Convert proforma to commercial invoice directly, keeping all details intact.<\/li>\n<li><strong>Payment Tracking:<\/strong> See which proforma invoices have been confirmed, invoiced, and paid.<\/li>\n<li><strong>Tax Compliance:<\/strong> Apply SST or other <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/tax-invoice\/\">tax rules automatically<\/a> based on transaction type.<\/li>\n<\/ul>\n<p>Businesses that regularly issue proforma invoices, especially those with international customers or multiple currencies, benefit most from having invoicing in a dedicated system rather than scattered across files and emails.<\/p>\n<h2><b>Conclusion<\/b><\/h2>\n<p>A proforma invoice sets expectations before a transaction is final. It protects both parties by documenting agreed terms, whether for pricing, quantities, shipping, or delivery timelines. For businesses involved in international trade, it also supports customs clearance and buyer financing.<\/p>\n<p>The document itself is simple, but managing multiple proforma invoices across different clients and currencies manually introduces errors. Invoicing software automates this process, tracks revisions, and converts proforma invoices to commercial invoices once deals close.<\/p>\n<p>The right invoicing software handles proforma invoices, commercial invoices, and tax compliance in one system. No more switching between spreadsheets or manually converting documents. Try the <strong><a href=\"https:\/\/www.hashmicro.com\/my\/free-product-demo\/\">free demo<\/a><\/strong> to see how it works with your actual workflow.<\/p>\n<h2><strong>Frequently Asked Questions About ERP Comparison Charts<\/strong><\/h2>\n<ul class=\"bottom_faq\">\n<li>\n<details>\n<summary><strong>What is an ERP comparison chart and how should you use it?<\/strong><\/summary>\n<p>An ERP comparison chart helps you review multiple systems in one structured view. Instead of relying on brochures or sales presentations, you compare features, deployment options, scalability, and integration capability side by side. Use it as a screening tool to eliminate systems that clearly do not match your operational needs before moving into deeper evaluations.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>What should you look at first when reviewing an ERP comparison chart?<\/strong><\/summary>\n<p>Start with how well the system supports your daily operations. If you manage manufacturing, focus on production planning and inventory control. If you operate multiple branches, review consolidation and reporting capabilities. Let your workflow guide the decision, not just feature lists.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Can an ERP comparison chart help you avoid implementation mistakes?<\/strong><\/summary>\n<p>It can, but only if you go beyond the surface. A comparison chart shows whether features exist, but it does not explain how well they work together. After shortlisting options, validate your choice through demonstrations, real use scenarios, and discussions about integration and scalability.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Is cost comparison enough when evaluating ERP systems?<\/strong><\/summary>\n<p>Cost should never be the only factor. Initial pricing does not reflect long term implementation effort, customization needs, training time, or future expansion. A lower subscription fee may look attractive, but it becomes expensive if the system cannot support your growth.<\/p>\n<\/details>\n<\/li>\n<\/ul>\n<p><script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [{\n    \"@type\": \"Question\",\n    \"name\": \"What is an ERP comparison chart and how should you use it?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"An ERP comparison chart helps you review multiple systems in one structured view. Instead of relying on brochures or sales presentations, you compare features, deployment options, scalability, and integration capability side by side. Use it as a screening tool to eliminate systems that clearly do not match your operational needs before moving into deeper evaluations.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"What should you look at first when reviewing an ERP comparison chart?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"Start with how well the system supports your daily operations. If you manage manufacturing, focus on production planning and inventory control. If you operate multiple branches, review consolidation and reporting capabilities. Let your workflow guide the decision, not just feature lists.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"Can an ERP comparison chart help you avoid implementation mistakes?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"It can, but only if you go beyond the surface. A comparison chart shows whether features exist, but it does not explain how well they work together. After shortlisting options, validate your choice through demonstrations, real use scenarios, and discussions about integration and scalability.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"Is cost comparison enough when evaluating ERP systems?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"Cost should never be the only factor. Initial pricing does not reflect long term implementation effort, customization needs, training time, or future expansion. A lower subscription fee may look attractive, but it becomes expensive if the system cannot support your growth.\"\n    }\n  }]\n}\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Your buyer agrees to purchase 500 units at RM 45 each, shipping included. Before you manufacture anything or book the shipment, you need that agreement in writing. Not a final invoice, just a document that confirms what both sides expect. That document is a proforma invoice. It locks in the details, including price, quantity, shipping [&hellip;]<\/p>\n","protected":false},"author":18,"featured_media":1327,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[54,1],"tags":[],"class_list":{"0":"post-1324","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-accounting","8":"category-other"},"acf":[],"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>What is a Proforma Invoice? Definition, Benefits and Example<\/title>\n<meta name=\"description\" content=\"Explore the role of proforma invoice in business transactions with this comprehensive guide, and learn how it differs from other invoices.\" \/>\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\/my\/blog\/proforma-invoice\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"What is a Proforma Invoice? Definition, Benefits and Example\" \/>\n<meta property=\"og:description\" content=\"Explore the role of proforma invoice in business transactions with this comprehensive guide, and learn how it differs from other invoices.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/my\/blog\/proforma-invoice\/\" \/>\n<meta property=\"og:site_name\" content=\"HashMicro Malaysia\" \/>\n<meta property=\"article:published_time\" content=\"2025-02-02T10:23:26+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-10T03:15:45+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2024\/08\/proforma-invoice-hashmicro.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=\"Holy Setiawan\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Holy Setiawan\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/proforma-invoice\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/proforma-invoice\/\"},\"author\":{\"name\":\"Holy Setiawan\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/fd5093e89aa604ac7c4c66aab0609dbc\"},\"headline\":\"What is a Proforma Invoice? Definition, Benefits and Example\",\"datePublished\":\"2025-02-02T10:23:26+00:00\",\"dateModified\":\"2026-03-10T03:15:45+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/proforma-invoice\/\"},\"wordCount\":1582,\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/proforma-invoice\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2024\/08\/proforma-invoice-hashmicro.webp\",\"articleSection\":[\"Accounting\",\"Other\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/proforma-invoice\/\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/proforma-invoice\/\",\"name\":\"What is a Proforma Invoice? Definition, Benefits and Example\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/proforma-invoice\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/proforma-invoice\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2024\/08\/proforma-invoice-hashmicro.webp\",\"datePublished\":\"2025-02-02T10:23:26+00:00\",\"dateModified\":\"2026-03-10T03:15:45+00:00\",\"description\":\"Explore the role of proforma invoice in business transactions with this comprehensive guide, and learn how it differs from other invoices.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/proforma-invoice\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.hashmicro.com\/my\/blog\/proforma-invoice\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/proforma-invoice\/#primaryimage\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2024\/08\/proforma-invoice-hashmicro.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2024\/08\/proforma-invoice-hashmicro.webp\",\"width\":1200,\"height\":675,\"caption\":\"proforma invoice\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/proforma-invoice\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.hashmicro.com\/my\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"What is a Proforma Invoice? Definition, Benefits and Example\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#website\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/\",\"name\":\"HashMicro Malaysia\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.hashmicro.com\/my\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#organization\",\"name\":\"HashMicro Malaysia\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/09\/logo.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/09\/logo.webp\",\"width\":422,\"height\":255,\"caption\":\"HashMicro Malaysia\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/fd5093e89aa604ac7c4c66aab0609dbc\",\"name\":\"Holy Setiawan\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/182fb7c322dd42464c2b0f072e54f260?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/182fb7c322dd42464c2b0f072e54f260?s=96&d=mm&r=g\",\"caption\":\"Holy Setiawan\"},\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/author\/holy-setiawan\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"What is a Proforma Invoice? Definition, Benefits and Example","description":"Explore the role of proforma invoice in business transactions with this comprehensive guide, and learn how it differs from other invoices.","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\/my\/blog\/proforma-invoice\/","og_locale":"en_US","og_type":"article","og_title":"What is a Proforma Invoice? Definition, Benefits and Example","og_description":"Explore the role of proforma invoice in business transactions with this comprehensive guide, and learn how it differs from other invoices.","og_url":"https:\/\/www.hashmicro.com\/my\/blog\/proforma-invoice\/","og_site_name":"HashMicro Malaysia","article_published_time":"2025-02-02T10:23:26+00:00","article_modified_time":"2026-03-10T03:15:45+00:00","og_image":[{"width":1200,"height":675,"url":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2024\/08\/proforma-invoice-hashmicro.webp","type":"image\/webp"}],"author":"Holy Setiawan","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Holy Setiawan","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hashmicro.com\/my\/blog\/proforma-invoice\/#article","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/proforma-invoice\/"},"author":{"name":"Holy Setiawan","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/fd5093e89aa604ac7c4c66aab0609dbc"},"headline":"What is a Proforma Invoice? Definition, Benefits and Example","datePublished":"2025-02-02T10:23:26+00:00","dateModified":"2026-03-10T03:15:45+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/proforma-invoice\/"},"wordCount":1582,"publisher":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/#organization"},"image":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/proforma-invoice\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2024\/08\/proforma-invoice-hashmicro.webp","articleSection":["Accounting","Other"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/my\/blog\/proforma-invoice\/","url":"https:\/\/www.hashmicro.com\/my\/blog\/proforma-invoice\/","name":"What is a Proforma Invoice? Definition, Benefits and Example","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/proforma-invoice\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/proforma-invoice\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2024\/08\/proforma-invoice-hashmicro.webp","datePublished":"2025-02-02T10:23:26+00:00","dateModified":"2026-03-10T03:15:45+00:00","description":"Explore the role of proforma invoice in business transactions with this comprehensive guide, and learn how it differs from other invoices.","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/proforma-invoice\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/my\/blog\/proforma-invoice\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/my\/blog\/proforma-invoice\/#primaryimage","url":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2024\/08\/proforma-invoice-hashmicro.webp","contentUrl":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2024\/08\/proforma-invoice-hashmicro.webp","width":1200,"height":675,"caption":"proforma invoice"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/my\/blog\/proforma-invoice\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/my\/blog\/"},{"@type":"ListItem","position":2,"name":"What is a Proforma Invoice? Definition, Benefits and Example"}]},{"@type":"WebSite","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#website","url":"https:\/\/www.hashmicro.com\/my\/blog\/","name":"HashMicro Malaysia","description":"","publisher":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.hashmicro.com\/my\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#organization","name":"HashMicro Malaysia","url":"https:\/\/www.hashmicro.com\/my\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/09\/logo.webp","contentUrl":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/09\/logo.webp","width":422,"height":255,"caption":"HashMicro Malaysia"},"image":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/fd5093e89aa604ac7c4c66aab0609dbc","name":"Holy Setiawan","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/182fb7c322dd42464c2b0f072e54f260?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/182fb7c322dd42464c2b0f072e54f260?s=96&d=mm&r=g","caption":"Holy Setiawan"},"url":"https:\/\/www.hashmicro.com\/my\/blog\/author\/holy-setiawan\/"}]}},"order_j":"","_links":{"self":[{"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/posts\/1324","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/users\/18"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/comments?post=1324"}],"version-history":[{"count":15,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/posts\/1324\/revisions"}],"predecessor-version":[{"id":17412,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/posts\/1324\/revisions\/17412"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/media\/1327"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/media?parent=1324"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/categories?post=1324"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/tags?post=1324"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}