OpenSea - Smart contract - Split Revenue

Hello Everyone,
We are a graphic design studio and we have a client who wants us to mint his design works to the OpenSea as NFTs and share the revenue when NFTs sold. (80-20%)
So, we are willing to find a solution to split the revenue in two different addresses (one address will receive 80% of the revenue and the other address will receive 20%) automatically. Is this possible, or anyone is willing to do this job for us?

it is impossible to automatically split revenue for the collections you list on Opensea. Only ONE person can claim revenue.

For spliting revenue, I suggest to use MoneyPipe.

Thank you for the answer. I'd appreciate if I could get more ideas from the community.

I do not see any problem in the division of payments, since if both have access to the wallet that will receive the ether from openSea, the division can be done manually since everything is registered in the blockchain

but if it is your own marketplace for your company, if you can make a contract that divides those commissions

I'm not sure, but seems like "multi-signature wallets" are best to solve this problem. So "the safe box wallet" will receive the revenue from OpenSea, then the both parties will calculate the share and make a transfer, if both of them agrees and approves it from multisig wallet... Is this mentality correct?

that would be the best option to your problem

this service is a good option

1 Like

For the best smart contract development

alternatively, the payout address could be a payment splitter smart contract contract

Thank you @ihorbond for your helpful reply. Can you do this contract on behalf of us and give us a quotation?

Sure, I've done it for one of my clients before. Please reach out

  • telegram: @ibodnarchuk
  • discord: ihorbond#5688
  • email ihor at

Just wondering why the need for an extra splitter contract? Can one just make sure the contract knows of the other party's address and include this logic inside the withdraw function?

Some pseudo code for example:

withdraw() public payable onlyOwner {
  payable(owner()).transfer( .2 * balance );
  payable(<some other party's address>).transfer( remainder of balance );

Then when the owner conducts a withdrawal both parties get the proper amounts. Or maybe augment this where either party can initiate a withdrawal.

This could work of course. What I don't like about this approach is that with onlyOwner one person would be in control of withdrawal, what if they refuse ? or lose access to wallet or get hacked ? In case we use AccessControl and assign each party role to be able to do the withdrawal we now have to keep track and makr sure one party can't withdraw more than they should leaving the other party with nothing. Payment splitter is also nice for secondary marketplace royalties splitting since OpenSea for example only ever sends payments to a single address.

P.S. withdraw function shouldn't be payable, it doesn't receive any ether and probably external (unless called from smart contract code somewhere which would be rare)

@ihorbond i was thinking the same but my doubt is, what about the initial public purchase?
will the "split smart contract address" be used also for the initial purchase of the NFT?