I got the refundReceiver working (had been passing the separate transactions into the encodeMulti function instead of the array of transactions into createTransaction) but I get an "out of gas" revert inside the multisend contract no matter what combination of params I seem to use inside createTransaction and executeTransaction are. I guess I am still confused about which params to use inside createTransaction and executeTransaction functions. At this point the transactions I want to execute aren't happening. I would like to get that working and also reimburse the signer the exact amount of the gas fee for the transaction they are executing.

There is a delegate call to the multisend contract that seems to have a gas limit set at 0 no matter what I have tried:


  const txOptions = {
    gasPrice: getGasPrice,
    gasToken: "0x0000000000000000000000000000000000000000",
    refundReceiver: signer.address,
    safeTxGas: 1000000,
    baseGas: 1000000,
    gasLimit: 10000000,
  const safeTransaction = await safeSdk.createTransaction(

  const execOptions = {
    gasLimit: 10000000,

  const executeTxResponse = await safeSdk.executeTransaction(


2 Answers 2


In the transaction you linked, the safeTxGas param is 0, and so it passes 0 gas to the underlying transaction. Therefore, you need to specify the correct amount of gas for the underlying transaction via the safeTxGas param when using a gas refund.

For the particular snippet, you need to move safeTxGas to the options object because when you pass an array of transactions for multisend it expects it to be in the second options parameter.

Check docs for multisend transactions section:

  • But safeTxGas is specified, why is it not taken?
    – Richard
    Commented Jan 1, 2022 at 23:39
  • good catch, updated the answer
    – mikheevm
    Commented Jan 1, 2022 at 23:51
  • According to github.com/gnosis/safe-core-sdk/tree/… it is already in the correct place (assuming multiSendTx is an array of txs)
    – Richard
    Commented Jan 2, 2022 at 0:02
  • If you look at etherscan you can also see that the other params are correctly applied, just safeTxGas is 0
    – Richard
    Commented Jan 2, 2022 at 0:03
  • Ah sorry, I misread the code, then no idea. It should be taken into account. It'd help if we could check the full snippet and try to reproduce it.
    – mikheevm
    Commented Jan 2, 2022 at 18:32

Have had the same issue. Looks like there's an issue with the safe-core-sdk on github which is likely causing SafeTxGas to be 0 regardless of what it is in options.


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.