Currently, when minting new ERC777 tokens to our Gnosis Safe, the transaction reverts. This article seems to imply that Gnosis Safes created via official interfaces should be able to support token receive-ability via a safe transaction, but I can't seem to find any examples of one.

Minting to our Safe is a key part of our application's functionality, so any help is very much appreciated!

2 Answers 2


ERC777 is implemented on the Gnosis Safe fallback handler, you can check the source here. If the Safe was created via our UI the fallback handler should be set

  • Thank you for your response! I've seen that code, but we're still getting the error ERC777: token recipient contract has no implementer for ERC777TokensRecipient We did use the official UI to create our Safe a while ago. We recently upgraded it from 1.1.1 to 1.3.0. Do you think that upgrade could be the reason it still wont reject the tokens? Or is there any way to double check the fallback handler is set on our safe? Feb 4, 2022 at 16:56
  • Can you provide a tx-hash so I can check what's going on?
    – Uxío
    Feb 7, 2022 at 10:12

Gnosis Safe is compatible with ERC-777 tokens. If you cannot use the native ERC777.send() functions to deposit tokens in your Gnosis Safe multisig wallet, you can always fall back to ERC20.transfer() function.

If your token mint() functions does something special, then it is up to you to cover all possible pitalls, but should be doable.

  • Thanks for the quick response! Unfortunately our challenge isn't using the .send(), function (although that does get us the following error: Error: execution reverted: ERC777: token recipient contract has no implementer for ERC777TokensRecipient) The problem we have is that the ERC777.mint() function requires the receiving address is ERC777TokensRecipient (documentation here). Is there any way to use a Gnosis Safe handler that is ERC777TokensRecipient? Jan 31, 2022 at 17:57
  • Just mint to some temporary smart contract address and from there transfer() to the multisig. Jan 31, 2022 at 19:33
  • 1
    You can use _mint and specify that it shouldn't do the contract check with the fifth argument. (.send and .mint both have this same requirement and both revert for the same reason, btw.)
    – Kyle Baker
    Feb 2, 2022 at 17:26

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.