[Ethereum] Who pays transaction fee ? Payer or Recipient of the ETH

address.transferfeesgastransactions

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 ?

Best Answer

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.