How to make a bitcoin transaction

So you've just bought some bitcoin and withdrawn them to your wallet. Now you want to send some bitcoins to someone else.

This is where you need to make a transaction.

In this guide I'll give you a quick overview of how to make your first bitcoin transaction.


How do you make a transaction?

Diagram showing xxx.

The process for making a bitcoin transaction is the same for any bitcoin wallet you use:

  1. Enter the address. This is where you want to "send" the bitcoins.
  2. Enter the amount. The amount of bitcoins you want to send. This will most likely be in BTC or satoshis.
    Unit Converter
  3. Set the fee. (optional) This basically sets the "priority" for how quickly the transaction will get finalized.

Then just click "send" and you're done.

From here you'll just need to wait for the transaction to get added to the blockchain

Always triple-check the amount and the address. You cannot "undo" bitcoin transactions, so if you send bitcoins to the wrong address, you're not going to get them back.

Don't worry too much about typos in the address. The address contains a checksum, which means your wallet will detect if it's invalid. So you don't have to check every individual character to make sure the address is correct – I usually just check the first and last 4 or 5 characters.

Use the TXID to track your transaction. When you send your transaction your wallet will give you a TXID, which is a unique reference number that you can use to check the status of your transaction on any blockchain explorer.


What happens when you make a transaction?

When you click "send", your wallet sends your transaction in to one of the nodes on the bitcoin network.

From here it gets relayed from node to node until every node on the network has a copy of your transaction.

Animation showing a bitcoin transaction being sent to a node and getting relayed across the network.

At first, your transaction gets stored in the memory pool of each node, which is like a temporary "waiting area" for transactions that have recently been broadcast across the network.

Animation showing a transaction getting stored in each node's memory.

After roughly 10 minutes, one of the nodes on the network will mine the latest transactions from their memory pool on to their blockchain.

They will then share this new block of transactions with the other nodes on the network.

Animation showing a new block of transactions being added on to the blockchain.

Upon receiving this block, each node will verify it and add it to their blockchain too.

As a result, each of the nodes will update their blockchain to include the latest transactions that have been moved from the memory pool (temporary storage) to the blockchain (permanent storage):

Diagram showing the blockchain as permanent storage for transactions.

And if your transaction gets included in a block, then your transaction has been confirmed and the payment is complete.

If not, you'll just have to keep waiting for your transaction to make it from the memory pool to the blockchain.

New blocks are added to the blockchain at 10-minute intervals (on average). So depending on the fee you've set on your transaction, you shouldn't need to wait too long for your transaction to get confirmed.

Don't rely on transactions in the memory pool. Memory pool transactions are not permanent, so don't consider a payment as "complete" until the transaction has made it in to the blockchain.


How does a transaction make it in to the blockchain?

Each node has the opportunity to try and add the transactions from their memory pool on to their blockchain. This process is known as mining.

To add transactions on to the blockchain, a miner gathers transactions from their memory pool in to a container called a candidate block. From here, the miner uses energy to try and "mine" this block on to the blockchain.

Diagram showing a miner using processing power to try and mine a candidate block on to the blockchain.
Any node on the network can become a miner.

As a result the mining process is basically a network-wide competition, where any node on the network has a chance of mining the next block. A node that can mine faster has a better chance of mining the next block, but the process of mining is unpredictable, so no single node is in control of adding blocks to the blockchain.

Diagram showing multiple miners on the network trying to add the next block to the blockchain.
Any of these miners could be the one to mine the next block on to the blockchain.

After about 10 minutes (on average), one of the miners will eventually mine the next block of transactions and share it with all the other nodes on the network. Each node then checks the block (to make sure it is valid and has been mined correctly) and adds it to their blockchain too.

Diagram showing a miner mining a block and sending it to the other nodes on the network.
Nodes across the network update their blockchain with the newly-mined block.

From here, each miner constructs a new candidate block (with new transactions from the memory pool) and starts trying to mine the next block on to the chain.

As a result, miners are constantly working to extend the blockchain with new blocks of transactions from their memory pool.

Why do transactions have to be mined?

The mechanism of mining is important for the following reasons:

  1. Prevents conflicting transactions from being written to the blockchain. If two conflicting transactions are sent in to the network (e.g. trying to send the same bitcoins to two different places), then only one of those transactions will be written to the blockchain.
  2. Any node can mine the next block of transactions. Due to the fact that the mining mechanism is unpredictable, any node is in with a chance of mining the next block, which means that no single node is in complete control of the transactions that get added to the blockchain.
  3. It's difficult to removed transactions from the blockchain. Mining a block requires energy, which makes it difficult for any individual miner to acquire enough energy to rewrite the blockchain.

All in all, mining is what allows multiple computers on a decentralized network to agree upon the same copy of a regularly updated file.

Or in other words, it's what allows Bitcoin to maintain a secure ledger of transactions.


What are transaction fees?

Every bitcoin transaction includes a fee.

These fees are collected by miners, and therefore act as an incentive for miners to include your transaction in a block.


Because a candidate block can only hold a certain amount of data. So if a lot of people are making transactions at the same time, there may be more transactions inside the memory pool than can fit inside a block:

Diagram showing more transaction in the memory pool than can fit in to a candidate block.

Note: A block can hold roughly 2MB of transaction data, but the memory pool can hold 300MB+

Therefore, miners will choose to populate their candidate blocks with transactions that have the highest fees on them, because they can collect these fees (via the coinbase transaction) if they are successful in mining the block.

Diagram showing a mining selecting the highest-fee transactions from the memory pool to fill their candidate block.

Because at the end of the day, most miners want to make as much money as possible from mining.

So when there are a lot of transactions in the memory pool, the higher the fee you place on your transaction, the higher the "priority" your transaction has for getting included in a block, and the faster it will get mined.

Animation showing how you can set a fee on a transaction when sending bitcoins from a wallet.

What fee should I put on my transaction?

This depends on how quickly you want your transaction to be mined based how many transactions are currently waiting in the memory pool:

Current Mempool Size:
20.80 vMB
48,085 transactions
Note: This is the size of the mempool for my local node.
The size of your memory pool will differ depending on how long your node has been online and which nodes you are connected to.

The faster you want your transaction to get mined, the higher the fee you should use.

Therefore, a good wallet uses the current size of the memory pool to recommend various fee rates based on how many blocks you'd like your transaction to be mined within:

Fee Rate Blocks Time (estimate)
27 sats/vbyte 2
26 sats/vbyte 3
26 sats/vbyte 6
26 sats/vbyte 12
0 sats/vbyte 144
0 sats/vbyte 432

Note: A new block is mined every 10 minutes (on average).

You can always choose to set your own custom fee on your transaction too. You can check out the current status of the memory pool yourself and decide on a fee that you think will work best for your needs.

But in general:

What happens if I put a low fee on my transaction?

By setting a low fee on your transaction you're putting it at "the back of the queue" in the memory pool.

This is fine, but it means that you're going to be waiting for a quiet period where the memory pool is cleared out so that your transaction can be included in a block.

Animation showing a low fee transaction being included in a block after all the higher-fee transactions have been mined in to blocks.
Lower-fee transactions will eventually get included in a block if there are no higher-fee transactions left in the memory pool.

However, transactions will only stay in a node's memory pool for 2 weeks (see mempoolexpiry), and after this time period a node will remove the transaction from its memory pool. And if this happens, your transaction will disappear from the network, and it's like your transaction never happened.

Diagram showing a transaction being removed from the memory pool if it hasn't been mined in a certain amount of time.
Transactions only wait around in the memory pool for a set amount of time.

Do not consider a bitcoin transaction as final until it has been confirmed. Transactions with very low fees in may not get mined, and will disappear from the network if they've been sat in the memory pool for too long.


How many confirmations should I wait for?

As a quick guide:

A confirmation is when your transaction getting mined in to a block. Additional confirmations are when further blocks are mined on top of the block your transaction was included in.

Diagram showing confirmations as the depth of a transaction in the blockchain.
The number of confirmations refers to how deep your transaction is in the blockchain.

Why does this matter?

Well, I know I said that you cannot remove a transaction from the blockchain, but it is technically possible for it to happen. Due to the way the blockchain works, a bad miner with a lot of mining power could use their energy to build a new longer blockchain for nodes to adopt, and replace blocks (and transactions) that are already in the chain.

This has not yet happened in Bitcoin, but as I say, it's technically possible.

Diagram showing the decreasing likelihood of a miner being able to replace an increasing number of blocks at the top of the blockchain.
It becomes exponentially more difficult for a miner to remove a transaction the deeper it makes its way down the blockchain.

So this is why it's sometimes recommended to wait for 6 confirmations (or more) to be sure a transaction cannot be reversed, because at this point it's no longer "computationally feasible" for a miner to replace that number of blocks. However, unless you're protecting yourself from a bad miner performing an attack against the entire network, this is overkill.

A more reasonable amount of time to wait to be confident that a transaction isn't going to be undone is 2 confirmations. This is because the top block in the blockchain has a tendency to change around with another block during natural chain reorganisations.

Diagram showing a chain reorganisation where the top block of the blockchain is replaced with a different one.
Chain reorganisations happen when two blocks are mined at the same time and compete for the same spot in the chain.

So when your transaction makes it past the first block (i.e 2 confirmations), you can be confident that it isn't going to be undone due the natural operation of the way the blockchain is built.

Chain reorganisations happen roughly once every 130.8 days (once every 19,307 blocks).

Personally, 1 confirmation is good enough for me most of the time, and I'll wait for 2 confirmations if I'm receiving a large payment that I want to be doubly-sure isn't going to be reversed.

I'd only wait for about 6+ confirmations if I'm selling my house for bitcoin, and I'm actively worried that the blockchain could be under attack.


How can I check the status of my transaction?

One of the coolest things about bitcoin is you can use blockchain explorers to see the status of your transactions in real time.

When you make a bitcoin transaction, your wallet should give you the TXID for that transaction. This is like a unique reference number for the transaction, and you can use it to find the transaction in a blockchain explorer.

Here are a few popular blockchain explorers:

Now, a blockchain explorer is basically just a website that acts as a window in to a bitcoin node. So by entering your TXID, you're just asking the explorer to look into its blockchain (or memory pool) and show you the details of a transaction it has received.

Diagram showing a blockchain explorer as a window in to the data of a running Bitcoin node.
Block explorers just display the data from inside their blockchain (and memory pool).

I won't cover all the details of what explorers can show you, but some of the things I find most useful are:

Anyway, your wallet will probably tell you the basic information about your transaction (such as whether it has been confirmed or not), but a blockchain explorer allows you to dig in to the details of the transaction, which is pretty cool.

You can also find the status of transactions from your own Bitcoin Core node using bitcoin-cli gettransaction [txid]


Here are my top tips for making bitcoin transactions:

You'll get the hang of it after your first few transactions.

I've tried to make this guide as comprehensive as possible, but ultimately experience is always the best teacher. So just take your time and give it a go.