I have written a smart contract for ICO. Basically any funds that come to smart contract (by using fallback) function is immediately transferred to beneficiary account.

Now after 10 days i wish to refund ethers if some audit fails , i use send or transfer function but as the contract itself does not have any ethers they are unable to refund

1) how can i initiate refund from other account in smart contract 2) do i need to do this on web3.js as i see an option there to specify "from" while transferring ethers

1 Answer 1


A smart contract can't make an account transfer Eth. If it could, you could steal Ether from any account. What you should do in this situation is have the smart contract hold the Ether until the ICO is over and do the refund from there if the audit fails or something.

  • thanks for response , is it but possible to send funds from some other account (not contract) using solidity?
    – Ether
    Feb 22, 2018 at 8:18
  • solidity is for writing smart contracts. the compiled bytecode is stored as the code of a contract address, and the bytecode can only transfer eth from itself. it could ask another contract to transfer eth from that contract, if that contract has that functionality, but it can't make an arbitrary address send eth.
    – natewelch_
    Feb 22, 2018 at 15:59

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.