You have three Bitcoin payments to make today.
You bought something from an online shop, a designer has sent you an invoice, and you owe a friend some money.
You could open your wallet, pay the shop, and repeat the process for the other two. Three payments, three transactions, three transaction fees.
But why send them separately? Could you put all three into one transaction?
You can. It is called payment batching.
Instead of creating a transaction for each recipient, your wallet creates one transaction with a payment output for each of them. Everyone receives their own bitcoin, which they can spend independently afterward.
A normal Bitcoin payment often already has more than one output: one pays the recipient, while another returns the remaining bitcoin to you as change. Batching adds more recipient outputs to that same transaction.
What do you gain by putting them together?
Each transaction carries some overhead. Sending three separate transactions repeats some of it; batching lets the payments share it.
That can reduce the total transaction size and the fee you pay. You also prepare, sign, and send once, and all three payments confirm together.
For someone paying several invoices—or a company paying its employees—that is a useful convenience.
Several wallets offer this:
| Wallet | Multi-recipient sending |
| Ginger | Added to the Send interface in 2.0.27 |
| Wasabi | Added to the Send interface in 2.8.0 |
| Sparrow | Supported since 0.9.6, with a later Send To Many tool for lists and CSV files |
So everyone gets paid, you do less work, and you may save on fees.
There is a privacy trade-off, though: every recipient can inspect the whole transaction, including the other outputs and their amounts.
What else does the shop receive?
Your purchase costs 0.001 BTC. The designer’s invoice is 0.050 BTC.
To you, those are unrelated expenses. To the shop, they appear together.
The shop knows which payment is yours. When it opens the transaction, it sees another output worth fifty times its invoice.
It may have no idea who owns that address. It may not even know whether that output is another payment or change returning to you. Either way, your small purchase has arrived inside a much larger transaction.
That gives the shop information about the funds you could control at that moment. It does not reveal your entire savings or how much you have left afterward, but it can still change the picture you have presented of your finances.
A single payment can also expose a large funding coin or change output. Batching brings your other payment amounts into the same view, where a recipient can easily inspect them.
What happens when the recipients are colleagues?
Now imagine a company sending its monthly payroll in one transaction.
Each employee recognizes their own payment. They can also see every other output amount.
The addresses do not come with names attached. Some outputs may be difficult to interpret, including any change returning to the company. But if employees know this is the payroll transaction, they have a set of amounts to compare.
Is that larger payment somebody else’s salary? Why is it twice mine? Could it include a bonus?
Those questions can arise before anyone works out which address belongs to which colleague. Coworkers comparing their own payments could fill in more of the picture.
Separate salary payments would still be public Bitcoin transactions. Grouping them gives each employee a ready-made collection of potentially related amounts.
The company has saved on transaction fees while giving its staff a wider view of the payment run than their individual payslips provide.
What if the bitcoin already went through CoinJoin?
CoinJoin can make the earlier ownership trail harder to follow. An ordinary batch payment made afterward still exposes its new outputs and amounts.
The shop might struggle to determine where your bitcoin came from while clearly seeing the larger amounts beside its payment. Employees can still compare amounts in a recognizable payroll batch.
Wasabi also supports payments inside CoinJoin, which involve a different transaction construction with other participants. That is a separate workflow from making an ordinary batch payment after CoinJoin.
Which payments should travel together?
Batching can be a sensible choice when you are comfortable with recipients seeing the other amounts in the transaction.
A small purchase alongside a much larger private payment deserves a second look. So does a payroll run where compensation is intended to remain confidential.
Separate transactions remove the immediate shared-transaction connection. Their funding still matters: spending one payment’s change on the next can leave a visible trail between them.
Ginger’s batch-payment notice puts the issue plainly:
These payments share one transaction and can be linked to each other.
Before pressing Send, look at the batch from each recipient’s perspective.
You know why those payments belong together in your wallet. Consider whether everyone receiving one should get that wider view.
Disclosure: I’m an independent Bitcoin software developer focused on privacy.
Payment batching is definitely something that people don't talk about too often. About the only times I hear about it are in the context of exchanges processing withdrawals.
I can see some scenarios where batch payments make sense, especially if it helps to remove the need for a change output. On that note, someone recently suggested to me that wallets should include a "send change to my favorite project" button and in conjunction with payment batching, I could see this being really useful. Batch my monthly payments to get them close to the whole value of a some combination of utxos I hold, and then donate the leftovers.
I also haven't paid much attention to Ginger Wallet. You make me think I should give it a look again.
Change can definitely cause privacy issues. Both in Wasabi and Ginger, the wallet tries to avoid change by selecting coins in a combination that will eliminate the change or offers to "send a bit more" or "send a bit less" to avoid change. Donating also makes sense; I think it is possible right now manually. Or the third option is to use the small changes in a coinjoin transaction with the red coin option, which means that the wallet will only introduce one non-private coin per coinjoin round.