# NFTs Royalty Pallet

**URL:** <https://forum.polkadot.network/t/nfts-royalty-pallet/3766>\
**Category:** Tech Talk\
**Tags:** frame\
**Created:** [August 23, 2023, 2:33pm UTC](https://forum.polkadot.network/t/nfts-royalty-pallet/3766 "2023-08-23T14:33:46Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![bruno](https://dub1.discourse-cdn.com/flex005/user_avatar/forum.polkadot.network/bruno/32/4244_2.png) [@bruno](https://forum.polkadot.network/u/bruno)\
**Post date:** [August 23, 2023, 2:33pm UTC](https://forum.polkadot.network/t/nfts-royalty-pallet/3766/1 "2023-08-23T14:33:46Z")

</div>

@AlexD10S and I have been building a pallet for NFT royalties. This pallet couples with the already existing [NFTs pallet](https://github.com/paritytech/substrate/tree/master/frame/nfts) that is live on Asset Hub.

You can find our work here:

- [GitHub - paritytech/substrate at bg/nfts-royalty](https://github.com/paritytech/substrate/tree/bg/nfts-royalty)

We would like to get feedback from the community on what they would like to see as **nice-to-have features** around the concept of NFT royalties that could be added into this pallet.

Features that are already included:

- Setting a royalty percentage
- Allowing for multiple royalty recipients
- Setting a royalty percentage per recipient

An example of setting the NFT royalty in the Royalties pallet code:

```rust
NftsRoyalty::set_item_royalty(
	RuntimeOrigin::signed(account(1)),
	0,
	mint_id,
	Permill::from_percent(5),
	vec![
		RoyaltyDetails {
			royalty_recipient: account(1),
			royalty_recipient_percentage: Permill::from_percent(25),
		},
		RoyaltyDetails {
			royalty_recipient: account(2),
			royalty_recipient_percentage: Permill::from_percent(25),
		},
		RoyaltyDetails {
			royalty_recipient: account(3),
			royalty_recipient_percentage: Permill::from_percent(25),
		}
	]
)

```

In order to prevent bypassing of royalties, the NFT is locked once the royalty is set, the Royalty pallet has a `buy` extrinsic that handles all the royalty logic within.

Looking forward to feedback from the community.

---

<div class="post-metadata">

**Author:** ![yangwao](https://dub1.discourse-cdn.com/flex005/user_avatar/forum.polkadot.network/yangwao/32/1685_2.png) [@yangwao](https://forum.polkadot.network/u/yangwao)\
**Post date:** [August 26, 2023, 2:00pm UTC](https://forum.polkadot.network/t/nfts-royalty-pallet/3766/2 "2023-08-26T14:00:52Z")

</div>

I would like to see opt-in royalties.

The reason for that is not all artists/buyers seem to have equal views on those royalties, and some prefer to go w/o royalties.

Yet transforming it into tips as those resale fees.

> OpenSea, the biggest NFT marketplace still fully enforcing royalty fees, [said today](https://opensea.io/blog/articles/creator-fees-update) that it plans to stop the mandatory collection of resale fees for artists. Starting March 2024, those fees will essentially be tips — an optional percentage of a sale price that sellers can choose to give the original artist. If the seller doesn’t want to hand over any money, that’ll be their choice.

---

<div class="post-metadata">

**Author:** ![AlexD10S](https://dub1.discourse-cdn.com/flex005/user_avatar/forum.polkadot.network/alexd10s/32/2921_2.png) [@AlexD10S](https://forum.polkadot.network/u/AlexD10S)\
**Post date:** [August 30, 2023, 11:50am UTC](https://forum.polkadot.network/t/nfts-royalty-pallet/3766/3 "2023-08-30T11:50:04Z")

</div>

Thanks for the feedback. Right now is up to the creator who decides if he wants to set royalties at item level or not.  
As you suggested, I think is a great idea to add the opt-in functionality and let the creator decide whether the royalties are optional. However I believe this has to be decided by the creator (artist) and not by the buyers.
