Historically, bitcoin has been a currency and a network that did not include any transaction fees. Theoretically speaking, even today it is possible to send a payment and pay no transaction fees. Practically, most miners view such transactions as spam and expect all transactions to include a fee. Miners are free to choose which transactions they are including in their blocks and most miners will only include transactions that come with a fee. If no miner chooses to include a transaction into a block, the network will not confirm the transaction and the transaction will not go through.
While transaction fees have not been required in the past, there has been a way to include them in a transaction in many wallets for quite some time. The reason for a fee was to speed up a transaction.
For a transaction to occur in bitcoin, a sender needs to know an address of a recipient of the transaction. Every bitcoin wallet can have an infinite number of addresses and it is recommended that wallet owners use an address only once.
Once a sender has an address, he or she initiates a transaction. A transaction needs confirmations so that there is no double-spending, during which a sender can send funds to several addresses. It is possible to generate confirmations on the bitcoin network because the network has a history of all the transactions that have occurred in the past. For the network to accept a transaction as valid, the transaction needs at least six confirmations from different blocks. Network protocol has even stricter validity requirements and needs at least 100 confirmations.
On the bitcoin network, miners create new blocks of the blockchain. They get two incentives for doing so. The first incentive is a bounty that a miner gets when the miner’s block is added to the blockchain. Creation of a block is a hard task because a block includes a code called hash that needs to be smaller than the hash in the previous block.
Miners find a smaller hash by adding a number to the transactions called nonce and comparing hashes they get to the target hash. Because there is a lot of randomness in the process, the process is similar to a lottery. However, it works because of the law of averages and transparency of the bitcoin network.
The second incentive for miners to create a block is fees that come with transactions. The idea behind the fees is that the fees will keep miners creating new blocks even after no new bitcoins can be created.
Adding a fee to a transaction can be viewed as purchasing space in a blockchain block. The size of a fee is determined by supply and demand, even though in the case with bitcoin transactions the demand is completely random because when initiating a transaction, you don’t know how many other people are initiating transactions at the same time.
Traditionally in bitcoin, it has been the sender who has been paying transaction fees. Deducting a fee from the recipient is considered an incomplete payment. However, some wallets do have an option in which senders pay fees and miners can deduce a fee from an amount that they process.
There are certain exceptions the transactions and transaction fees that have no impact on the speed of a transaction. For example, if you are using the Bitcoin Core software, and your transaction is smaller than 1,000 bytes in size, has a high priority and outputs of one-hundredth of a bitcoin or greater, there will be no transaction fees. However, if a transaction doesn’t meet these requirements, the software will add a fee to it. If you are using Bitcoin Core software, the software will prompt you to agree to a fee or reject it whenever it includes a fee with a transaction. If you reject a fee, the transaction will get a low priority, will take longer and may not go through.
Most bitcoin transactions are about 500 bytes in size. Every block of the blockchain has 50,000 bytes of room for high-priority transactions. After that, miners can add transactions that come with fees, choosing transactions with higher fees first. The process keeps going until a block reaches a size of 750,000 bytes.
The second chart on this page https://statoshi.info/dashboard/db/fee-estimates shows fee estimates for different time periods. Knowing that an average bitcoin transaction is about 500 bytes, you can use the graph to estimate what fee you would have to pay. The graph shows the fees in satoshi per byte. Satoshi is one hundred millionth of a bitcoin or 0.00000001 BTC.