{"id":3259,"date":"2026-05-06T15:55:11","date_gmt":"2026-05-06T05:55:11","guid":{"rendered":"https:\/\/www.hashmicro.com\/au\/blog\/?p=3259"},"modified":"2026-05-07T19:55:29","modified_gmt":"2026-05-07T09:55:29","slug":"taxable-payments-annual-report","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/au\/blog\/taxable-payments-annual-report\/","title":{"rendered":"Taxable Payments Annual Report for Australian Businesses"},"content":{"rendered":"<p>The Taxable Payments Annual Report (TPAR) is a mandatory <a href=\"https:\/\/www.ato.gov.au\/tax-and-super-professionals\/digital-services\/online-services-for-agents\/online-services-for-agents-user-guide\/lodgments\" target=\"_blank\" rel=\"noopener\">ATO lodgement<\/a> that requires certain Australian businesses to report payments made to contractors, subcontractors, and consultants during the financial year.<\/p>\n<p>TPAR operates on a cash basis and covers industries such as building and construction, cleaning, courier and road freight, IT, and security services, with a 28 August deadline each year for the previous financial year.<\/p>\n<p>For Australian businesses, accurate contractor reporting reduces audit risk, strengthens ATO data-matching outcomes, and protects the integrity of supplier relationships in industries where contracting is the norm.<\/p>\n<style>\r\n\t.takeaways-container {\r\n\t\tmargin: 20px 0;\r\n\t\tfont-family: sans-serif;\r\n\t}\r\n\t.box-content {\r\n\t\tbackground-color: #fffacd;\r\n\t\tbox-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);\r\n\t\tborder-radius: 25px;\r\n\t\tpadding: 25px;\r\n\t}\r\n\t.title {\r\n\t\tmargin-bottom: 20px;\r\n\t}\r\n\t.title p {\r\n\t\tdisplay: inline-block;\r\n\t\tbackground-color: #8A0E19;\r\n\t\tcolor: #ffffff;\r\n\t\tpadding: 8px 15px;\r\n\t\tborder-radius: 8px;\r\n\t\tfont-size: 22px;\r\n\t\tfont-weight: bold;\r\n\t\tmargin: 0;\r\n\t}\r\n\t.item {\r\n\t\tdisplay: flex;\r\n\t\talign-items: flex-start;\r\n\t\tmargin-bottom: 12px;\r\n\t}\r\n\t.item .circle {\r\n\t\twidth: 8px;\r\n\t\theight: 8px;\r\n\t\tbackground-color: #000000;\r\n\t\tborder-radius: 50%;\r\n\t\tmargin-right: 12px;\r\n\t\tflex-shrink: 0;\r\n\t\tmargin-top: 8px;\r\n\t}\r\n\t.item p {\r\n\t\tmargin: 0;\r\n\t\tfont-size: 16px;\r\n\t\tline-height: 1.6;\r\n\t}\r\n\t.item p a {\r\n\t\tcolor: #8A0E19;\r\n\t\tfont-weight: normal;\r\n\t\ttext-decoration: none;\r\n\t}\r\n\t.item p a:hover {\r\n\t\ttext-decoration: underline;\r\n\t}\r\n\t.button-wrapper {\r\n\t\tmargin-top: 25px;\r\n\t}\r\n\t.submit-button {\r\n\t\tbackground-color: #8a0e19;\r\n\t\tcolor: #fff !important;\r\n\t\ttransition: all .3s ease;\r\n\t\tpadding: 12px 28px;\r\n\t\tdisplay: inline-block;\r\n\t\tborder-radius: 12px;\r\n\t\tfont-size: 16px;\r\n\t\tfont-weight: bold;\r\n\t\ttext-decoration: none;\r\n\t}\r\n\t.submit-button:hover {\r\n\t\tbackground-color: #991b26;\r\n\t}\r\n\t@media (max-width: 767px) {\r\n\t\t.takeaways-container {\r\n\t\t\theight: auto;\r\n\t\t\tpadding: 0;\r\n\t\t}\r\n\t\t.box-content {\r\n\t\t\tpadding: 24px;\r\n\t\t}\r\n\t\t.content,\r\n\t\t.main-content,\r\n\t\t.list-item {\r\n\t\t\twidth: 100%;\r\n\t\t}\r\n\t}\r\n<\/style>\r\n\r\n<div class=\"takeaways-container\">\r\n\t<div class=\"box-content\">\r\n\t\t<div class=\"content\">\r\n\t\t\t<div class=\"title\">\r\n\t\t\t\t<p>Key Takeaways<\/p>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"main-content\">\r\n\t\t\t\t<div class=\"list-item\">\r\n\t\t\t\t\t<div class=\"item\">    <div class=\"circle\"><\/div>    <p><a href=\"#what-is-the-taxable-payments-annual-report-tpar\">TPAR is<\/a> a mandatory ATO lodgement requiring certain Australian businesses to report payments made to contractors and consultants during each financial year.<\/p><\/div><div class=\"item\">    <div class=\"circle\"><\/div>    <p><a href=\"#why-the-taxable-payments-annual-report-matters-for-australian-businesses\">Key components<\/a> include contractor ABN, legal name, address, gross payment, GST, any no-ABN tax withheld, and records retained for five years.<\/p><\/div><div class=\"item\">    <div class=\"circle\"><\/div>    <p><a href=\"#who-the-taxable-payments-annual-report-covers\">Lodging a TPAR<\/a> means collecting validated contractor data, reconciling payments, and submitting via ATO Online Services, a tax agent, or accounting software by 28 August.<\/p><\/div><div class=\"item\">    <div class=\"circle\"><\/div>    <p><a href=\"#key-components-of-a-taxable-payments-annual-report\">Best practices<\/a> include accurate contractor records, mid-year data reviews, automation through ERP software, and regular staff training on ATO updates.<\/p><\/div>\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t<\/div>\r\n<\/div>\n\r\n    <div class=\"adjustable-banner-wrap\">\r\n        <a href=\"https:\/\/www.hashmicro.com\/au\/accounting?medium=moneysite-banner\" target=\"_blank\">\r\n            <img decoding=\"async\" loading=\"lazy\"\r\n                 src=\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/03\/accounting_desktop_3.webp\"\r\n                 data-desktop-src=\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/03\/accounting_desktop_3.webp\"\r\n                 data-mobile-src=\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/03\/accounting_mobile_3.webp\"\r\n                 alt=\"Accounting3\"\r\n                 class=\"responsive-image-banner\">\r\n\r\n            \r\n            <div class=\"adjustable-banner-overlay\" style=\"width: 50%\">\r\n                <p class=\"adjustable-banner-text\">Need an expert to make &lt;span class='adjustable-highlight'&gt;faster financial decisions?&lt;\/span&gt;<\/p>\r\n                <div class=\"adjustable-banner-btn\">Schedule a Consultation<\/div>\r\n            <\/div>\r\n\r\n        <\/a>\r\n    <\/div>\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<!-- <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\">Table of Content<\/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<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\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<!-- 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\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\r\n\r\n\r\n\t\r\n\/\/ \tmake the heading at the center of the viewport\r\n\/\/ \tdocument.addEventListener('DOMContentLoaded', function() {\r\n\/\/     \/\/ Add click event listener to all links in the TOC list\r\n\/\/     document.querySelectorAll('#toc-list a').forEach(anchor => {\r\n\/\/         anchor.addEventListener('click', function (e) {\r\n\/\/             e.preventDefault(); \/\/ Prevent the default behavior of jumping to the anchor\r\n\/\/ \/\/ \t\t\tconsole.log(\"prevent default\");\r\n\/\/             const targetId = this.getAttribute('href').substring(1); \/\/ Get the ID of the target element\r\n\/\/             const targetElement = document.getElementById(targetId); \/\/ Get the target element\r\n\r\n\/\/             if (targetElement) {\r\n\/\/                 const headerHeight = document.querySelector('#toc .header').offsetHeight; \/\/ Get the height of the fixed header\r\n\/\/                 const windowHeight = window.innerHeight; \/\/ Get the height of the viewport\r\n\/\/                 const targetOffset = targetElement.offsetTop; \/\/ Get the top offset of the target element\r\n\/\/                 const scrollTo = targetOffset + (windowHeight \/ 2) + (headerHeight); \/\/ Calculate the scroll position to center the target element\r\n\r\n\/\/                 \/\/ Scroll to the calculated position smoothly\r\n\/\/                 window.scrollTo({\r\n\/\/                     top: scrollTo,\r\n\/\/                     behavior: 'smooth'\r\n\/\/                 });\r\n\/\/             }\r\n\/\/         });\r\n\/\/     });\r\n\/\/ });\r\n<\/script>\r\n\r\n<!-- START script lama -->\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<\/script> -->\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\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']; \/\/ 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\nToC List for desktop side bar, diganti jadi inject by php, di code snippet \"Sidebar Accordion\"\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;} \/\/ Kalau Key Takeaways, jangan dimasukin\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\tDapatkan elemen ul dengan id 'list_toc_float'\r\nconst ulFloat = document.getElementById('list_toc');\r\nconst ulJourney = document.getElementById('list_journey');\r\n\r\nDapatkan 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\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\n<h2><strong>What is the Taxable Payments Annual Report (TPAR)?<\/strong><\/h2>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-3297\" src=\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/moneymoney-8.webp\" alt=\"what-is-taxable-payments-annual-report-(TAPR)?\" width=\"800\" height=\"400\" srcset=\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/moneymoney-8.webp 800w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/moneymoney-8-300x150.webp 300w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/moneymoney-8-768x384.webp 768w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/moneymoney-8-150x75.webp 150w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/moneymoney-8-696x348.webp 696w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/p>\n<p>The Taxable Payments Annual Report is a compliance document required by the ATO, requiring specific businesses and government entities to report total payments made to independent contractors for services each financial year.<\/p>\n<p>It was introduced for the building and construction industry, and has since expanded to cover cleaning, courier and road freight, IT, and security services, reflecting industries with higher risk of undeclared income.<\/p>\n<p>At its core, TPAR operates as a data-collection tool for the ATO, allowing contractor income reported by businesses to be cross-matched against individual tax returns through automated data-matching systems.<\/p>\n<p>If a contractor under-reports income, the discrepancy triggers an ATO review, so TPAR effectively creates a transparent trail of money flowing from businesses into the independent workforce across industries.<\/p>\n<p>The reporting period mirrors the Australian financial year from 1 July to 30 June, and the deadline for lodgement is 28 August each year, with no extension available for ordinary circumstances.<\/p>\n<p>TPAR is strictly cash-based, meaning businesses only report payments actually made to the contractor during the year, with accrued expenses and unpaid invoices excluded until the payment clears.<\/p>\n<p>A contractor for TPAR purposes can be a sole trader, company, partnership, or trust, distinguished from an employee by their engagement to provide services rather than being paid under the standard PAYG system.<\/p>\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\/blog\/wp-content\/uploads\/2025\/12\/quote.webp\" alt=\"Quote Icon\" class=\"quote-icon\">\r\n        <div>\r\n            A TPAR is not paperwork; it is the digital trail of contractor payments that the ATO uses to verify how money moves between businesses and the independent workforce each financial year.        <\/div>\r\n    <\/div>\r\n    <p class=\"quote-author-wrapper\">\r\n        <em>Luke Sheridan, Head of Finance Dept.<\/em>\r\n    <\/p>\r\n<\/div>\n<h2 id=\"why-the-taxable-payments-annual-report-matters-for-australian-businesses\"><strong>Why the Taxable Payments Annual Report Matters for Australian Businesses<\/strong><\/h2>\n<p>Compliance with TPAR is not just administrative; it sits at the core of financial governance, protecting businesses from legal, financial, and reputational consequences under the ATO&#8217;s enforcement framework.<\/p>\n<h3>1. Legal obligation under the Taxation Administration Act<\/h3>\n<p>TPAR is a strict legal requirement under the <a href=\"https:\/\/www.austlii.edu.au\/cgi-bin\/viewdb\/au\/legis\/cth\/consol_act\/taa1953269\/\" target=\"_blank\" rel=\"noopener\">Taxation Administration Act 1953<\/a>, which empowers the Commissioner of Taxation to compel specific entities to provide information about transactions that affect other taxpayers.<\/p>\n<p>Once a business meets the ATO&#8217;s criteria, usually based on industry and percentage of revenue from specific services, the duty to lodge becomes absolute, and internal discretion or oversight cannot override it.<\/p>\n<p>The obligation also extends to accuracy, because directors and financial officers are legally responsible for ensuring the data submitted reflects the company&#8217;s real payments, not a partial or convenient record.<\/p>\n<p>Submitting deliberately omitted or falsified information is a serious breach and interacts with directors&#8217; duties under the <a href=\"https:\/\/www.legislation.gov.au\/C2004A00818\/2019-07-01\/text\" target=\"_blank\" rel=\"noopener\">Corporations Act 2001<\/a>, which holds them to standards of care, diligence, and financial oversight.<\/p>\n<h3>2. Improves tax transparency and deters contractor tax evasion<\/h3>\n<p>TPAR plays a pivotal role in maintaining the integrity of the Australian tax system, directly targeting the shadow economy that the ATO has identified as a major risk to national revenue.<\/p>\n<p>Payment data reported by businesses, alongside contractor ABNs, creates a digital footprint that feeds into ATO data-matching programs, revealing contractors who under-report earnings or operate entirely off the books.<\/p>\n<p>The deterrent effect runs deep, because when contractors know their payments are disclosed to the ATO by every business engaging them, the incentive to evade tax drops sharply across the independent workforce.<\/p>\n<p>The result is a more level playing field for businesses that meet their obligations, since competitors relying on cash-in-hand payments to undercut prices are now more visible to ATO enforcement action.<\/p>\n<h3>3. Lower risk of ATO audits, penalties, and failure-to-lodge fines<\/h3>\n<p>From a risk perspective, timely and accurate TPAR lodgement is a critical defence, because missing the 28 August deadline is one of the most common triggers for ATO investigation across contractor-heavy industries.<\/p>\n<p>Financial penalties accrue under the penalty unit system, with fines that grow for every 28-day period a report is late, and the base penalty multiplies significantly for medium and large entities.<\/p>\n<p>Intentional disregard or repeated failures trigger the most severe sanctions, which can disrupt cash flow, consume internal resources, and cascade into wider audits of payroll, GST, and income tax obligations.<\/p>\n<p>Beyond the fines, an ATO audit itself is costly, because gathering historical data, reconciling accounts, and responding to queries diverts finance staff from daily operations and often incurs external legal fees.<\/p>\n<p>A clean TPAR record signals strong internal controls, improves ATO relationships, and frees leadership from regulatory firefighting, turning compliance into a baseline condition for healthier business operations.<\/p>\n<h2 id=\"who-the-taxable-payments-annual-report-covers\"><strong>Who the Taxable Payments Annual Report Covers<\/strong><\/h2>\n<p>TPAR does not operate in isolation among Australian tax obligations. Understanding where it overlaps with BAS, PAYG withholding, and STP prevents double-reporting, gaps, and the reconciliation issues that often surface close to the 28 August deadline.<\/p>\n<p>If a business derives 10 per cent or more of its total GST turnover from providing reportable services, it must lodge TPAR for payments made to contractors engaged in those services, regardless of its main activity.<\/p>\n<h3>1. Building and construction services<\/h3>\n<p>Building and construction was the first sector subject to TPAR, reflecting its historical vulnerability to shadow economy activity and the ATO&#8217;s priority in monitoring cash flow across the supply chain.<\/p>\n<p>The definition is broad, covering architectural and engineering work, project management, physical construction of residential, commercial, and industrial buildings, plus civil works such as roads, bridges, and tunnels.<\/p>\n<p>Specialised trades fall squarely inside the scope, including plumbing, electrical, bricklaying, carpentry, roofing, painting, excavation, and scaffolding, so the entire supply chain is captured within a single reporting framework.<\/p>\n<p>Businesses that are not primarily builders but still provide construction services, such as property developers managing their own projects, must lodge TPAR once they hit the 10 per cent revenue threshold.<\/p>\n<h3>2. Cleaning services<\/h3>\n<p>Cleaning services were added to TPAR following the construction rollout, reflecting a sector with transient workers, many small contracting businesses, and a high volume of cash transactions that drew ATO attention.<\/p>\n<p>The definition is comprehensive, covering commercial and residential interior cleaning, exterior services such as high-pressure washing and window cleaning, plus carpet, upholstery, pool, and industrial equipment cleaning.<\/p>\n<p>If a business provides cleaning services and subcontracts any portion of the work, the payments made to those subcontractors must be tracked and reported under the TPAR framework for that financial year.<\/p>\n<h3>3. Courier and road freight services<\/h3>\n<p>Logistics and transport, specifically courier and road freight, carry elevated risk of undeclared income, and the ATO brought these sectors into TPAR to track payments made to owner-drivers and haulage contractors.<\/p>\n<p>Courier services cover the delivery of parcels, documents, and packages, while road freight covers the transport of goods by truck, including line-haul, heavy haulage, and refrigerated transport of larger volumes.<\/p>\n<p>Passenger transport services such as taxis, rideshare, and charter buses are excluded from TPAR, because the regime targets the movement of goods rather than the movement of people across the transport sector.<\/p>\n<h3>4. Information technology (IT) services<\/h3>\n<p>IT services sit within TPAR because the sector depends heavily on independent contractors, freelancers, and consultants, and the ATO wanted visibility across high-value, often intangible technical work.<\/p>\n<p>The category covers software development, coding, and application design, plus infrastructure services like network engineering, server installation, cloud architecture, database management, and cybersecurity consulting.<\/p>\n<p>The rule captures the labour component of IT work, not the sale of goods, so buying off-the-shelf software or hardware does not trigger TPAR, but hiring a contractor to install or customise it does.<\/p>\n<h3>5. Security, investigation, and surveillance services<\/h3>\n<p>Security and investigation entered TPAR because the sector frequently uses subcontractors for event security, asset protection, and specialised investigative tasks, making it necessary to monitor payment flows in detail.<\/p>\n<p>Security services cover static guards, crowd control, mobile patrols, plus installation and maintenance of alarm systems, CCTV, and access control where the work involves physical labour and technical expertise.<\/p>\n<p>Investigation covers private investigators, background checks, fraud investigations, corporate surveillance, and missing persons inquiries, while surveillance tracks people, property, or electronic systems for security purposes.<\/p>\n<h3>6. Government entities making reportable payments<\/h3>\n<p>TPAR obligations extend well beyond the private sector, because federal, state, territory, and local government bodies must also lead by example in tax transparency by reporting contractor and grant payments.<\/p>\n<p>Government reporting covers a broader range of services than the private sector list, including IT consulting, legal services, management consulting, and facility maintenance delivered directly to government agencies.<\/p>\n<p>Grants paid to individuals and external bodies also fall inside the framework, giving the ATO visibility over a significant income stream that would otherwise sit outside standard taxpayer reporting pipelines.<\/p>\n<h2 id=\"key-components-of-a-taxable-payments-annual-report\"><strong>Key Components of a Taxable Payments Annual Report<\/strong><\/h2>\n<p>Compiling a TPAR requires precise data from financial records, and the ATO mandates specific fields to be populated accurately for every contractor engaged, since missing or incorrect data can trigger rejections or audits.<\/p>\n<h3>1. Contractor ABN, name, and business address<\/h3>\n<p>The Australian Business Number is the most critical identifying field, because the ATO uses it to match payment data to the correct taxpayer, and an incorrect ABN breaks the data-matching chain immediately.<\/p>\n<p>Businesses must also capture the contractor&#8217;s full legal name and registered business address, which together confirm identity and support reconciliation when the ATO queries specific records during review.<\/p>\n<h3>2. Total gross amount paid during the financial year<\/h3>\n<p>The report captures the total gross amount paid to each contractor between 1 July and 30 June, summed across every invoice settled during that period on a cash basis rather than an accruals basis.<\/p>\n<p>Gross means the full amount before deductions, so withholding tax, retention amounts, and offset credits are not removed from the reported figure, giving the ATO a complete view of the contractor&#8217;s gross income.<\/p>\n<h3>3. GST included in payments made<\/h3>\n<p>GST is reported as a separate line within the TPAR, because the ATO tracks it alongside the gross payment to reconcile against the contractor&#8217;s BAS lodgements and registered GST turnover for the year.<\/p>\n<p>If a contractor is not registered for GST, the payment is reported without a GST component, and businesses must verify GST registration status to ensure the reported figure matches the contractor&#8217;s legal position.<\/p>\n<h3>4. Total tax withheld where no ABN was quoted<\/h3>\n<p>When a contractor fails to quote an ABN, businesses must withhold 47 per cent of the payment under the No ABN Withholding rules, and that amount must be reported separately within the TPAR submission.<\/p>\n<p>Reporting no-ABN withholding protects the business from shared liability, because the ATO then holds the withheld amount against the contractor and chases them directly for any unpaid income tax obligations.<\/p>\n<h3>5. Reportable services versus exempt materials<\/h3>\n<p>Not every payment to a contractor is reportable, because payments purely for materials without a labour component are exempt, and mixed invoices require careful separation of labour and material values.<\/p>\n<p>If the labour is the primary service and materials are incidental, the full amount is reported, but if materials dominate and labour is minor, the rules may exempt the entire invoice from the reporting scope.<\/p>\n<h3>6. Record-keeping and source document requirements<\/h3>\n<p>Businesses must retain source documents including contractor invoices, contracts, purchase orders, and remittance advices for at least five years, since the ATO may request evidence to verify the submitted TPAR data.<\/p>\n<p>Clear record-keeping also supports internal audits, accurate GST reporting, and consistent contractor management, making compliance systems a long-term asset rather than a reactive compliance burden.<\/p>\n<h2><strong>How TPAR Interacts with Other ATO Obligations<\/strong><\/h2>\n<p>TPAR does not operate in isolation. Understanding where it overlaps with BAS, PAYG withholding, and STP prevents double-reporting, gaps, and the reconciliation issues that often surface close to the 28 August deadline.<\/p>\n<h3>1. TPAR versus the Business Activity Statement (BAS)<\/h3>\n<p>The BAS is a periodic statement covering GST collected and paid, PAYG instalments, and fuel tax credits, while TPAR is an annual lodgement capturing payments made to specific contractors throughout the year.<\/p>\n<p>These reports share source data around GST paid to suppliers, so accounting software should pull contractor expenses into both the BAS and TPAR from the same underlying ledger to keep figures aligned.<\/p>\n<p>When GST on contractor payments appears in BAS as input tax credits and in TPAR as payment data, both figures should reconcile, and discrepancies often indicate miscoded vendor records or incorrect GST flags.<\/p>\n<h3>2. TPAR and PAYG withholding for contractors without an ABN<\/h3>\n<p>PAYG withholding applies when a contractor fails to quote an ABN, requiring the business to withhold 47 per cent of the payment and remit the amount to the ATO through the regular BAS process.<\/p>\n<p>TPAR then reports the total paid plus the tax withheld, so the same transaction touches both systems, and consistency between the PAYG amount on the BAS and the withheld figure on the TPAR is essential.<\/p>\n<p>Reconciling the two is critical because the ATO cross-matches them to confirm the business has actually paid the withheld amount, not simply declared it, which prevents underpayment of contractor tax obligations.<\/p>\n<h3>3. TPAR alongside Single Touch Payroll (STP) reporting<\/h3>\n<p>STP applies to employees, reporting pay, tax, and super to the ATO in real time at each pay event, while TPAR applies to contractors, captured annually rather than at the point of each payment.<\/p>\n<p>The two systems do not overlap, because an individual is either an employee reported through STP or a contractor reported through TPAR, and incorrect classification between the two is a major compliance risk.<\/p>\n<p>Misclassifying a worker as a contractor when they function as an employee exposes the business to sham contracting claims, unpaid superannuation, and PAYG withholding liabilities on top of the TPAR reporting issue.<\/p>\n<h2><strong>How to Lodge a Taxable Payments Annual Report<\/strong><\/h2>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-3281\" src=\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/unnamed-23-scaled.webp\" alt=\"how-to-lodge-a-taxable-payments-annual-reporting\" width=\"2560\" height=\"1429\" srcset=\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/unnamed-23-scaled.webp 2560w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/unnamed-23-300x167.webp 300w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/unnamed-23-1024x572.webp 1024w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/unnamed-23-768x429.webp 768w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/unnamed-23-1536x857.webp 1536w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/unnamed-23-2048x1143.webp 2048w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/unnamed-23-753x420.webp 753w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/unnamed-23-150x84.webp 150w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/unnamed-23-696x388.webp 696w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/unnamed-23-1068x596.webp 1068w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/unnamed-23-1920x1072.webp 1920w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" \/><\/p>\n<p>Lodging TPAR successfully requires a structured workflow that starts months before 28 August, because last-minute data collection usually exposes gaps, incorrect ABNs, and missing records that cannot be resolved quickly.<\/p>\n<h3>1. Identify whether your business is required to lodge TPAR<\/h3>\n<p>Start by confirming whether your business operates in one of the reportable industries, such as building and construction, cleaning, courier and road freight, IT, or security and investigation services.<\/p>\n<p>If your business is mixed, calculate the percentage of GST turnover derived from reportable services, because the 10 per cent threshold rule applies regardless of what your main business activity might be.<\/p>\n<h3>2. Collect and validate contractor details throughout the year<\/h3>\n<p>Set up contractor onboarding processes that capture legal name, business address, and ABN at the start of every engagement, not at year-end, to avoid chasing details once the reporting window closes.<\/p>\n<p>Validate every ABN against the Australian Business Register when it is first provided, then re-check during mid-year reviews, because ABNs can be cancelled or reassigned, creating data-matching failures at lodgement.<\/p>\n<h3>3. Reconcile total payments made to each contractor<\/h3>\n<p>Aggregate all payments made to each contractor between 1 July and 30 June, matching invoices to bank transfers, and ensuring the totals reflect cash actually paid rather than invoices still outstanding.<\/p>\n<p>Cross-check the figures against your general ledger and accounts payable reports, because timing differences, partial payments, and refunds can produce mismatches if not reconciled before TPAR is compiled.<\/p>\n<h3>4. Lodge via ATO Online Services, the business portal, or accounting software<\/h3>\n<p>TPAR can be lodged through ATO Online Services for business, via a registered tax agent, or directly from accounting software that supports TPAR generation in the ATO-approved file format.<\/p>\n<p>Software-based lodgement is the fastest and lowest-risk option, because the file is validated automatically against the ATO schema, reducing the likelihood of submission errors that require manual correction afterwards.<\/p>\n<h3>5. Confirm lodgement and retain records for five years<\/h3>\n<p>After lodgement, download the ATO confirmation receipt immediately and store it alongside the source data used to generate the report, because proof of lodgement may be requested during later audits.<\/p>\n<p>Retain all supporting documents for at least five years, including contractor invoices, contracts, ABN validations, and payment records, since the ATO can review submissions well after the financial year has closed.<\/p>\n<h2><strong>How Australian Businesses Across Industries Apply TPAR<\/strong><\/h2>\n<p>The mechanics of TPAR compliance vary across industries, because different sectors face different volumes of contractor transactions, invoice structures, and workforce patterns that shape how reporting is handled day to day.<\/p>\n<h3>1. Building and construction<\/h3>\n<p>Building and construction firms deal with multi-tiered supply chains, where construction accounting records must aggregate payments across structural engineers, electricians, plumbers, carpenters, and specialised trades on a single project.<\/p>\n<p>Mixed invoices containing labour and materials are common, so strong separation in accounts payable is critical, and builders often rely on payment records software for construction business with dedicated TPAR-tracking fields built in.<\/p>\n<h3>2. Cleaning and courier services<\/h3>\n<p>Cleaning and courier businesses typically handle high volumes of low-value transactions, with many subcontractors receiving weekly payments for recurring services across multiple client sites or delivery routes.<\/p>\n<p>Automated contractor payment tracking is essential, because manual aggregation at year-end becomes impossible when hundreds or thousands of individual transactions must be consolidated into a single reportable figure.<\/p>\n<h3>3. IT and security services<\/h3>\n<p>IT and security businesses work with higher-value, longer-engagement contractors such as software developers, cybersecurity consultants, and licensed security guards, often blending remote, on-site, and project-based delivery.<\/p>\n<p>Distinguishing onshore contractors from overseas freelancers matters, because TPAR applies only to domestic contractors with Australian Business Numbers, so international engagements must be classified and excluded.<\/p>\n<h3>4. Government entities and road freight<\/h3>\n<p>Government entities report a wider range of payments than the private sector, including management consulting, legal services, and community grants, which creates complex data aggregation across multiple departments and agencies.<\/p>\n<p>Road freight operators manage owner-driver networks that can span state borders, so contractor databases must account for varied payment structures, fuel allowances, and freight schedules within a single reporting cycle.<\/p>\n<h2><strong>Common TPAR Compliance Mistakes to Avoid<\/strong><\/h2>\n<p>Even with established processes, businesses regularly stumble over specific TPAR complexities, and recognising the most common mistakes upfront is the first step toward comprehensive risk mitigation during each reporting cycle.<\/p>\n<p>Accepting a contractor&#8217;s ABN at face value is one of the most common errors, because numbers can be transcribed incorrectly, registrations can lapse, or the ABN may belong to a different legal entity entirely.<\/p>\n<p>Mishandling mixed invoices is another frequent issue, because labour and materials require separate treatment, and treating the entire amount as reportable when materials dominate can inflate the figure submitted to the ATO.<\/p>\n<p>Overlooking the 10 per cent threshold rule causes businesses to assume they are exempt because their main industry is not reportable, when in fact any sideline activity that crosses the threshold triggers an obligation.<\/p>\n<p>Sham contracting risks also surface during TPAR preparation, because reviewing contractor relationships often reveals arrangements that resemble employment in practice, exposing the business to super and PAYG audits.<\/p>\n<h2><strong>Free Taxable Payments Annual Report (TPAR) Template for Australian Businesses<\/strong><\/h2>\n<p>A structured TPAR tracking template helps Australian businesses capture contractor data consistently throughout the year, preventing the last-minute rush that usually produces incomplete or inaccurate reports.<\/p>\n<p>The template below works as a standalone spreadsheet or as a reference for configuring accounting software, and it captures every field the ATO requires for an accepted TPAR submission each financial year.<\/p>\n<h3>1. What&#8217;s included in the TPAR tracking template<\/h3>\n<p>The template covers contractor identification fields including legal name, ABN, and business address, alongside payment fields for gross amount, GST, tax withheld, and the period over which payments were made.<\/p>\n<p>It also includes validation prompts for ABN lookups, GST registration checks, and flags for mixed invoices, giving finance teams a single workspace to spot discrepancies before they reach the final report.<\/p>\n<h3>2. How to use the template throughout the financial year<\/h3>\n<p>Enter contractor details during onboarding rather than at year-end, so every engagement starts with a complete record, and update the payment rows after each invoice is settled to keep the ledger current.<\/p>\n<p>Review the template monthly or quarterly to catch missing ABNs, unflagged payments, or inconsistent entries, which avoids the peak-season bottleneck that hits most finance teams in July and August.<\/p>\n<h3>3. Download the free TPAR template<\/h3>\n<p>The template is available as an editable spreadsheet designed for Australian businesses, with pre-built columns for every ATO field and built-in formulas that calculate gross totals and GST per contractor.<\/p>\n<p>Using a consistent template across multiple sites or departments also supports centralised reporting, because finance managers can merge records quickly when consolidating data ahead of the 28 August deadline.<\/p>\n<!-- shortcode CTA download new -->\r\n\r\n<div class=\"download-wrapper new\">\r\n\t<p class=\"download-desc\">TPAR Download<\/p>\r\n\t\r\n\t<div class=\"download-top\" style=\"position: relative;\">\r\n\t\t<div class=\"opacity-ef\"><\/div>\r\n\t\t<img decoding=\"async\" class=\"download-img\" src=\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/image_2026-04-24_100337060.webp\">\r\n\t<\/div>\r\n\t\r\n\t<div class=\"button-wrapper\">\r\n\t\t\t\t<button \r\n\t\t\tclass=\"downloadBtn\" \r\n\t\t\tpopup-content=\"template\" \r\n\t\t\tdata-link=\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/TPAR_Tracking_Template.xlsx\"\r\n\t\t\tdata-format=\"excel\">\r\n\t\t\t<div class=\"icon-unduh\"><\/div>\r\n\t\t\t<p class=\"download-text\" style=\"\">Download Now<\/p>\r\n\t\t<\/button>\r\n\t\t\r\n  \t\t\r\n  \t\t\t<\/div>\r\n\t\r\n\t\t<div class=\"download-bottom\" style=\"position: relative;\">\r\n\t\t<div class=\"opacity-ef\"><\/div>\r\n\t\t<img decoding=\"async\" class=\"download-img\" src=\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/image_2026-04-24_100337060.webp\" alt=\"ALT IMAGE showpreview=true\">\r\n\t<\/div>\r\n\t<\/div>\r\n\r\n\r\n<style>\r\n\t.button-wrapper{\r\n\t\tdisplay: flex;\r\n\t\talign-items: center;\r\n\t\tjustify-content: center;\r\n\t}\r\n\t\r\n\t.new p.download-text{\r\n\t\tmargin-bottom: 0;\r\n\t\tcolor: #9C171E;\r\n\t}\r\n\t\r\n\t.color-me-white{\r\n\t\tcolor: #FFF !important;\r\n\t}\r\n\t.download-bottom, .download-top{\r\n\t\tmargin-top: 32px;\r\n\t\theight: 250px;\r\n\t\toverflow: hidden;\r\n\t\tborder-radius: 8px 8px 0 0;\r\n\t}\r\n\t\r\n\t.download-top{\r\n\t\tdisplay: none;\r\n\t}\r\n\t\r\n\t.download-img{\r\n\t\twidth: 100%;\r\n\/* \t\tfilter: blur(1px); *\/\r\n\t}\r\n\r\n\t.opacity-ef{\r\n\t\tposition: absolute;\r\n\t\tdisplay: block;\r\n\t\ttop: 0;\r\n\t\tleft: 0;\r\n\t\tbottom: 0;\r\n\t\tbackground-image: linear-gradient(180deg, rgba(255, 255, 255, 0.00) 35%, #FFF 88%);\r\n\t\tbackdrop-filter: blur(1px);\r\n\t\tz-index: 1;\r\n\t\twidth: 100%;\r\n\t}\r\n\t\r\n\t.download-wrapper.new{\r\n\t\tbackground: unset;\r\n\t\tpadding: 40px 16px;\r\n\t\tborder-radius: unset;\r\n\t\tborder-bottom: 2px solid #D9D9D9;\r\n\t\tborder-top: 2px solid #D9D9D9;\r\n\t}\r\n\t\r\n\t.icon-unduh{\r\n\t\tbackground-image: url('https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/11\/icon-unduh.webp');\r\n\t\tbackground-size: cover;\r\n\t\tbackground-repeat: no-repeat;\r\n\t\tbackground-position: center;\r\n\t}\r\n\t\r\n\t.new .downloadBtn{\r\n\t\twidth: 200px;\r\n\t\tpadding: 10px 14px;\r\n\t\tmargin-right: 16px;\r\n\t\tcolor: #FFF !important;\r\n\t\tbox-shadow: 5px 6px 16px 0px rgba(0, 0, 0, 0.25);\r\n\t\tjustify-content: center;\r\n\t}\r\n\t\r\n\t.new .downloadBtn:last-child{\r\n\t\tmargin-right: 0;\r\n\t}\r\n\t\r\n\t.new .download-desc{\r\n\t\tcolor: #282828 !important;\r\n\t\ttext-align: center;\r\n\t\tfont-size: 27px !important;\r\n\t\tfont-style: normal;\r\n\t\tfont-weight: 700;\r\n\t\tline-height: 28px;\r\n\t\tmargin-bottom: 24px !important;\r\n\t}\r\n\t\r\n\t.btn-pdf{\r\n\t\tborder: 2px solid #D01517;\r\n\t\tbackground: #D01517;\r\n\t}\r\n\t\r\n\t.btn-word{\r\n\t\tborder: 2px solid #25589A;\r\n\t\tbackground: #25589A;\r\n\t}\r\n\t\r\n\t.btn-excel{\r\n\t\tborder: 2px solid #20744A;\r\n\t\tbackground: #20744A;\r\n\t}\r\n\t\r\n\t.d-none{\r\n\t\tdisplay: none;\r\n\t}\r\n\t\r\n\t@media (min-width:992px) and (max-width:1399px){\r\n\t\tp.download-text{\r\n\t\t\tfont-size: 14px;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@media (max-width:991px){\r\n\t\t.button-wrapper{\r\n\t\t\tdisplay: block;\r\n\t\t}\r\n\t\t\r\n\t\t.new .downloadBtn{\r\n\t\t\twidth: 100%;\r\n\t\t\tmargin-left: 0;\r\n\t\t\tmargin-right: 0;\r\n\t\t\tmargin-bottom: 16px;\r\n\t\t}\r\n\t\t\r\n\t\t.download-bottom{\r\n\t\t\tdisplay: none;\r\n\t\t}\r\n\t\t\r\n\t\t.download-top{\r\n\t\t\tdisplay: block;\r\n\t\t\tmargin-bottom: 16px;\r\n\t\t}\r\n\t\t\r\n\t\t.new .download-desc{\r\n\t\t\tmargin-bottom: 16px !important;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@media (max-width:576px){\r\n\t\t.download-top{\r\n\t\t\theight: 120px;\r\n\t\t}\r\n\t}\r\n<\/style>\r\n\r\n<script>\r\n\tdocument.querySelectorAll('.downloadBtn').forEach(button=>{\r\n\t\tconst formatData = button.getAttribute('data-format');\r\n\t\tconst btnText = button.querySelector('.download-text');\r\n\t\tconst linkData = button.getAttribute('data-link');\r\n\t\tconst iconUnduh = button.querySelector('.icon-unduh');\r\n\t\tconst popupContent = button.getAttribute('popup-content');\r\n\t\t\r\n\t\tif(formatData == 'pdf'){\r\n\t\t\tbutton.classList.add('btn-pdf'); \r\n\t\t\tbtnText.classList.add('color-me-white');\r\n\t\t\tbtnText.innerHTML = \"Download PDF\";\r\n\t\t\ticonUnduh.style.backgroundImage = \"url('https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/teenyicons_pdf-solid.webp')\"\r\n\t\t}\r\n\t\tif(formatData == 'word'){\r\n\t\t\tbutton.classList.add('btn-word'); \r\n\t\t\tbtnText.classList.add('color-me-white');\r\n\t\t\tbtnText.innerHTML = \"Download Word\";\r\n\t\t\ticonUnduh.style.backgroundImage = \"url('https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/file-icons_microsoft-word.webp')\"\r\n\t\t}\r\n\t\tif(formatData == 'excel'){\r\n\t\t\tbutton.classList.add('btn-excel'); \r\n\t\t\tbtnText.classList.add('color-me-white');\r\n\t\t\tbtnText.innerHTML = \"Download Excel\";\r\n\t\t\ticonUnduh.style.backgroundImage = \"url('https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/vscode-icons_file-type-excel2.webp')\"\r\n\t\t}\r\n\t\tif(formatData == 'docs'){\r\n\t\t\tbutton.classList.add('btn-word'); \r\n\t\t\tbtnText.classList.add('color-me-white');\r\n\t\t\tbtnText.innerHTML = \"Download Docs\";\r\n\t\t\ticonUnduh.style.backgroundImage = \"url('https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/simple-icons_googledocs.webp')\"\r\n\t\t}\r\n\t\tif(formatData == 'sheet'){\r\n\t\t\tbutton.classList.add('btn-excel'); \r\n\t\t\tbtnText.classList.add('color-me-white');\r\n\t\t\tbtnText.innerHTML = \"Download Sheet\";\r\n\t\t\ticonUnduh.style.backgroundImage = \"url('https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/simple-icons_googlesheets.webp')\"\r\n\t\t}\r\n\t\t\r\n\t\tif(linkData == ''){\r\n\t\t\tbutton.classList.add('d-none');\r\n\t\t}\r\n\t})\r\n<\/script>\n<h2><strong>Best Practices for Managing TPAR Compliance<\/strong><\/h2>\n<p>Effective TPAR management relies on proactive processes, accurate data, and reliable software, and treating compliance as a year-round discipline rather than an August exercise separates clean lodgements from costly scrambles.<\/p>\n<h3>1. Keep accurate records of contractor payments, ABNs, and GST<\/h3>\n<p>Maintain detailed records of every contractor engagement, covering legal name, ABN, address, contract terms, and the full payment history, so TPAR data is always ready and auditable at any point in the year.<\/p>\n<p>Structured record-keeping also supports other ATO obligations like BAS, PAYG withholding, and income tax, making a single reliable contractor dataset one of the highest-value compliance investments a finance team can make.<\/p>\n<h3>2. Review contractor data well before the 28 August deadline<\/h3>\n<p>Schedule TPAR data reviews in March, June, and July rather than waiting until late August, because each review surfaces issues early enough to contact contractors and correct records before the deadline hits.<\/p>\n<p>Early reviews also let finance managers engage accountants and tax agents in a calmer window, which usually produces better advice, quicker validation, and a smoother lodgement process without overnight pressure.<\/p>\n<h3>3. Use accounting or ERP software to automate TPAR reporting<\/h3>\n<p>ATO-ready accounting software can flag TPAR-applicable vendors at onboarding, track payments in real time, and generate the final report in the ATO-approved format without manual data export.<\/p>\n<p>Integrated systems also connect TPAR data with BAS, PAYG, and STP, so the same underlying contractor records feed every relevant ATO obligation, eliminating duplicate entry and reducing reconciliation errors.<\/p>\n<h3>4. Run regular training on ATO updates and reporting obligations<\/h3>\n<p>Tax legislation changes regularly, so finance, payroll, and procurement teams need refreshed training on contractor classification, reporting thresholds, and new ATO updates that affect day-to-day compliance practices.<\/p>\n<p>Training also helps businesses respond to regulatory shifts such as Payday Super, Peppol eInvoicing, and new ATO digital service provider requirements, turning compliance into a steady discipline rather than reactive firefighting.<\/p>\n<h2><strong>Conclusion<\/strong><\/h2>\n<p>The Taxable Payments Annual Report is a core ATO compliance obligation for Australian businesses engaging contractors in specific industries, and accurate, on-time lodgement protects against audits, penalties, and reputational harm.<\/p>\n<p>Treating TPAR as a year-round data discipline rather than an end-of-year task strengthens internal controls, improves contractor relationships, and keeps finance teams focused on growth rather than last-minute reporting.<\/p>\n<p>If you want to simplify TPAR tracking and automate contractor reporting, <a href=\"https:\/\/www.hashmicro.com\/au\/free-product-tour\/\">consult the experts<\/a> for a free walkthrough of a digital accounting platform for business built for Australian compliance obligations.<\/p>\n<a href=\"https:\/\/www.hashmicro.com\/au\/accounting?medium=moneysite-banner\" target=\"_blank\"><img decoding=\"async\" loading=\"lazy\" width=\"712\" src=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/06\/Accounting.webp\" alt=\"Accounting\"><\/a>\n<div id=\"app\" data-v-app=\"\">\n<div class=\"h-full bg-page text-text-primary overflow-hidden\">\n<h2><strong>Frequently Asked Questions<\/strong><\/h2>\n<div class=\"flex h-full overflow-hidden\" data-v-cd886ca3=\"\">\n<div class=\"flex-1 flex flex-col min-w-0 relative overflow-hidden\" data-v-cd886ca3=\"\">\n<div class=\"flex-1 overflow-y-auto px-3 md:px-6 py-4 md:py-6 space-y-4\" data-v-cd886ca3=\"\">\n<div class=\"flex gap-2.5 group\">\n<div class=\"min-w-0 flex-1 overflow-hidden\">\n<div class=\"prose prose-sm text-text-primary text-sm max-w-full overflow-x-auto\">\n<ul class=\"bottom_faq\">\n<li>\n<details open=\"\">\n<summary><strong>Who is required to lodge a TPAR in Australia?<\/strong><\/summary>\n<p>Businesses operating in building and construction, cleaning, courier and road freight, IT, or security services must lodge TPAR, plus any business that derives 10 per cent or more of GST turnover from these reportable services.<\/p>\n<\/details>\n<\/li>\n<li>\n<details open=\"\">\n<summary><strong>When is the TPAR deadline each year?<\/strong><\/summary>\n<p>The TPAR lodgement deadline is 28 August each year, covering contractor payments made during the previous financial year from 1 July to 30 June, with no extensions available for ordinary business circumstances.<\/p>\n<\/details>\n<\/li>\n<li>\n<details open=\"\">\n<summary><strong>What payments are exempt from TPAR reporting?<\/strong><\/summary>\n<p>Payments purely for materials with no labour component, invoices where materials dominate and labour is incidental, and payments to employees rather than contractors are generally exempt from TPAR reporting obligations.<\/p>\n<\/details>\n<\/li>\n<li>\n<details open=\"\">\n<summary><strong>What happens if I lodge my TPAR late?<\/strong><\/summary>\n<p>Late lodgement attracts administrative penalties under the penalty unit system, accruing for every 28-day period the report is late, with base penalties multiplied for medium and large entities and increased for repeated failures.<\/p>\n<\/details>\n<\/li>\n<li>\n<details open=\"\">\n<summary><strong>Can I lodge TPAR through accounting software?<\/strong><\/summary>\n<p>Yes, most Australian accounting software supports TPAR generation in the ATO-approved file format, and SBR-enabled platforms can submit the report directly to the ATO without using the Online Services portal separately.<\/p>\n<\/details>\n<\/li>\n<\/ul>\n<p><script type=\"application\/ld+json\"><\/p>\n<p>{\n\"@context\": \"https:\/\/schema.org\",\n\"@type\": \"FAQPage\",\n\"mainEntity\": [\n{\n\"@type\": \"Question\",\n\"name\": \"Who is required to lodge a TPAR in Australia?\",\n\"acceptedAnswer\": {\n\"@type\": \"Answer\",\n\"text\": \"Businesses operating in building and construction, cleaning, courier and road freight, IT, or security services must lodge TPAR, plus any business that derives 10 per cent or more of GST turnover from these reportable services.\"\n}\n},\n{\n\"@type\": \"Question\",\n\"name\": \"When is the TPAR deadline each year?\",\n\"acceptedAnswer\": {\n\"@type\": \"Answer\",\n\"text\": \"The TPAR lodgement deadline is 28 August each year, covering contractor payments made during the previous financial year from 1 July to 30 June, with no extensions available for ordinary business circumstances.\"\n}\n},\n{\n\"@type\": \"Question\",\n\"name\": \"What payments are exempt from TPAR reporting?\",\n\"acceptedAnswer\": {\n\"@type\": \"Answer\",\n\"text\": \"Payments purely for materials with no labour component, invoices where materials dominate and labour is incidental, and payments to employees rather than contractors are generally exempt from TPAR reporting obligations.\"\n}\n},\n{\n\"@type\": \"Question\",\n\"name\": \"What happens if I lodge my TPAR late?\",\n\"acceptedAnswer\": {\n\"@type\": \"Answer\",\n\"text\": \"Late lodgement attracts administrative penalties under the penalty unit system, accruing for every 28-day period the report is late, with base penalties multiplied for medium and large entities and increased for repeated failures.\"\n}\n},\n{\n\"@type\": \"Question\",\n\"name\": \"Can I lodge TPAR through accounting software?\",\n\"acceptedAnswer\": {\n\"@type\": \"Answer\",\n\"text\": \"Yes, most Australian accounting software supports TPAR generation in the ATO-approved file format, and SBR-enabled platforms can submit the report directly to the ATO without using the Online Services portal separately.\"\n}\n}\n]\n}<\/p>\n<p><\/script><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>The Taxable Payments Annual Report (TPAR) is a mandatory ATO lodgement that requires certain Australian businesses to report payments made to contractors, subcontractors, and consultants during the financial year. TPAR operates on a cash basis and covers industries such as building and construction, cleaning, courier and road freight, IT, and security services, with a 28 [&hellip;]<\/p>\n","protected":false},"author":52,"featured_media":3300,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"tdm_status":"","tdm_grid_status":"","footnotes":""},"categories":[23],"tags":[],"class_list":{"0":"post-3259","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-accounting"},"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.6 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Taxable Payments Annual Report for Australian Businesses - HashMicro Australia<\/title>\n<meta name=\"description\" content=\"Understand TPAR obligations, reportable industries, required fields, and lodgement steps every Australian business needs for ATO compliance.\" \/>\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\/au\/blog\/taxable-payments-annual-report\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Taxable Payments Annual Report for Australian Businesses\" \/>\n<meta property=\"og:description\" content=\"Understand TPAR obligations, reportable industries, required fields, and lodgement steps every Australian business needs for ATO compliance.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/au\/blog\/taxable-payments-annual-report\/\" \/>\n<meta property=\"og:site_name\" content=\"HashMicro Australia\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-06T05:55:11+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-07T09:55:29+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/moneymoney-9.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"400\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Maribel Knox\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Maribel Knox\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"19 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/taxable-payments-annual-report\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/taxable-payments-annual-report\\\/\"},\"author\":{\"name\":\"Maribel Knox\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/#\\\/schema\\\/person\\\/516af0773136b4657d464475a2ab3efc\"},\"headline\":\"Taxable Payments Annual Report for Australian Businesses\",\"datePublished\":\"2026-05-06T05:55:11+00:00\",\"dateModified\":\"2026-05-07T09:55:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/taxable-payments-annual-report\\\/\"},\"wordCount\":4172,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/taxable-payments-annual-report\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/moneymoney-9.webp\",\"articleSection\":[\"Accounting\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/taxable-payments-annual-report\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/taxable-payments-annual-report\\\/\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/taxable-payments-annual-report\\\/\",\"name\":\"Taxable Payments Annual Report for Australian Businesses - HashMicro Australia\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/taxable-payments-annual-report\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/taxable-payments-annual-report\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/moneymoney-9.webp\",\"datePublished\":\"2026-05-06T05:55:11+00:00\",\"dateModified\":\"2026-05-07T09:55:29+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/#\\\/schema\\\/person\\\/516af0773136b4657d464475a2ab3efc\"},\"description\":\"Understand TPAR obligations, reportable industries, required fields, and lodgement steps every Australian business needs for ATO compliance.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/taxable-payments-annual-report\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/taxable-payments-annual-report\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/taxable-payments-annual-report\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/moneymoney-9.webp\",\"contentUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/moneymoney-9.webp\",\"width\":800,\"height\":400,\"caption\":\"taxable-payments-annual-report\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/taxable-payments-annual-report\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Taxable Payments Annual Report for Australian Businesses\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/\",\"name\":\"HashMicro Australia\",\"description\":\"Business Management Blog\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/#\\\/schema\\\/person\\\/516af0773136b4657d464475a2ab3efc\",\"name\":\"Maribel Knox\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/cropped-Maribel-Knox-WP-96x96.webp\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/cropped-Maribel-Knox-WP-96x96.webp\",\"contentUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/cropped-Maribel-Knox-WP-96x96.webp\",\"caption\":\"Maribel Knox\"},\"description\":\"I understand how complicated invoicing becomes at an enterprise level. Through my work, I\u2019ve seen that invoicing isn\u2019t just \u201csending bills\u201d; it\u2019s a control point that affects revenue accuracy, collections, and audit readiness. I write accounting and invoicing articles to help businesses build cleaner financial workflows.\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/author\\\/maribel-knox\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Taxable Payments Annual Report for Australian Businesses - HashMicro Australia","description":"Understand TPAR obligations, reportable industries, required fields, and lodgement steps every Australian business needs for ATO compliance.","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\/au\/blog\/taxable-payments-annual-report\/","og_locale":"en_US","og_type":"article","og_title":"Taxable Payments Annual Report for Australian Businesses","og_description":"Understand TPAR obligations, reportable industries, required fields, and lodgement steps every Australian business needs for ATO compliance.","og_url":"https:\/\/www.hashmicro.com\/au\/blog\/taxable-payments-annual-report\/","og_site_name":"HashMicro Australia","article_published_time":"2026-05-06T05:55:11+00:00","article_modified_time":"2026-05-07T09:55:29+00:00","og_image":[{"width":800,"height":400,"url":"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/moneymoney-9.webp","type":"image\/webp"}],"author":"Maribel Knox","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Maribel Knox","Est. reading time":"19 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hashmicro.com\/au\/blog\/taxable-payments-annual-report\/#article","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/au\/blog\/taxable-payments-annual-report\/"},"author":{"name":"Maribel Knox","@id":"https:\/\/www.hashmicro.com\/au\/blog\/#\/schema\/person\/516af0773136b4657d464475a2ab3efc"},"headline":"Taxable Payments Annual Report for Australian Businesses","datePublished":"2026-05-06T05:55:11+00:00","dateModified":"2026-05-07T09:55:29+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hashmicro.com\/au\/blog\/taxable-payments-annual-report\/"},"wordCount":4172,"commentCount":0,"image":{"@id":"https:\/\/www.hashmicro.com\/au\/blog\/taxable-payments-annual-report\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/moneymoney-9.webp","articleSection":["Accounting"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.hashmicro.com\/au\/blog\/taxable-payments-annual-report\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/au\/blog\/taxable-payments-annual-report\/","url":"https:\/\/www.hashmicro.com\/au\/blog\/taxable-payments-annual-report\/","name":"Taxable Payments Annual Report for Australian Businesses - HashMicro Australia","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/au\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/au\/blog\/taxable-payments-annual-report\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/au\/blog\/taxable-payments-annual-report\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/moneymoney-9.webp","datePublished":"2026-05-06T05:55:11+00:00","dateModified":"2026-05-07T09:55:29+00:00","author":{"@id":"https:\/\/www.hashmicro.com\/au\/blog\/#\/schema\/person\/516af0773136b4657d464475a2ab3efc"},"description":"Understand TPAR obligations, reportable industries, required fields, and lodgement steps every Australian business needs for ATO compliance.","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/au\/blog\/taxable-payments-annual-report\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/au\/blog\/taxable-payments-annual-report\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/au\/blog\/taxable-payments-annual-report\/#primaryimage","url":"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/moneymoney-9.webp","contentUrl":"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/moneymoney-9.webp","width":800,"height":400,"caption":"taxable-payments-annual-report"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/au\/blog\/taxable-payments-annual-report\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/au\/blog\/"},{"@type":"ListItem","position":2,"name":"Taxable Payments Annual Report for Australian Businesses"}]},{"@type":"WebSite","@id":"https:\/\/www.hashmicro.com\/au\/blog\/#website","url":"https:\/\/www.hashmicro.com\/au\/blog\/","name":"HashMicro Australia","description":"Business Management Blog","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.hashmicro.com\/au\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.hashmicro.com\/au\/blog\/#\/schema\/person\/516af0773136b4657d464475a2ab3efc","name":"Maribel Knox","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/02\/cropped-Maribel-Knox-WP-96x96.webp","url":"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/02\/cropped-Maribel-Knox-WP-96x96.webp","contentUrl":"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/02\/cropped-Maribel-Knox-WP-96x96.webp","caption":"Maribel Knox"},"description":"I understand how complicated invoicing becomes at an enterprise level. Through my work, I\u2019ve seen that invoicing isn\u2019t just \u201csending bills\u201d; it\u2019s a control point that affects revenue accuracy, collections, and audit readiness. I write accounting and invoicing articles to help businesses build cleaner financial workflows.","url":"https:\/\/www.hashmicro.com\/au\/blog\/author\/maribel-knox\/"}]}},"_links":{"self":[{"href":"https:\/\/www.hashmicro.com\/au\/blog\/wp-json\/wp\/v2\/posts\/3259","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hashmicro.com\/au\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hashmicro.com\/au\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/au\/blog\/wp-json\/wp\/v2\/users\/52"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/au\/blog\/wp-json\/wp\/v2\/comments?post=3259"}],"version-history":[{"count":3,"href":"https:\/\/www.hashmicro.com\/au\/blog\/wp-json\/wp\/v2\/posts\/3259\/revisions"}],"predecessor-version":[{"id":3844,"href":"https:\/\/www.hashmicro.com\/au\/blog\/wp-json\/wp\/v2\/posts\/3259\/revisions\/3844"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/au\/blog\/wp-json\/wp\/v2\/media\/3300"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/au\/blog\/wp-json\/wp\/v2\/media?parent=3259"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/au\/blog\/wp-json\/wp\/v2\/categories?post=3259"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/au\/blog\/wp-json\/wp\/v2\/tags?post=3259"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}