{"id":15811,"date":"2022-11-14T14:27:00","date_gmt":"2022-11-14T14:27:00","guid":{"rendered":"https:\/\/hederav2stg.wpenginepowered.com\/blog\/nft-royalty-fees-hedera-hashgraph\/"},"modified":"2025-12-08T18:55:48","modified_gmt":"2025-12-08T18:55:48","slug":"nft-royalty-fees-hedera-hashgraph","status":"publish","type":"post","link":"https:\/\/hedera.com\/blog\/nft-royalty-fees-hedera-hashgraph\/","title":{"rendered":"NFT Royalty Fees: Everything You Need To Know (Edge-cases Included)"},"content":{"rendered":"<div class=\"body-text BodyCopy mb-40 style-1\">\n<p>When you create a new non-fungible token using the Hedera Token Service (HTS), you have the possibility to set one or multiple royalty fees. <\/p>\n<p>You can do this by using the <a href=\"https:\/\/docs.hedera.com\/hedera\/sdks-and-apis\/sdks\/tokens\/custom-token-fees#royalty-fee\" target=\"_blank\"><strong>CustomRoyaltyFee<\/strong>\u00a0method<\/a>, which allows you to set all parameters for your custom NFT royalty fee. In its simplest form, each time an NFT is transferred, the Hedera network will charge a fraction of the value exchanged in this transaction. <\/p>\n<p>However, this does not apply when transferring from and to the token&#8217;s treasury account. If you need to return the NFT to the treasury account, you should not have to pay for it. In the same way, it doesn&#8217;t make sense for the treasury account to pay its royalty fee when sending out NFTs to collectors. <\/p>\n<p>This blog post will show multiple code examples illustrating the correct way to set a custom royalty fee and numerous edge cases to help you better understand how the Hedera network works. <\/p>\n<p><em>If you want to play around with the <a href=\"https:\/\/github.com\/michielmulders\/royalty-fee-test-cases\" target=\"_blank\">code examples<\/a>\u00a0yourself, make sure you have a funded account you can use as the operator account to fund other accounts generated in the examples.<\/em><\/p>\n<p>First, let&#8217;s look at a regular custom royalty fee code snippet.<\/p>\n<h4 class=\"color-ultraviolet\">How to set a custom royalty fee?<\/h4>\n<p>Here&#8217;s an example of a custom royalty fee where we charge a 50% fee on the exchanged value each time an NFT from this collection is transferred. Besides that, if the user doesn&#8217;t add an Hbar transfer (exchanged value) to an NFT transfer transaction, we want the user to pay a fallback fee of 1 Hbar.<\/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\">\/\/ DEFINE CUSTOM FEE SCHEDULE (50% royalty fee - 5\/10ths)\nlet nftCustomFee = new CustomRoyaltyFee()\n    .setNumerator(5)\n    .setDenominator(10)\n    .setFeeCollectorAccountId(treasuryId)\n    \/\/the fallback fee is set to 1 hbar.\n    .setFallbackFee(new CustomFixedFee().setHbarAmount(new Hbar(1)));\n\n\/\/ CREATE NFT WITH CUSTOM FEE\nlet nftCreate = await new TokenCreateTransaction()\n    .setTokenName(\"Fall Collection\")\n    .setTokenSymbol(\"LEAF\")\n    .setTokenType(TokenType.NonFungibleUnique)\n    .setDecimals(0)\n    .setInitialSupply(0)\n    .setTreasuryAccountId(treasuryId)\n    .setSupplyType(TokenSupplyType.Finite)\n    .setMaxSupply(5)\n    .setCustomFees([nftCustomFee])\n    .setAdminKey(adminKey)\n    .setSupplyKey(supplyKey)\n    .freezeWith(client)\n    .sign(treasuryKey);\n\nlet nftCreateTxSign = await nftCreate.sign(adminKey);\nlet nftCreateSubmit = await nftCreateTxSign.execute(client);\nlet nftCreateRx = await nftCreateSubmit.getReceipt(client);\nlet tokenId = nftCreateRx.tokenId;\nconsole.log(`Created NFT with Token ID: ${tokenId} n`);\n<\/code><\/pre>\n<\/div>\n<div class=\"body-text BodyCopy mb-40 style-1\">\n<p>You can find the full code at <a href=\"https:\/\/github.com\/michielmulders\/royalty-fee-test-cases\/blob\/main\/case-normal.js\" target=\"_blank\">case-normal.js<\/a>. This example completes multiple steps:<\/p>\n<ol>\n<li>Transfer NFT from Treasury-&gt;Alice (no royalty fee)<\/li>\n<li>Transfer NFT from Alice-&gt;Bob and Bob pays 10 Hbar to Alice (royalty fee is paid)<\/li>\n<li>Transfer NFT from Bob-&gt;Treasury (no royalty fee)<\/li>\n<\/ol>\n<p>If you execute the code at <strong>case-normal.js<\/strong>, you&#8217;ll get the following output which nicely prints the differences in balances after each step.<\/p>\n<pre>Starting balances:\n\n- Treasury balance: 5 NFTs of ID:0.0.48830139 and 5 \u210f\n- Alice balance: undefined NFTs of ID:0.0.48830139 and 30 \u210f\n- Bob balance: 0 NFTs of ID:0.0.48830139 and 30 \u210f\n ---\n\n NFT transfer Treasury-&gt;Alice status: SUCCESS \n- Treasury balance: 4 NFTs of ID:0.0.48830139 and 5 \u210f\n- Alice balance: 1 NFTs of ID:0.0.48830139 and 30 \u210f\n- Bob balance: 0 NFTs of ID:0.0.48830139 and 30 \u210f\n ---\n\n NFT transfer Alice-&gt;Bob status: SUCCESS \n- Treasury balance: 4 NFTs of ID:0.0.48830139 and 10 \u210f (+5 Hbar = 50% royalty fee)\n- Alice balance: 0 NFTs of ID:0.0.48830139 and 35 \u210f (+5 Hbar value exchange)\n- Bob balance: 1 NFTs of ID:0.0.48830139 and 20 \u210f (- 10 Hbar)\n ---\n\n NFT transfer Bob-&gt;Treasury status: SUCCESS \n- Treasury balance: 5 NFTs of ID:0.0.48830139 and 10 \u210f\n- Alice balance: 0 NFTs of ID:0.0.48830139 and 35 \u210f\n- Bob balance: 0 NFTs of ID:0.0.48830139 and 20 \u210f<\/pre>\n<\/p>\n<p>It&#8217;s also possible to exempt fee collectors from paying royalty fees when they transfer NFTs. With the implementation of <a href=\"https:\/\/hips.hedera.com\/hip\/hip-573\" target=\"_blank\">HIP-573<\/a>\u00a0on mainnet in release v0.31 (November 10th, 2022), you can exempt collection accounts from paying custom fees when exchanging token units, fungible tokens, or non-fungible tokens. This <a href=\"https:\/\/hedera.com\/blog\/how-to-exempt-hedera-accounts-from-custom-token-fees\" target=\"_blank\">tutorial<\/a>\u00a0explains the complete setup, but here&#8217;s a quick snippet showing how to do it.<\/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); \/\/ new property to exempt fee collectors \n\nconst fee2 = new CustomFractionalFee()\n       .setFeeCollectorAccountId(accountId2)\n       .setNumerator(2)\n       .setDenominator(100)\n       .setAllCollectorsAreExempt(true); \/\/ you have to set it for each fee you define\n<\/code><\/pre>\n<\/div>\n<div class=\"body-text BodyCopy mb-40 style-1\">\n<p>Now, let&#8217;s take a look at some NFT custom royalty fee edge cases.<\/p>\n<\/div>\n<div class=\"body-text BodyCopy mb-40 style-1\">\n<h4 class=\"color-ultraviolet\">Edge case 1<\/h4>\n<p><strong>Question:<\/strong> What happens if no fungible value is exchanged in an NFT transfer and the royalty fee schedule defines a fallback fee?<strong><\/p>\n<p>Output:<\/strong> The fallback fee of 1 Hbar is paid.<\/p>\n<pre>- Treasury balance: 5 NFTs of ID:0.0.48289984 and 5 \u210f\n- Alice balance: undefined NFTs of ID:0.0.48289984 and 30 \u210f\n- Bob balance: 0 NFTs of ID:0.0.48289984 and 30 \u210f\n\nNFT transfer Treasury-&gt;Alice status: SUCCESS\n\n- Treasury balance: 4 NFTs of ID:0.0.48289984 and 5 \u210f\n- Alice balance: 1 NFTs of ID:0.0.48289984 and 30 \u210f\n- Bob balance: 0 NFTs of ID:0.0.48289984 and 30 \u210f\n\nNFT transfer Alice-&gt;Bob status: SUCCESS\n\n- Treasury balance: 4 NFTs of ID:0.0.48289984 and 6 \u210f\n- Alice balance: 0 NFTs of ID:0.0.48289984 and 30 \u210f\n- Bob balance: 1 NFTs of ID:0.0.48289984 and 29 \u210f<\/pre>\n<\/p>\n<p>You can find the full code example at <a href=\"https:\/\/github.com\/michielmulders\/royalty-fee-test-cases\/blob\/main\/case-1.js\" target=\"_blank\">case-1.js<\/a>.<\/p>\n<\/div>\n<div class=\"body-text BodyCopy mb-40 style-1\">\n<h4 class=\"color-ultraviolet\">Edge case 2<\/h4>\n<p><strong>Question:<\/strong>\u00a0What happens if no fungible value is exchanged in an NFT transfer and the royalty fee schedule doesn&#8217;t define a fallback fee<\/p>\n<p><strong>Output:<\/strong>\u00a0Nothing will be charged when transferring the NFT. In other words, if you don&#8217;t set a fallback fee, the royalty fee can be evaded when transferring an NFT between different accounts.<\/p>\n<pre>- Treasury balance: 5 NFTs of ID:0.0.48289984 and 5 \u210f\n- Alice balance: undefined NFTs of ID:0.0.48289984 and 30 \u210f\n- Bob balance: 0 NFTs of ID:0.0.48289984 and 30 \u210f\n\n NFT transfer Treasury-&gt;Alice status: SUCCESS \n\n- Treasury balance: 4 NFTs of ID:0.0.48289984 and 5 \u210f\n- Alice balance: 1 NFTs of ID:0.0.48289984 and 30 \u210f\n- Bob balance: 0 NFTs of ID:0.0.48289984 and 30 \u210f\n\n NFT transfer Alice-&gt;Bob status: SUCCESS \n\n- Treasury balance: 4 NFTs of ID:0.0.48289984 and 5 \u210f\n- Alice balance: 0 NFTs of ID:0.0.48289984 and 30 \u210f\n- Bob balance: 1 NFTs of ID:0.0.48289984 and 30 \u210f<\/pre>\n<p>You can find the full code example at <a href=\"https:\/\/github.com\/michielmulders\/royalty-fee-test-cases\/blob\/main\/case-2.js\" target=\"_blank\">case-2.js<\/a>.<\/p>\n<\/div>\n<div class=\"body-text BodyCopy mb-40 style-1\">\n<h4 class=\"color-ultraviolet\">Edge case 3<\/h4>\n<p><strong>Question:<\/strong> What happens if no fungible value is exchanged in an NFT transfer and the receiver does not have the fixed fee fallback token but is associated with the fallback token?<strong><\/p>\n<p>Output:<\/strong> Fails with insufficient balance error for Bob (receiver) because he has 0 tokens: <strong>INSUFFICIENT_SENDER_ACCOUNT_BALANCE_FOR_CUSTOM_FEE<\/strong>. The same error is thrown when he has one or two tokens of this random token and the fallback fee is set to a higher amount than two.<\/p>\n<pre>- Treasury balance: 5 NFTs of ID:0.0.48294326 and 5 \u210f\n- Alice balance: undefined NFTs of ID:0.0.48294326 and 30 \u210f\n- Bob balance: 0 NFTs of ID:0.0.48294326 and 30 \u210f\n\n NFT transfer Treasury-&gt;Alice status: SUCCESS \n\n- Treasury balance: 4 NFTs of ID:0.0.48294326 and 5 \u210f\n- Alice balance: 1 NFTs of ID:0.0.48294326 and 30 \u210f\n- Bob balance: 0 NFTs of ID:0.0.48294326 and 30 \u210f\n\nReceiptStatusError: receipt for transaction 0.0.47741098@1663679731.363621682 contained error status INSUFFICIENT_SENDER_ACCOUNT_BALANCE_FOR_CUSTOM_FEE<\/pre>\n<\/p>\n<p>Here&#8217;s a code snippet that shows the royalty fee definition. Bob&#8217;s account will be associated with this random token.<\/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 randomTokenId = TokenId.fromString(\"0.0.48114789\")\nlet nftCustomFee = new CustomRoyaltyFee()\n    .setNumerator(5)\n    .setDenominator(10)\n    .setFeeCollectorAccountId(treasuryId)\n    \/\/the fallback to a random token\n    .setFallbackFee(\n        new CustomFixedFee()\n        .setAmount(10)\n        .setDenominatingTokenId(randomTokenId)\n        .setFeeCollectorAccountId(treasuryId)\n    );\n<\/code><\/pre>\n<\/div>\n<div class=\"body-text BodyCopy mb-40 style-1\">\n<p>You can find the full code example at <a href=\"https:\/\/github.com\/michielmulders\/royalty-fee-test-cases\/blob\/main\/case-3.js\" target=\"_blank\">case-3.js<\/a>.<\/p>\n<\/div>\n<div class=\"body-text BodyCopy mb-40 style-1\">\n<h4 class=\"color-ultraviolet\">Edge case 4<\/h4>\n<p><strong>Question:<\/strong> What happens if no fungible value is exchanged in an NFT transfer and the buyer is not associated with the fixed fee fallback token?<strong><\/p>\n<p>Output:<\/strong> The transfer between <strong>Alice-&gt;Bob<\/strong> fails because Bob has to pay the fallback fee (no value exchanged) but he is not associated with the random token. Here, you get the expected <strong>TOKEN_NOT_ASSOCIATED_TO_ACCOUNT<\/strong> error.<\/p>\n<pre>- Treasury balance: 5 NFTs of ID:0.0.48290038 and 5 \u210f\n- Alice balance: undefined NFTs of ID:0.0.48290038 and 30 \u210f\n- Bob balance: 0 NFTs of ID:0.0.48290038 and 30 \u210f\n\n NFT transfer Treasury-&gt;Alice status: SUCCESS \n\n- Treasury balance: 4 NFTs of ID:0.0.48290038 and 5 \u210f\n- Alice balance: 1 NFTs of ID:0.0.48290038 and 30 \u210f\n- Bob balance: 0 NFTs of ID:0.0.48290038 and 30 \u210f\n\nReceiptStatusError: receipt for transaction 0.0.47741098@1663666531.902932804 contained error status TOKEN_NOT_ASSOCIATED_TO_ACCOUNT\n...<\/pre>\n<\/p>\n<p>You can find the full code example at <a href=\"https:\/\/github.com\/michielmulders\/royalty-fee-test-cases\/blob\/main\/case-4.js\" target=\"_blank\">case-4.js<\/a>.<\/p>\n<h4 class=\"color-ultraviolet\">Edge case 5<\/h4>\n<p><strong>Question:<\/strong> What happens when you create an NFT but the fee collector account is not associated with the fallback fee (CustomFixedFee)?<strong><\/p>\n<p>Output:<\/strong> The <strong>TokenCreateTransaction<\/strong> with the error: <strong>TOKEN_NOT_ASSOCIATED_TO_FEE_COLLECTOR<\/strong>.<\/p>\n<p>You can find the full code example at\u00a0<a href=\"https:\/\/github.com\/michielmulders\/royalty-fee-test-cases\/blob\/main\/case-5.js\" target=\"_blank\">case-5.js<\/a>.<\/p>\n<\/div>\n<div class=\"body-text BodyCopy mb-40 style-1\">\n<h4 class=\"color-ultraviolet\">Edge case 6<\/h4>\n<p><strong>Question:<\/strong> What happens when you add a token as a custom royalty fee to an NFT and then delete this token on the ledger?<strong><\/p>\n<p>Output:<\/strong> As the docs for <a href=\"https:\/\/docs.hedera.com\/hedera\/sdks-and-apis\/sdks\/tokens\/delete-a-token\" target=\"_blank\">deleting a token<\/a>\u00a0mention, it will throw an error <strong>TOKEN_WAS_DELETED<\/strong> when transferring this NFT when no value is exchanged.\u00a0It means that you can only exchange this NFT when transferring Hbar value.<\/p>\n<pre>NFT transfer Treasury-&gt;Alice status: SUCCESS \n\n- Treasury balance: 5 \u210f NFTs of ID:0.0.48290163 4 and rand token: 980\n- Alice balance: 20 \u210f NFTs of ID:0.0.48290163 1 and rand token: 10\n- Bob balance: 20 \u210f NFTs of ID:0.0.48290163 0 and rand token: 10\n\n- Token deleted\n\nReceiptStatusError: receipt for transaction 0.0.47741098@1663668783.262812175 contained error status TOKEN_WAS_DELETED\n...<\/pre>\n<\/p>\n<p>You can find the full code example at <a href=\"https:\/\/github.com\/michielmulders\/royalty-fee-test-cases\/blob\/main\/case-6.js\" target=\"_blank\">case-6.js<\/a>.<\/p>\n<h4 class=\"color-ultraviolet\">Edge case 7<\/h4>\n<p><strong>Question:<\/strong> Can you update the royalty fee for NFTs to any number above 100%?<strong><\/p>\n<p>Output:<\/strong>\u00a0This example first sets the royalty fee to 50% (5\/10ths) and then updates the fee to 200% (200\/100ths). However, the <strong>TokenFeeScheduleUpdateTransaction<\/strong> fails with the error <strong>ROYALTY_FRACTION_CANNOT_EXCEED_ONE<\/strong>, which means that <strong>100% is the maximum fee<\/strong> you can charge.<\/p>\n<pre>- Creating accounts...\n- Created NFT with Token ID 0.0.2748981 and fee schedule 5\/10ths\n\nReceiptStatusError: receipt for transaction 0.0.2617920@1675082562.837054051 contained error status ROYALTY_FRACTION_CANNOT_EXCEED_ONE\n...<\/pre>\n<\/p>\n<p>You can find the full code example at <a href=\"https:\/\/github.com\/michielmulders\/royalty-fee-test-cases\/blob\/main\/case-7.js\" target=\"_blank\">case-7.js<\/a>.<\/p>\n<h4 class=\"color-ultraviolet\">Edge case 8<\/h4>\n<p><strong>Question:<\/strong> Can you steal funds from someone&#8217;s account that has auto-association slots available by sending them an NFT with a fallback fee?\u00a0<strong><\/p>\n<p>Output:<\/strong>\u00a0No, stealing funds is impossible because the account receiving the NFT has to sign the fallback fee being withdrawn from their account&#8217;s balance. Without the receiving user&#8217;s signature, you&#8217;ll get an\u00a0<strong>INVALID_SIGNATURE<\/strong> error.<\/p>\n<pre>ReceiptStatusError: receipt for transaction 0.0.2617920@1687175554.994288926 contained error status INVALID_SIGNATURE\n...<\/pre>\n<\/p>\n<p>You can find the full code example at <a href=\"https:\/\/github.com\/michielmulders\/royalty-fee-test-cases\/blob\/main\/case-8.js\" target=\"_blank\">case-8.js<\/a>.<\/p>\n<h4 class=\"color-ultraviolet\">Check out the Code<\/h4>\n<p>Check out all code examples on <a href=\"https:\/\/github.com\/michielmulders\/royalty-fee-test-cases\" target=\"_blank\">GitHub<\/a>.<\/p>\n<h4 class=\"color-ultraviolet\">Continue Learning<\/h4>\n<p>If you want to learn more, check the <a href=\"https:\/\/docs.hedera.com\/hedera\/sdks-and-apis\/sdks\/tokens\" target=\"_blank\">Hedera Token Service<\/a>\u00a0or <a href=\"https:\/\/docs.hedera.com\/hedera\/sdks-and-apis\/sdks\/tokens\/custom-token-fees\" target=\"_blank\">Custom Fees<\/a>\u00a0docs.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>NFT royalty fees allow you to charge a fractional fee when transferring NFTs between users or set a fallback fixed fee. But what about NFT royalty fee edge cases? This blog post looks at questions such as what happens when a user is not associated with the fallback fee and no fungible value is exchanged, or the user doesn&#8217;t have any fallback fee balance.<\/p>\n","protected":false},"author":10,"featured_media":16921,"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-15811","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>NFT Royalty Fees: Everything You Need To Know (Edge-cases Included) | 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\/nft-royalty-fees-hedera-hashgraph\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"NFT Royalty Fees: Everything You Need To Know (Edge-cases Included) | Hedera\" \/>\n<meta property=\"og:description\" content=\"NFT royalty fees allow you to charge a fractional fee when transferring NFTs between users or set a fallback fixed fee. But what about NFT royalty fee edge cases? This blog post looks at questions such as what happens when a user is not associated with the fallback fee and no fungible value is exchanged, or the user doesn&#039;t have any fallback fee balance.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/hedera.com\/blog\/nft-royalty-fees-hedera-hashgraph\/\" \/>\n<meta property=\"og:site_name\" content=\"Hedera\" \/>\n<meta property=\"article:published_time\" content=\"2022-11-14T14:27:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-08T18:55:48+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/hedera.com\/wp-content\/uploads\/2025\/12\/NFT-Royalty-Fees.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\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\/nft-royalty-fees-hedera-hashgraph\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/hedera.com\/blog\/nft-royalty-fees-hedera-hashgraph\/\"},\"author\":{\"name\":\"Hedera Team\",\"@id\":\"https:\/\/hedera.com\/#\/schema\/person\/2dc6146f9f20a44d3de58c834d52e9f4\"},\"headline\":\"NFT Royalty Fees: Everything You Need To Know (Edge-cases Included)\",\"datePublished\":\"2022-11-14T14:27:00+00:00\",\"dateModified\":\"2025-12-08T18:55:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/hedera.com\/blog\/nft-royalty-fees-hedera-hashgraph\/\"},\"wordCount\":1011,\"publisher\":{\"@id\":\"https:\/\/hedera.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/hedera.com\/blog\/nft-royalty-fees-hedera-hashgraph\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/hedera.com\/wp-content\/uploads\/2025\/12\/NFT-Royalty-Fees.png\",\"keywords\":[\"technical\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/hedera.com\/blog\/nft-royalty-fees-hedera-hashgraph\/\",\"url\":\"https:\/\/hedera.com\/blog\/nft-royalty-fees-hedera-hashgraph\/\",\"name\":\"NFT Royalty Fees: Everything You Need To Know (Edge-cases Included) | Hedera\",\"isPartOf\":{\"@id\":\"https:\/\/hedera.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/hedera.com\/blog\/nft-royalty-fees-hedera-hashgraph\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/hedera.com\/blog\/nft-royalty-fees-hedera-hashgraph\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/hedera.com\/wp-content\/uploads\/2025\/12\/NFT-Royalty-Fees.png\",\"datePublished\":\"2022-11-14T14:27:00+00:00\",\"dateModified\":\"2025-12-08T18:55:48+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/hedera.com\/blog\/nft-royalty-fees-hedera-hashgraph\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/hedera.com\/blog\/nft-royalty-fees-hedera-hashgraph\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/hedera.com\/blog\/nft-royalty-fees-hedera-hashgraph\/#primaryimage\",\"url\":\"https:\/\/hedera.com\/wp-content\/uploads\/2025\/12\/NFT-Royalty-Fees.png\",\"contentUrl\":\"https:\/\/hedera.com\/wp-content\/uploads\/2025\/12\/NFT-Royalty-Fees.png\",\"width\":1920,\"height\":1080},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/hedera.com\/blog\/nft-royalty-fees-hedera-hashgraph\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/hedera.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"NFT Royalty Fees: Everything You Need To Know (Edge-cases Included)\"}]},{\"@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":"NFT Royalty Fees: Everything You Need To Know (Edge-cases Included) | 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\/nft-royalty-fees-hedera-hashgraph\/","og_locale":"en_US","og_type":"article","og_title":"NFT Royalty Fees: Everything You Need To Know (Edge-cases Included) | Hedera","og_description":"NFT royalty fees allow you to charge a fractional fee when transferring NFTs between users or set a fallback fixed fee. But what about NFT royalty fee edge cases? This blog post looks at questions such as what happens when a user is not associated with the fallback fee and no fungible value is exchanged, or the user doesn't have any fallback fee balance.","og_url":"https:\/\/hedera.com\/blog\/nft-royalty-fees-hedera-hashgraph\/","og_site_name":"Hedera","article_published_time":"2022-11-14T14:27:00+00:00","article_modified_time":"2025-12-08T18:55:48+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/hedera.com\/wp-content\/uploads\/2025\/12\/NFT-Royalty-Fees.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\/nft-royalty-fees-hedera-hashgraph\/#article","isPartOf":{"@id":"https:\/\/hedera.com\/blog\/nft-royalty-fees-hedera-hashgraph\/"},"author":{"name":"Hedera Team","@id":"https:\/\/hedera.com\/#\/schema\/person\/2dc6146f9f20a44d3de58c834d52e9f4"},"headline":"NFT Royalty Fees: Everything You Need To Know (Edge-cases Included)","datePublished":"2022-11-14T14:27:00+00:00","dateModified":"2025-12-08T18:55:48+00:00","mainEntityOfPage":{"@id":"https:\/\/hedera.com\/blog\/nft-royalty-fees-hedera-hashgraph\/"},"wordCount":1011,"publisher":{"@id":"https:\/\/hedera.com\/#organization"},"image":{"@id":"https:\/\/hedera.com\/blog\/nft-royalty-fees-hedera-hashgraph\/#primaryimage"},"thumbnailUrl":"https:\/\/hedera.com\/wp-content\/uploads\/2025\/12\/NFT-Royalty-Fees.png","keywords":["technical"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/hedera.com\/blog\/nft-royalty-fees-hedera-hashgraph\/","url":"https:\/\/hedera.com\/blog\/nft-royalty-fees-hedera-hashgraph\/","name":"NFT Royalty Fees: Everything You Need To Know (Edge-cases Included) | Hedera","isPartOf":{"@id":"https:\/\/hedera.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/hedera.com\/blog\/nft-royalty-fees-hedera-hashgraph\/#primaryimage"},"image":{"@id":"https:\/\/hedera.com\/blog\/nft-royalty-fees-hedera-hashgraph\/#primaryimage"},"thumbnailUrl":"https:\/\/hedera.com\/wp-content\/uploads\/2025\/12\/NFT-Royalty-Fees.png","datePublished":"2022-11-14T14:27:00+00:00","dateModified":"2025-12-08T18:55:48+00:00","breadcrumb":{"@id":"https:\/\/hedera.com\/blog\/nft-royalty-fees-hedera-hashgraph\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/hedera.com\/blog\/nft-royalty-fees-hedera-hashgraph\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/hedera.com\/blog\/nft-royalty-fees-hedera-hashgraph\/#primaryimage","url":"https:\/\/hedera.com\/wp-content\/uploads\/2025\/12\/NFT-Royalty-Fees.png","contentUrl":"https:\/\/hedera.com\/wp-content\/uploads\/2025\/12\/NFT-Royalty-Fees.png","width":1920,"height":1080},{"@type":"BreadcrumbList","@id":"https:\/\/hedera.com\/blog\/nft-royalty-fees-hedera-hashgraph\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/hedera.com\/"},{"@type":"ListItem","position":2,"name":"NFT Royalty Fees: Everything You Need To Know (Edge-cases Included)"}]},{"@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\/NFT-Royalty-Fees-600x400.png","featured_image_src_square":"https:\/\/hedera.com\/wp-content\/uploads\/2025\/12\/NFT-Royalty-Fees-600x600.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\/15811","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=15811"}],"version-history":[{"count":0,"href":"https:\/\/hedera.com\/wp-json\/wp\/v2\/posts\/15811\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hedera.com\/wp-json\/wp\/v2\/media\/16921"}],"wp:attachment":[{"href":"https:\/\/hedera.com\/wp-json\/wp\/v2\/media?parent=15811"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hedera.com\/wp-json\/wp\/v2\/categories?post=15811"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hedera.com\/wp-json\/wp\/v2\/tags?post=15811"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/hedera.com\/wp-json\/wp\/v2\/ppma_author?post=15811"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}