{"id":15816,"date":"2022-10-28T19:57:00","date_gmt":"2022-10-28T19:57:00","guid":{"rendered":"https:\/\/hederav2stg.wpenginepowered.com\/blog\/how-to-exempt-hedera-accounts-from-custom-token-fees\/"},"modified":"2025-12-08T18:56:17","modified_gmt":"2025-12-08T18:56:17","slug":"how-to-exempt-hedera-accounts-from-custom-token-fees","status":"publish","type":"post","link":"https:\/\/hedera.com\/blog\/how-to-exempt-hedera-accounts-from-custom-token-fees\/","title":{"rendered":"How to Exempt Hedera Accounts from Custom Token Fees"},"content":{"rendered":"<div class=\"body-text BodyCopy mb-40 style-1\">\n<p>The implementation of <a href=\"https:\/\/hips.hedera.com\/hip\/hip-573\" target=\"_blank\">HIP-573<\/a> in mainnet release <a href=\"https:\/\/docs.hedera.com\/hedera\/networks\/release-notes\/services#v0.31\" target=\"_blank\">v0.31<\/a> (November 10th, 2022) enables token creators whose tokenomics require custom fees and different collection accounts to exempt fee collectors from paying custom fees when exchanging token units.<\/p>\n<p>This example guides you through the following steps:<\/p>\n<ol>\n<li>Creating a Helper Function and defining three new accounts (Account 1, 2, 3)<\/li>\n<li>Initializing Fractional Fees for each new account\u00a0and creating a Fungible Token<\/li>\n<li>Transferring 10.000 units from the Treasury Account to Account 2 and then from Account 2 to\u00a0Account 1<\/li>\n<\/ol>\n<h4 class=\"color-ultraviolet\" dir=\"ltr\">Try It Yourself<\/h4>\n<ul>\n<li>Get a <a href=\"https:\/\/portal.hedera.com\/\" target=\"_blank\">Hedera testnet account<\/a><\/li>\n<li>Use this\u00a0<a href=\"https:\/\/codesandbox.io\/s\/hip-573-fungible-token-j2fwjy\" target=\"_blank\">Codesandbox<\/a> to try the following example\n<ul>\n<li>Fork the sandbox<\/li>\n<li>Remember to provide credentials in the\u00a0<strong>.env<\/strong> file<\/li>\n<li>Open a new terminal to execute\u00a0<strong>index.js<\/strong><\/li>\n<\/ul>\n<\/li>\n<li>Get the complete code of this example on\u00a0<a href=\"https:\/\/github.com\/ed-marquez\/hedera-general-examples\/blob\/main\/src\/020_hip_573\/index.js\" target=\"_blank\">GitHub<\/a><strong><strong><\/strong><\/strong><\/li>\n<\/ul>\n<h4 class=\"color-ultraviolet\" dir=\"ltr\">1. Set Up Helper Functions<\/h4>\n<p dir=\"ltr\">To simplify creating accounts, you need to create a helper function. In this example, the function is called <strong>accountCreator,<\/strong> and the parameters you need to specify are an initial balance and a private key. Note that the token association is automatic to further simplify the tutorial, as you can see below.<\/p>\n<\/div>\n<div class=\"hedera-code-window\" style=\"background-image:url('https:\/\/hedera.com\/wp-content\/uploads\/2025\/12\/CodeSnippetBackground-scaled.jpg');padding:24px;border-radius:8px;margin:24px 0;\">\n<p>  <!-- Hidden image so WP All Import downloads this background image into Media Library --><br \/>\n  <img decoding=\"async\" src=\"https:\/\/hedera.com\/wp-content\/uploads\/2025\/12\/CodeSnippetBackground-scaled.jpg\" alt=\"code window background\" style=\"display:none;\" \/><\/p>\n<div class=\"code-window-header\">\n<div class=\"code-window-title\"><\/div>\n<div class=\"code-window-body\"><\/div>\n<\/p><\/div>\n<pre><code class=\"language-javascript\">const accountCreator =  async (initialBalance, privateKey) => {\n   const createAccount = new AccountCreateTransaction()\n       .setInitialBalance(initialBalance)\n       .setKey(privateKey.publicKey)\n       .setAlias(privateKey.publicKey.toEvmAddress())\n       .setMaxAutomaticTokenAssociations(10)\n       .freezeWith(client);\n   const createAccountTx = await createAccount.execute(client);\n   const createAccountRx = await createAccountTx.getReceipt(client);\n   return createAccountRx.accountId;\n}\n\n<\/code><\/pre>\n<\/div>\n<div class=\"body-text BodyCopy mb-40 style-1\">\n<h4 class=\"color-ultraviolet\" dir=\"ltr\">2. Define Hedera Accounts<\/h4>\n<p dir=\"ltr\">Now, you can use the helper function to create three different accounts that will be the collectors of the token fees.<\/p>\n<\/div>\n<div class=\"hedera-code-window\" style=\"background-image:url('https:\/\/hedera.com\/wp-content\/uploads\/2025\/12\/CodeSnippetBackground-scaled.jpg');padding:24px;border-radius:8px;margin:24px 0;\">\n<p>  <!-- Hidden image so WP All Import downloads this background image into Media Library --><br \/>\n  <img decoding=\"async\" src=\"https:\/\/hedera.com\/wp-content\/uploads\/2025\/12\/CodeSnippetBackground-scaled.jpg\" alt=\"code window background\" style=\"display:none;\" \/><\/p>\n<div class=\"code-window-header\">\n<div class=\"code-window-title\"><\/div>\n<div class=\"code-window-body\"><\/div>\n<\/p><\/div>\n<pre><code class=\"language-javascript\">\/\/ STEP 1: Create three accounts using the helper function\nconst accountKey1 = PrivateKey.generateECDSA();\nconst accountId1 = await accountCreator(50, accountKey1);\n \nconst accountKey2 = PrivateKey.generateECDSA();\nconst accountId2 = await accountCreator(50, accountKey2);\n \nconst accountKey3 = PrivateKey.generateECDSA();\nconst accountId3 = await accountCreator(50, accountKey3);\n \nconsole.log(`STEP 1 - Three accounts created: n ${accountId1} n ${accountId2} n ${accountId3}n`);\n\n<\/code><\/pre>\n<\/div>\n<div class=\"body-text BodyCopy mb-40 style-1\">\n<p><strong>Console Output:<\/strong><\/p>\n<\/div>\n<figure class=\"blog-image mb-40\"><img decoding=\"async\" src=\"https:\/\/hedera.com\/wp-content\/uploads\/2025\/12\/Screen-Shot-2022-10-26-at-9.32.12-AM_2022-10-28-200511_thhu.png\" alt=\"\"\/><\/figure>\n<div class=\"body-text BodyCopy mb-40 style-1\">\n<h4 class=\"color-ultraviolet\" dir=\"ltr\">3. Create Fractional Fees and Fungible Token<\/h4>\n<p dir=\"ltr\">Let\u2019s define three fractional fees for the fungible token we are about to create. During a token transfer, the first account will receive 1% of the amount, the second 2%, and the third 3%. <\/p>\n<p>Note that the critical factor of this tutorial is using the <strong>setAllCollectorsAreExempt()<\/strong> extension method on fractional fee creation, as you can see below.<\/p>\n<\/div>\n<div class=\"hedera-code-window\" style=\"background-image:url('https:\/\/hedera.com\/wp-content\/uploads\/2025\/12\/CodeSnippetBackground-scaled.jpg');padding:24px;border-radius:8px;margin:24px 0;\">\n<p>  <!-- Hidden image so WP All Import downloads this background image into Media Library --><br \/>\n  <img decoding=\"async\" src=\"https:\/\/hedera.com\/wp-content\/uploads\/2025\/12\/CodeSnippetBackground-scaled.jpg\" alt=\"code window background\" style=\"display:none;\" \/><\/p>\n<div class=\"code-window-header\">\n<div class=\"code-window-title\"><\/div>\n<div class=\"code-window-body\"><\/div>\n<\/p><\/div>\n<pre><code class=\"language-javascript\">const fee1 = new CustomFractionalFee()\n       .setFeeCollectorAccountId(accountId1)\n       .setNumerator(1)\n       .setDenominator(100)\n       .setAllCollectorsAreExempt(true);\n \nconst fee2 = new CustomFractionalFee()\n       .setFeeCollectorAccountId(accountId2)\n       .setNumerator(2)\n       .setDenominator(100)\n       .setAllCollectorsAreExempt(true);\n \nconst fee3 = new CustomFractionalFee()\n       .setFeeCollectorAccountId(accountId3)\n       .setNumerator(3)\n       .setDenominator(100)\n       .setAllCollectorsAreExempt(true);\n\n<\/code><\/pre>\n<\/div>\n<div class=\"body-text BodyCopy mb-40 style-1\">\n<p dir=\"ltr\">Now, you can create the fungible token and specify the fees you just defined. Remember to sign the <a href=\"https:\/\/docs.hedera.com\/hedera\/sdks-and-apis\/sdks\/tokens\/define-a-token\" target=\"_blank\">TokenCreateTransaction()<\/a> using all the accounts (fee collectors included).<\/p>\n<\/div>\n<div class=\"hedera-code-window\" style=\"background-image:url('https:\/\/hedera.com\/wp-content\/uploads\/2025\/12\/CodeSnippetBackground-scaled.jpg');padding:24px;border-radius:8px;margin:24px 0;\">\n<p>  <!-- Hidden image so WP All Import downloads this background image into Media Library --><br \/>\n  <img decoding=\"async\" src=\"https:\/\/hedera.com\/wp-content\/uploads\/2025\/12\/CodeSnippetBackground-scaled.jpg\" alt=\"code window background\" style=\"display:none;\" \/><\/p>\n<div class=\"code-window-header\">\n<div class=\"code-window-title\"><\/div>\n<div class=\"code-window-body\"><\/div>\n<\/p><\/div>\n<pre><code class=\"language-javascript\">const createToken = new TokenCreateTransaction()\n       .setTokenName(\"HIP-573 Token\")\n       .setTokenSymbol(\"H573\")\n       .setTokenType(TokenType.FungibleCommon)\n       .setTreasuryAccountId(operatorId)\n       .setAutoRenewAccountId(operatorId)\n       .setAdminKey(operatorKey)\n       .setFreezeKey(operatorKey)\n       .setWipeKey(operatorKey)\n       .setInitialSupply(100000000) \/\/ Total supply = 100000000 \/ 10 ^ 2\n       .setDecimals(2)\n       .setCustomFees([fee1, fee2, fee3])\n       .setMaxTransactionFee(new Hbar(40))\n       .freezeWith(client);\n \nconst createTokenSigned1 = await createToken.sign(accountKey1);\nconst createTokenSigned2 = await createTokenSigned1.sign(accountKey2);\nconst createTokenSigned3 = await createTokenSigned2.sign(accountKey3);\n \nconst createTokenTx = await createTokenSigned3.execute(client);\nconst createTokenRx = await createTokenTx.getReceipt(client);\n \nconst tokenId = createTokenRx.tokenId;\n \nconsole.log(`STEP 2 - Token with custom fees created: ${tokenId}n`);\n\n<\/code><\/pre>\n<\/div>\n<div class=\"body-text BodyCopy mb-40 style-1\">\n<p><strong>Console Output:<\/strong><\/p>\n<\/div>\n<figure class=\"blog-image mb-40\"><img decoding=\"async\" src=\"https:\/\/hedera.com\/wp-content\/uploads\/2025\/12\/Screen-Shot-2022-10-26-at-9.34.48-AM_2022-10-28-200739_bblg.png\" alt=\"\"\/><\/figure>\n<div class=\"body-text BodyCopy mb-40 style-1\">\n<h4 class=\"color-ultraviolet\" dir=\"ltr\">4. Transfer Tokens between Fee Collectors<\/h4>\n<p dir=\"ltr\">Before transferring a token from one collection account to another, you first need to transfer some tokens from the treasury account (in this example, the operator) to one of the collection accounts.<\/p>\n<\/div>\n<div class=\"hedera-code-window\" style=\"background-image:url('https:\/\/hedera.com\/wp-content\/uploads\/2025\/12\/CodeSnippetBackground-scaled.jpg');padding:24px;border-radius:8px;margin:24px 0;\">\n<p>  <!-- Hidden image so WP All Import downloads this background image into Media Library --><br \/>\n  <img decoding=\"async\" src=\"https:\/\/hedera.com\/wp-content\/uploads\/2025\/12\/CodeSnippetBackground-scaled.jpg\" alt=\"code window background\" style=\"display:none;\" \/><\/p>\n<div class=\"code-window-header\">\n<div class=\"code-window-title\"><\/div>\n<div class=\"code-window-body\"><\/div>\n<\/p><\/div>\n<pre><code class=\"language-javascript\">\/\/ STEP 3: Send token from treasury to one account and from one account to another\nconst transferFromTreasuryTx = await new TransferTransaction()\n       .addTokenTransfer(tokenId, operatorId, -10000)\n       .addTokenTransfer(tokenId, accountId2, 10000)\n       .freezeWith(client)\n       .execute(client);\n \nconst transferFromTreasuryRx = await transferFromTreasuryTx.getReceipt(client);\nconst transferFromTreasuryStatus = transferFromTreasuryRx.status.toString();\n \nconsole.log(`STEP 3 nToken transfer from treasury to account 2: ${transferFromTreasuryStatus}`);\n\n<\/code><\/pre>\n<\/div>\n<div class=\"body-text BodyCopy mb-40 style-1\">\n<p dir=\"ltr\">Now that Account 2 has 10.000 fungible tokens, you can try to transfer the tokens from Account 2 to Account 1.<\/p>\n<\/div>\n<div class=\"hedera-code-window\" style=\"background-image:url('https:\/\/hedera.com\/wp-content\/uploads\/2025\/12\/CodeSnippetBackground-scaled.jpg');padding:24px;border-radius:8px;margin:24px 0;\">\n<p>  <!-- Hidden image so WP All Import downloads this background image into Media Library --><br \/>\n  <img decoding=\"async\" src=\"https:\/\/hedera.com\/wp-content\/uploads\/2025\/12\/CodeSnippetBackground-scaled.jpg\" alt=\"code window background\" style=\"display:none;\" \/><\/p>\n<div class=\"code-window-header\">\n<div class=\"code-window-title\"><\/div>\n<div class=\"code-window-body\"><\/div>\n<\/p><\/div>\n<pre><code class=\"language-javascript\">\nconst transferFromAccount2 = await new TransferTransaction()\n       .addTokenTransfer(tokenId, accountId2, -10000)\n       .addTokenTransfer(tokenId, accountId1, 10000)\n       .freezeWith(client)\n       .sign(accountKey2);\n  \nconst transferFromAccount2Tx = await transferFromAccount2.execute(client);\nconst transferFromAccount2Rx = await transferFromAccount2Tx.getReceipt(client);\n \nconsole.log(`Transfer from account 2 to account 1: ${transferFromAccount2Rx.status.toString()}n`);\n \n<\/code><\/pre>\n<\/div>\n<div class=\"body-text BodyCopy mb-40 style-1\">\n<p dir=\"ltr\"><strong>Console Output:<\/strong><\/p>\n<\/div>\n<figure class=\"blog-image mb-40\"><img decoding=\"async\" src=\"https:\/\/hedera.com\/wp-content\/uploads\/2025\/12\/Screen-Shot-2022-10-26-at-9.34.55-AM_2022-10-28-200946_xpik.png\" alt=\"\"\/><\/figure>\n<div class=\"body-text BodyCopy mb-40 style-1\">\n<p dir=\"ltr\">Done! Now you need to check each account balance to verify if they are actually exempt from token fees.<\/p>\n<\/div>\n<div class=\"hedera-code-window\" style=\"background-image:url('https:\/\/hedera.com\/wp-content\/uploads\/2025\/12\/CodeSnippetBackground-scaled.jpg');padding:24px;border-radius:8px;margin:24px 0;\">\n<p>  <!-- Hidden image so WP All Import downloads this background image into Media Library --><br \/>\n  <img decoding=\"async\" src=\"https:\/\/hedera.com\/wp-content\/uploads\/2025\/12\/CodeSnippetBackground-scaled.jpg\" alt=\"code window background\" style=\"display:none;\" \/><\/p>\n<div class=\"code-window-header\">\n<div class=\"code-window-title\"><\/div>\n<div class=\"code-window-body\"><\/div>\n<\/p><\/div>\n<pre><code class=\"language-javascript\">\/\/ Check collectors account balance (methods will be deprecated soon, use axios and mirror node api)\nconst checkBalance1 = await new AccountBalanceQuery()\n    .setAccountId(accountId1)\n    .execute(client);\nconst balance1 = checkBalance1.tokens._map.get(tokenId.toString());\n \nconst checkBalance2 = await new AccountBalanceQuery()\n       .setAccountId(accountId2)\n       .execute(client);\n \nconst balance2 = checkBalance2.tokens._map.get(tokenId.toString());\n \nconst checkBalance3 = await new AccountBalanceQuery()\n   .setAccountId(accountId3)\n   .execute(client);\n \nconst balance3 = checkBalance3.tokens._map.get(tokenId.toString());\n \nconsole.log(`Accounts Balance: nAccount 1: ${balance1} nAccount 2: ${balance2} nAccount 3: ${balance3} n`);\n\n<\/code><\/pre>\n<\/div>\n<div class=\"body-text BodyCopy mb-40 style-1\">\n<p dir=\"ltr\"><strong>Console Output:<\/strong><\/p>\n<\/div>\n<figure class=\"blog-image mb-40\"><img decoding=\"async\" src=\"https:\/\/hedera.com\/wp-content\/uploads\/2025\/12\/Screen-Shot-2022-10-25-at-12.51.32-PM_2022-10-28-201122_yrvy.png\" alt=\"\n\n<p><strong>v0.30<\/strong><\/p>\n<p>&#8220;\/><figcaption class=\"image-caption size--xs\">\n<p><strong>v0.30<\/strong><\/p>\n<\/figcaption><\/figure>\n<figure class=\"blog-image mb-40\"><img decoding=\"async\" src=\"https:\/\/hedera.com\/wp-content\/uploads\/2025\/12\/Screen-Shot-2022-10-25-at-12.50.49-PM.png\" alt=\"\n\n<p><strong>v0.31<\/strong><\/p>\n<p>&#8220;\/><figcaption class=\"image-caption size--xs\">\n<p><strong>v0.31<\/strong><\/p>\n<\/figcaption><\/figure>\n<div class=\"body-text BodyCopy mb-40 style-1\">\n<p dir=\"ltr\">As you can see in v0.30, the third collector receives 3% of the 10.000 transferred from the second to the first collector. While in v0.31, fee collectors are exempt from fees.<\/p>\n<p dir=\"ltr\">For further questions, don&#8217;t hesitate to get in touch with us on the <a href=\"https:\/\/hedera.com\/discord\" target=\"_blank\">Hedera Discord Server<\/a>.<\/p>\n<h4 class=\"color-ultraviolet\" dir=\"ltr\">Check out the Code<\/h4>\n<p dir=\"ltr\">Check out this code example on <a href=\"https:\/\/github.com\/ed-marquez\/hedera-general-examples\/blob\/main\/src\/020_hip_573\/index.js\" target=\"_blank\">GitHub<\/a><\/p>\n<h4 class=\"color-ultraviolet\" dir=\"ltr\">Continue Learning<\/h4>\n<p dir=\"ltr\"><a href=\"https:\/\/hips.hedera.com\/all.html\" target=\"_blank\">Hedera Improvement Proposals<\/a><\/p>\n<p dir=\"ltr\"><a href=\"https:\/\/docs.hedera.com\/hedera\/sdks-and-apis\/sdks\/tokens\/custom-token-fees\" target=\"_blank\">Custom Token Fees (Documentation)<\/a><\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>The implementation of HIP-573 in mainnet release v0.31 (November 10th, 2022) enables token creators whose tokenomics require custom fees and different collection accounts to exempt collectors from paying custom fees when exchanging token units. Learn now how to create a fungible token with multiple fee collectors and discover what happens when you transfer some tokens from one collector to another.<\/p>\n","protected":false},"author":10,"featured_media":16925,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":""},"categories":[1],"tags":[45],"ppma_author":[43],"class_list":["post-15816","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-technical"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>How to Exempt Hedera Accounts from Custom Token Fees | Hedera<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/hedera.com\/blog\/how-to-exempt-hedera-accounts-from-custom-token-fees\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Exempt Hedera Accounts from Custom Token Fees | Hedera\" \/>\n<meta property=\"og:description\" content=\"The implementation of HIP-573 in mainnet release v0.31 (November 10th, 2022) enables token creators whose tokenomics require custom fees and different collection accounts to exempt collectors from paying custom fees when exchanging token units. Learn now how to create a fungible token with multiple fee collectors and discover what happens when you transfer some tokens from one collector to another.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/hedera.com\/blog\/how-to-exempt-hedera-accounts-from-custom-token-fees\/\" \/>\n<meta property=\"og:site_name\" content=\"Hedera\" \/>\n<meta property=\"article:published_time\" content=\"2022-10-28T19:57:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-08T18:56:17+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/hedera.com\/wp-content\/uploads\/2025\/12\/thumb.png\" \/>\n\t<meta property=\"og:image:width\" content=\"720\" \/>\n\t<meta property=\"og:image:height\" content=\"405\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Hedera Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/hedera.com\/blog\/how-to-exempt-hedera-accounts-from-custom-token-fees\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/hedera.com\/blog\/how-to-exempt-hedera-accounts-from-custom-token-fees\/\"},\"author\":{\"name\":\"Hedera Team\",\"@id\":\"https:\/\/hedera.com\/#\/schema\/person\/2dc6146f9f20a44d3de58c834d52e9f4\"},\"headline\":\"How to Exempt Hedera Accounts from Custom Token Fees\",\"datePublished\":\"2022-10-28T19:57:00+00:00\",\"dateModified\":\"2025-12-08T18:56:17+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/hedera.com\/blog\/how-to-exempt-hedera-accounts-from-custom-token-fees\/\"},\"wordCount\":446,\"publisher\":{\"@id\":\"https:\/\/hedera.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/hedera.com\/blog\/how-to-exempt-hedera-accounts-from-custom-token-fees\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/hedera.com\/wp-content\/uploads\/2025\/12\/thumb.png\",\"keywords\":[\"technical\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/hedera.com\/blog\/how-to-exempt-hedera-accounts-from-custom-token-fees\/\",\"url\":\"https:\/\/hedera.com\/blog\/how-to-exempt-hedera-accounts-from-custom-token-fees\/\",\"name\":\"How to Exempt Hedera Accounts from Custom Token Fees | Hedera\",\"isPartOf\":{\"@id\":\"https:\/\/hedera.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/hedera.com\/blog\/how-to-exempt-hedera-accounts-from-custom-token-fees\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/hedera.com\/blog\/how-to-exempt-hedera-accounts-from-custom-token-fees\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/hedera.com\/wp-content\/uploads\/2025\/12\/thumb.png\",\"datePublished\":\"2022-10-28T19:57:00+00:00\",\"dateModified\":\"2025-12-08T18:56:17+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/hedera.com\/blog\/how-to-exempt-hedera-accounts-from-custom-token-fees\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/hedera.com\/blog\/how-to-exempt-hedera-accounts-from-custom-token-fees\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/hedera.com\/blog\/how-to-exempt-hedera-accounts-from-custom-token-fees\/#primaryimage\",\"url\":\"https:\/\/hedera.com\/wp-content\/uploads\/2025\/12\/thumb.png\",\"contentUrl\":\"https:\/\/hedera.com\/wp-content\/uploads\/2025\/12\/thumb.png\",\"width\":720,\"height\":405},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/hedera.com\/blog\/how-to-exempt-hedera-accounts-from-custom-token-fees\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/hedera.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to Exempt Hedera Accounts from Custom Token Fees\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/hedera.com\/#website\",\"url\":\"https:\/\/hedera.com\/\",\"name\":\"Hedera\",\"description\":\"Hello future\",\"publisher\":{\"@id\":\"https:\/\/hedera.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/hedera.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/hedera.com\/#organization\",\"name\":\"Hedera\",\"url\":\"https:\/\/hedera.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/hedera.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/hedera.com\/wp-content\/uploads\/2025\/09\/hedera_logo.png\",\"contentUrl\":\"https:\/\/hedera.com\/wp-content\/uploads\/2025\/09\/hedera_logo.png\",\"width\":500,\"height\":375,\"caption\":\"Hedera\"},\"image\":{\"@id\":\"https:\/\/hedera.com\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to Exempt Hedera Accounts from Custom Token Fees | Hedera","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:\/\/hedera.com\/blog\/how-to-exempt-hedera-accounts-from-custom-token-fees\/","og_locale":"en_US","og_type":"article","og_title":"How to Exempt Hedera Accounts from Custom Token Fees | Hedera","og_description":"The implementation of HIP-573 in mainnet release v0.31 (November 10th, 2022) enables token creators whose tokenomics require custom fees and different collection accounts to exempt collectors from paying custom fees when exchanging token units. Learn now how to create a fungible token with multiple fee collectors and discover what happens when you transfer some tokens from one collector to another.","og_url":"https:\/\/hedera.com\/blog\/how-to-exempt-hedera-accounts-from-custom-token-fees\/","og_site_name":"Hedera","article_published_time":"2022-10-28T19:57:00+00:00","article_modified_time":"2025-12-08T18:56:17+00:00","og_image":[{"width":720,"height":405,"url":"https:\/\/hedera.com\/wp-content\/uploads\/2025\/12\/thumb.png","type":"image\/png"}],"author":"Hedera Team","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/hedera.com\/blog\/how-to-exempt-hedera-accounts-from-custom-token-fees\/#article","isPartOf":{"@id":"https:\/\/hedera.com\/blog\/how-to-exempt-hedera-accounts-from-custom-token-fees\/"},"author":{"name":"Hedera Team","@id":"https:\/\/hedera.com\/#\/schema\/person\/2dc6146f9f20a44d3de58c834d52e9f4"},"headline":"How to Exempt Hedera Accounts from Custom Token Fees","datePublished":"2022-10-28T19:57:00+00:00","dateModified":"2025-12-08T18:56:17+00:00","mainEntityOfPage":{"@id":"https:\/\/hedera.com\/blog\/how-to-exempt-hedera-accounts-from-custom-token-fees\/"},"wordCount":446,"publisher":{"@id":"https:\/\/hedera.com\/#organization"},"image":{"@id":"https:\/\/hedera.com\/blog\/how-to-exempt-hedera-accounts-from-custom-token-fees\/#primaryimage"},"thumbnailUrl":"https:\/\/hedera.com\/wp-content\/uploads\/2025\/12\/thumb.png","keywords":["technical"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/hedera.com\/blog\/how-to-exempt-hedera-accounts-from-custom-token-fees\/","url":"https:\/\/hedera.com\/blog\/how-to-exempt-hedera-accounts-from-custom-token-fees\/","name":"How to Exempt Hedera Accounts from Custom Token Fees | Hedera","isPartOf":{"@id":"https:\/\/hedera.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/hedera.com\/blog\/how-to-exempt-hedera-accounts-from-custom-token-fees\/#primaryimage"},"image":{"@id":"https:\/\/hedera.com\/blog\/how-to-exempt-hedera-accounts-from-custom-token-fees\/#primaryimage"},"thumbnailUrl":"https:\/\/hedera.com\/wp-content\/uploads\/2025\/12\/thumb.png","datePublished":"2022-10-28T19:57:00+00:00","dateModified":"2025-12-08T18:56:17+00:00","breadcrumb":{"@id":"https:\/\/hedera.com\/blog\/how-to-exempt-hedera-accounts-from-custom-token-fees\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/hedera.com\/blog\/how-to-exempt-hedera-accounts-from-custom-token-fees\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/hedera.com\/blog\/how-to-exempt-hedera-accounts-from-custom-token-fees\/#primaryimage","url":"https:\/\/hedera.com\/wp-content\/uploads\/2025\/12\/thumb.png","contentUrl":"https:\/\/hedera.com\/wp-content\/uploads\/2025\/12\/thumb.png","width":720,"height":405},{"@type":"BreadcrumbList","@id":"https:\/\/hedera.com\/blog\/how-to-exempt-hedera-accounts-from-custom-token-fees\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/hedera.com\/"},{"@type":"ListItem","position":2,"name":"How to Exempt Hedera Accounts from Custom Token Fees"}]},{"@type":"WebSite","@id":"https:\/\/hedera.com\/#website","url":"https:\/\/hedera.com\/","name":"Hedera","description":"Hello future","publisher":{"@id":"https:\/\/hedera.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/hedera.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/hedera.com\/#organization","name":"Hedera","url":"https:\/\/hedera.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/hedera.com\/#\/schema\/logo\/image\/","url":"https:\/\/hedera.com\/wp-content\/uploads\/2025\/09\/hedera_logo.png","contentUrl":"https:\/\/hedera.com\/wp-content\/uploads\/2025\/09\/hedera_logo.png","width":500,"height":375,"caption":"Hedera"},"image":{"@id":"https:\/\/hedera.com\/#\/schema\/logo\/image\/"}}]}},"featured_image_src":"https:\/\/hedera.com\/wp-content\/uploads\/2025\/12\/thumb-600x400.png","featured_image_src_square":"https:\/\/hedera.com\/wp-content\/uploads\/2025\/12\/thumb-600x405.png","author_info":{"display_name":"Hedera Team","author_link":"https:\/\/hedera.com\/blog\/author\/hedera-team\/"},"authors":[{"term_id":43,"user_id":10,"is_guest":0,"slug":"hedera-team","display_name":"Hedera Team","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/7ed01931dc9498365746508c4ca49ed0507ef65e04e0b82ffe88c50ef9242b1d?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":""}],"_links":{"self":[{"href":"https:\/\/hedera.com\/wp-json\/wp\/v2\/posts\/15816","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hedera.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hedera.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hedera.com\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/hedera.com\/wp-json\/wp\/v2\/comments?post=15816"}],"version-history":[{"count":0,"href":"https:\/\/hedera.com\/wp-json\/wp\/v2\/posts\/15816\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hedera.com\/wp-json\/wp\/v2\/media\/16925"}],"wp:attachment":[{"href":"https:\/\/hedera.com\/wp-json\/wp\/v2\/media?parent=15816"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hedera.com\/wp-json\/wp\/v2\/categories?post=15816"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hedera.com\/wp-json\/wp\/v2\/tags?post=15816"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/hedera.com\/wp-json\/wp\/v2\/ppma_author?post=15816"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}