Batch Bitcoin transactions: Send BTC to two or more recipients, addresses
Wondering how to send Bitcoin to 2 or more addresses in a single transaction. That is sending BTC to two different address with two different amounts in a same transaction. Sure, you can do this. If you look at most Bitcoin transactions you’ll notice it having two outputs. One is the actual recipient address and the second address is for receiving change from the same transaction. You can also include multiple other recipients as well in the same transaction and is called as multiple output transaction.
Sending multiple outputs as a one on-chain transaction saves you you time & money. So how do you send BTC to multiple addresses in one transaction? It is possible to send BTC to more than one address in a single transaction and to do this you need to bundle transactions into one. By bundling transaction you’ll only pay transaction fees ones while sending BTC to multiple addresses at the same time.
Here we’ll cover about batching Bitcoin transaction that is sending multiple amounts of Bitcoin to multiple address in one transaction. Most Bitcoin wallet has this option called “send to many” or “pay to many” which batches transaction and sends BTC to two or more recipient in a single transaction. It creates a transaction with multiple output addresses. Anyways here we’re not going to cover all the wallet types. Will only show you how to send BTC to multiple recipients at once using Electrum Bitcoin wallet and Bitcoin core.
Now before we see how to send Bitcoin to multiple accounts in a single transaction lets see what is batching.
What is batching? Batching Bitcoin transactions
Batching – The aggregation of many outputs into a single transaction. Bitcoin transaction batching is simply combining multiple transactions into one rather than creating and sending each transaction separately. This technique of including multiple payments in the same on-chain transaction drastically reduces the transaction cost and the overall Bitcoin network load.
Sending multiple transactions in one batch simply reduces the average cost per payment. All the transaction that you batch and send will incur only a single transaction fee. This makes it less expensive for the sender and also consumes less space on the blockchain. So essentially batching transactions is beneficial for both the users and the Bitcoin network.
If you have two or more transactions that you want to send but you’d like to spend less on fees then you can batch transactions. Of course there is the lightning network which you can use for faster and near zero fee payments. But that’s not often going to work especially for larger entities.
Back then when Bitcoin mempool gets congested the community was looking for ways to use the block space more efficiently. Since batching packs as many transactions as possible into the limited block space available on Bitcoin; combining multiple outputs into a single transaction have become a practice for heavy users.
Transaction batching is often done by large players such as exchanges, mining pools and payment processors. The main reason businesses batch transaction is to pay less on fees and to use Bitcoin in a better way. Since often entities have many transactions to process they cluster multiple outputs into a single transaction to save block space, and fees. Not only space and fees but also time.
Anyways for everyday purposes normal Bitcoiners will not take the additional effort of batching transactions. For most individuals unbatched transaction just works fine.
Why exchanges batch transactions?
How often have you withdrawn money from exchange? Upon looking up the transaction Id on block explorer you’ll observe how your transaction contains 1 address (1 input) having multiple outputs or addresses.
For example check out this transaction that has 1 sender and 51 recipients: https://blockchair.com/bitcoin/transaction/506c19f7748d8de0a8a34db84976bcae0f008ff242a0ca3c7cfe75e8f9fc7557
If you ever notice your transaction having so many recipients when sending money from exchange; then it means the exchange basically combined multiple Bitcoin payments into a single transaction and has sent money to all the different people at once. One sender address with different amounts being sent to many other recipient address in addition to your address. You’ll see all the addresses that have received payment in the same transaction. You don’t know who the recipients are, but you you can tell they have also received BTC from the exchange same as you.
Most popular exchanges such as Bybit, Binance, Kraken, FTX, Coinbase and even Coinbase pro does batch transactions. They perform multiple payments at ones because their service is large enough and many users often request withdrawal at the same time. Batching transaction works by packaging up many customer send requests into a single larger transaction rather than creating a new separate small transaction for every single request. Its more block space efficient and reduces the load that exchanges puts on the Bitcoin blockchain. It also allows the service to reduce their cost per withdrawal.
By batching transaction exchanges save a great amount in transaction fees. Like traditional payment systems transactions on the Bitcoin network also require fees. This is network processing fee that goes to the miners. Miners normally prioritize transactions with higher fees. Now think of sending 100s of payments each individually, rather than sending them in a single transaction. Batching Bitcoin transactions help exchanges save a great percent in transaction fees as this significantly reduces the daily transaction count.
This scaling technique of batching payments simply makes Bitcoin more usable. Today most exchanges use payment batching. Also many wallets does have this build in feature that allows users to batch payments.
How does this work?
We hope you know how creating transaction and broadcasting transactions to the Bitcoin network work and how miners validate each transactions? Also we are assuming that you are familiar with the concept of change output / change address. We’ve discussed all of this previously. To know more check out these two posts: https://coinguides.org/bitcoin-change-address-output/ and https://coinguides.org/confirmations/.
Anyways here is how Bitcoin transactions work.
Sending Bitcoin transaction
Sending BTC is as simple as choosing the amount to send and deciding the address where it goes. You only need the recipient Bitcoin address to send Bitcoin. Simply copy paste the recipient’s BTC address in your Bitcoin wallet. Or if you are using mobile wallet you can scan the QR code of the address you want to send BTC to.
IMPORTANT: Transactions on the Bitcoin network are irreversible. If you send BTC to the wrong address, then most likely you’ll never see your BTC again.
Like you, there are many who are broadcasting their transaction to the Bitcoin network. The network process all transactions and packs them into a block. Miners verify each block of transactions and adds them to the end of the blockchain. Now each block only has a fixed capacity and is created every 10 minutes on average. This limited block space and increased demand for transaction (during peak network traffic) often leads to high fees.
Bitcoin transactions incur a small fee and is paid to the miners that verify and confirm them. Each transaction is made up of data (measured in bytes) and the fees are measured in Satoshi/byte. Those transactions with higher fees are often picked first by miners. They prioritize transaction fees so higher the fee your transaction is more likely to be included in the next block.
If your transaction is more complicated meaning if it involves more data then it can get expensive. Its not that higher value BTC transaction consume more data but the number of inputs and outputs that matter.
UTXO – Transaction Outputs and Inputs
Bitcoin uses UTXO model. UTXO stands for Unspent Transaction Output which is the fundamental building block of a bitcoin transaction.
In Bitcoin there is no such thing as balance. Only your wallet shows balance for your Bitcoin address or account. But actually users have no balances but UTXOs. UTXO are indivisible chunks of Bitcoin that are locked to specific owners. UTXOs are recorded on the blockchain and each UTXO is recognized as currency units.
Think of it as $1, $10, $50, $100 bills. If an user want to transfer money the wallet selects specific UTXOs as inputs that is needed as amount for the transfer. It selects number of UTXOs as inputs that is equivalent to the sum the user needed to transfer. The chosen amount goes to the recipient which is the output. If there is a change in the transaction then the change output which is the difference amount goes back to the sender.
Now why are some Bitcoin transaction more expensive than others? Virtually a Bitcoin transaction can have unlimited inputs or outputs. A normal unbatched transaction will have one input, one transactional output and one change output. If the transaction is more complicated containing more inputs and outputs then it can get expensive. Because more inputs and outputs involve more data, and more data means the transaction will consume more bytes taking most of the block space and so the transaction will be more expensive.
Use-cases / benefits / cons of transaction batching
Benefits of Batching Bitcoin Transactions – Batching reduces the number of transactions by aggregating hundreds of single transfers. A single transaction with multiple outputs occupies less space in a block than each being processed individually. Batched transaction minimizes consumer transaction fees. And also reducing the maximum number of unspent BTC in your wallet.
However the downside is reduced privacy. Transaction batching is an effective way to reduce fees but the downside is lack of privacy. For example if you are making a payroll in a batched transaction then every employee of your company will get to know other employees’ salaries. So if you are thinking of batching payments then make sure privacy is not affected.
Also with batched transactions users will not be able to fee bump their batched payments. This is to prevent users from wasting node resources.
Anyways remember that not every payment should be batched. Payment batching is only greatly beneficial for high frequency senders such as a mining pool or an exchange. Individuals who also make frequent transfers can batch payments. They can include an almost unlimited numbers of outputs to different people in the same transaction. Only a high frequency spender can save largely on transaction fees.
For lower frequency spenders, payment batching is not necessary. However rarely you might wish to make different payments at the same time. For example renewing your domain, paying for the server, paying your monthly VPN bill etc. In this case you can send batched transaction. The overall fee for the batched transaction will usually be higher than the normal single payment transaction. Because it consumes more bytes than a normal unbatched payment. However you’re still saving in fees compared to several separate normal single payments.
How to send BTC to multiple addresses in one transaction?
Looking to send BTC to multiple addresses by paying a one time fee. It doesn’t matter whether you have 10 addresses or 50+ addresses you need to payout to. There is no max amount on number of people or addresses that you can send BTC in a single transaction. There is only a size limit for a transaction and you can have as many outputs/recipients as you want as long as your transaction size stays below the 1MB limit. Do note that the transaction fees are also proportional to the size of your transaction. So every output you add will also add to your fee making your transaction expensive.
So how can I send BTC to all the different addresses at once without having to pay one at a time and fee for each? Most desktop and mobile wallets supports this feature that makes it possible to construct batched transactions. Batching also works with multi signature wallets. Even some of the lightning wallets such as Blue wallet has send to many or transaction batching feature. Here let’s see how to batch payments using Bitcoin core and Electrum wallet.
Electrum Bitcoin wallet – Payment batching
Batching payments in Electrum is simple. Open Electrum and navigate to Tools → Pay to many. A popup window will now open telling you how to send BTC to multiple addresses.
You have to “Enter a list of outputs in the ‘Pay to’ field. One output per line. Format: address, amount. You may also load a CSV file using the file icon”
Or you can also just use the send tab which you normally use for sending payments. You can technically switch between pay to single address mode and pay to many address mode without using the Tools → Pay to many option.
Go to send >> and in pay to field just hit enter which will make it a text area. Now all you have to do is insert addresses and amount one by one in the following format:
address1, amount (hit enter)
address2, amount (hit enter)
Address3, amount
You can insert as many addresses with different amounts you want. The “Pay to” field should look like this:
The amount field will be automatically filled in when you are paying to many. Also if you want you can change the unit of amount displayed in your electrum. By default it is mBTC. If you want you can switch to BTC or Sats by changing it in the settings. Go to Tools → Preferences → General → Base unit.
Also the fee is paid per transaction and not per address or transaction output. With bundled transaction you only pay once even if you are sending money to multiple addresses. You can review and also adjust the fee for your batched transaction.
Adjusting the Fee in Electrum: Before signing Go to Tools → Preferences → Transactions and check the box Dynamic fees feature. Also check use Replace-By-Fee and Advanced Preview option. You can review and adjust the fee before sending the transaction. Once all the outputs and amounts are correct click send to broadcast the transaction.
Importing CSV file: Using your own custom software you can generate a CSV (comma-separated-values) file with the list of addresses and amount to send. Then you can import the CSV file by clicking the directory icon on the send tab which will import all the address and the amount. This is easier when you are making a big transaction with lots of small amounts.
Bitcoin core – Send to many address
Using Bitcoin core client you can create a transaction sending coins to many addresses in the same transaction. Open Bitcoin Core and go to send tab. On the “Send” tab you’ll find “Add Recipient” button at the bottom.
Click on “Add Recipient” as many times you want until you have a form for each recipient (enough outputs for your desired transaction).
Then start entering in all the addresses one by one and enter all the corresponding amounts to be sent. Input the first address and the amount to send. Click the Add Recipient button and enter the second address and amount for the 2nd output. Then click the Add Recipient button again, and enter the third address and amount for the third output.
Lastly adjust the fee and click send. All your request will be sent in a single transaction. However on recent transactions tab it’ll show multiple entries but all having the same transaction ID.
RPC console
You can also send to many using JSON-RPC command, which will be more useful when doing automated payouts to multiple addresses.
Open Bitcoin QT and navigate to help >> Debug Window >> Console.
Now you can batch payments using the `sendmany` RPC-JSON command:
sendmany " '{ "address1" : 0.1, "address2" : 0.2, "address3" : 0.3 }'
Insert the following command like this for example:
sendmany ‘’ ‘{“bc1qazcm763858nkj2dj986etajv6wquslv8uxwczt”: 0.12, “1FeexV6bAHb8ybZjqQMjJrcCrHGW9sb6uF ”: 0.22}’
By mistake if you use the same address twice or more in the JSON object then you’ll get the following error: “Error trying to send payments with RPC sendmany”.
Be careful not to mess up the address and amount when sending to many. That’s it! This is how you create one transaction with many outputs and this is all you need to know multiple recipient transaction.
Related Post: How to send Bitcoin from specific address in Electrum and Core wallet.