When we call address.transfer() or address.send() to transfer ETH, who has to pay transaction fee ? Payer or Recipient of the ETH? And is there any option to choose payer of the fee or gas?

Updating :

Note 1 : According to this page:

if Bob (payer) were to make an on-chain transaction for each tweet, 20% of Alice (recipient) ’s income would be eaten up by fees.

Meaning that it's recipient who has to pay transaction fee, isn't it?

Note 2 : According to this page:

Instead of calling a function myself to initiate a payment, I’ll let the receiver of the payment do that—and therefore pay the transaction fee

Meaning that it's recipient who has to pay transaction fee. And is there any advantage if the recipient pays the transaction fee ?

What can we conclude ?

2 Answers 2


The payer of the transaction pays for the gas cost. There is currently no option of making the recipient pay for the ether. You can do a gas estimate and deduct the amount of ether the recipient would get manually on your end, but the paying account still needs to pay the gas up front.

Response to edits:

I think note 1 is just not rigorous. I think that the author meant that regardless of who pays, someone is paying for 20% of Alice's income.

Note 2 is a mention of a different design pattern that circumvents this problem, but requires additional setup.

  • Thank you. I updated my question and added two notes. Is result changed ? Thanks
    – Questioner
    Commented Jun 27, 2018 at 15:04
  • thank you. Just when you say second note "circumvents" this problem, do you mean paying tx fee by "payer" is a problem and it would be better that "recipient" pays tx fee? Thanks again.
    – Questioner
    Commented Jun 27, 2018 at 22:08
  • It really depends on a case by case basis. For many cases, tx fee by payer is fine, and probably what makes the most sense. In some cases it doesn't, but you need to identify those situations as they come up.
    – wtk219
    Commented Jun 28, 2018 at 15:28

wtk answer right, here is more details about Eth fee

When you are transferring a crypto currency from one address to another you need to pay a fee for the transfer to happen. With crypto coins like Bitcoin the fee is paid depending on the amount of the data that need to be included in a block for the transaction to happen, it is a single fee per Kilobyte of data that you have control over. Increasing the fee can result in faster inclusion in a block and faster processing of your transaction to get included in the Blockchain and the coins to move to the new address. Decreasing the fee from the recommended amount will usually result in slower confirmation time, but if the fee is too little your transfer may actually never happen. If the fee is too low and the transaction is taking too long to confirm you might try to Cancel Unconfirmed Bitcoin Transactions if you have used a local wallet like Bitcoin Core for example.

With Ethereum (ETH) the whole thing works a bit differently, though the general principle of paying a fee for transactions is pretty much the same. When you send Ethereum, transfer tokens, interact with smart contracts and so on you need to pay a fee in Gas, though the actual fee is paid in ETH anyway. With Ethereum you always pay a fee, even if your interaction with the blockchain is not successful or if it is successful. Here is an example, if you send some Ethereum coins to a smart contract and doing so with not enough Gas, the coins will not be sent, but you still will have to pay the fee and it will be deducted from your balance. With Bitcoin for comparison an unsuccessful transaction will not result in you still paying the transaction fees.

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.