Your sales and royalty manager

Follow funds from a mint to the project's recipients.

On this page

Each new art project receives its own royalty-manager clone. The artist can control the artist recipient and an additional payee through the deployed functions, without waiting for a platform employee to perform those updates.

Follow an ETH mint

  1. A collector calls the art contract's mint function and supplies ETH.
  2. The art contract mints the edition and forwards the entire payment to that project's royalty manager.
  3. A call to releaseRoyaltiesForProject(projectId) invokes the manager's release().
  4. The manager distributes its current ETH balance to the configured artist, additional payee if any, and parent art contract.

Anyone can trigger release; that caller does not choose the recipients or receive their funds. Minting deposits the ETH into the manager. It does not automatically send the artist's share straight into their wallet in the same step.

Percentages

Percentages use basis points: 10,000 is 100%. The project's manager captures the platform's artist percentage when it is created. Do not assume today's global artist percentage retroactively changes every existing manager.

An additional payee's percentage is deducted from the artist allocation, not added on top. For illustration only: with a 9,000-basis-point artist allocation and a 1,000-basis-point additional payee, a 1 ETH balance pays 0.8 ETH to the artist, 0.1 ETH to the additional payee and 0.1 ETH to the parent contract. Read the actual manager values for your project before using this example as an expectation.

Updating recipients

Use the project administration interface or the corresponding parent-contract artist function. The manager also permits its current artist to call its update functions directly, but that does not update every parent-project mapping.

Changing the additional payee first releases existing ETH using the previous split. It cannot automatically find and release every ERC-20 balance before changing that split. Release relevant token balances first if they should use the old recipients.

Changing the artist address does not first empty the manager. Remaining balances follow the configured recipients at release time. Check both the authority transfer and any undistributed funds before making that change.

Exhibition collaborators

An artist can use the additional-payee setting to share project revenue with a gallery or museum during an exhibition. Updating it settles the existing ETH under the outgoing split before applying the new one, making confirmed artist updates the opening and closing boundaries. The manager does not automatically expire the arrangement, attribute referrals, or distinguish mint ETH from other ETH it receives. See exhibition collaborations for the full workflow and ERC-20 treatment.

Secondary royalties and ERC-20s

royaltyInfo(tokenId, salePrice) identifies the project's manager and computes an amount using the platform's global secondary royalty percentage. This is a royalty signal for supporting marketplaces; it does not force every transfer or marketplace to pay royalties.

The manager can distribute a specified ERC-20 balance with releaseERC20(token). This capability does not create a project token or an art reserve. Different marketplace or token behavior can affect whether funds arrive and whether a release succeeds.

Release sends payments in one transaction. If a required recipient or token transfer reverts, the whole release can fail. Check receipts and recipient compatibility instead of assuming a displayed balance is already withdrawn.

What to verify

Read projectIdToRoyaltyAddress(projectId) from the parent contract, then inspect the manager's artist address, artist percentage, additional payee and balance. The project administration panel provides a release action and contract links. Keep roles and fee assumptions visible when arranging collaborations.

Source basis: setupImmutablesArtRoyaltyManagerForProjectId, anyoneMintProjectEdition, royaltyInfo, and ImmutablesArtRoyaltyManager.initialize/release/releaseERC20/artistUpdateAddress/artistUpdateAdditionalPayeeInfo in the deployed source.

Use this guide with an assistantRead the Artists & Coders brief