When you send bitcoin, you pay a fee depending on the amount of data such a transaction needs. There are several ways to make your payments cheaper, and you usually get better privacy at the same time.  

1. Use more modern addresses

Transactions are gradually being improved to be more compact. For the lowest fee, your addresses today should start with the characters bc1. The Trezor Suite uses such addresses automatically. If you're still using a legacy account, upgrade to a newest one called Taproot.

To add a new account, first click on the green plus sign in the top left next to the My accounts description.

2. Send to multiple recipients at once

Sending to two people separately is simply more expensive than sending to them at the same time. So if you're not in a hurry to pay, you could spend a month collecting recipients and then pay them all at once.

In Trezor Suite, add more and more recipients by clicking Add Recipient

3. Offer low fees

Don't be afraid to offer the lowest fee, i.e. 1 sat/vB. You can easily increase the fee, on the other hand, you can't decrease it.

You can increase the fee in the Suite by clicking on Bump fee next to the pending transaction and then confirm with Replace transaction

4. Do not create change

When you send a bitcoin, you will probably be left with change. The wallet will automatically send this change to your next available address. However, you can specify that destination too.. Any leftover can be deposited into the aforementioned newer account or used to charge your Lightning wallet.

Select the Coin control option when sending the transaction and manually select which coins you want to use. Click on Send max at the recipient that should receive the rest of selected coins.

5. Try not to have too many coins

Personally, I try to keep about as big coins as I might want to use in the future. Again, so I don't end up with unnecessarily small coins. You can even send coins to yourself so that you have the best distribution. Again, you give a very small fee, ideally bundling it with other transactions.

I like to use mempool.space for an overview of current fees

6. Paying with coinjoin

You can combine your transaction with other people's transactions and save money together. Currently I don't know of a project that has this functionality nicely set up for the average user. However, it is changing fast.. let me know if you are interested.

Hundreds of inputs and hundreds of outputs aggregated in one coinjoin transaction

7. Payment by lightning

Sure thing... With the Lightning network you can often bring the fees down to zero... However, nowadays it is still useful to be able to use the so-called on-chain... You usually need to get the funds to the LN somehow...


For those of you running your own LN nodes:

8. Batch Opening Lightning Channels

Some tools make this quite simple these days! I like to use LNDg, but it can also be accomplished using good ole lncli. Rather than opening channels one at a time, paste the pubkeys you're interested in into a document for later. Once you have a handful of nodes you want to connect to, do it all at once with a batch open.

9. Collaboratively Opening Lightning Channels

The open-group-channel command in bos can save you a some satoshis, and get you inbound liquidity! It takes a bit of coordination out-of-band via chat, but the software automatically handles all the handshaking necessary to open a group of channels all in one transaction. Here is an example of a group-opened channel with 7 participants with a fee of 7,850 sats. This comes out to ~1121 sats per participant. Still a little high due to the 5 sat/vbyte feerate, but quite efficient otherwise! open-balanced-channel will do the same, but for 2 participants. Note, the transactions aren't likely to be any smaller, you're just efficiently getting inbound and outbound liquidity in a single transaction/channel rather than two.

On CLN, you can easily batch open channels with the multifundchannel command; every modern CLN has this command.

fwiw batch opens fee savings are a function of how many inputs + change addresses are eliminated/reduced; it’s possible that a batch open doesn’t save as much as you were hoping due to a large number of inputs.

Involving others in the open has negligible fee savings, since everyone still needs at least one input + one output. I wouldn’t count collaborative opens as a great fee savings technique.

This is super cool. What tools are you using for that? Is there something that could be used by broad audience already?

this is quite helpful.... can you explain point 5?

The idea is to try to write as little data as possible. If I have a lot of coins for some reason, I can cosolidate them in times of low fees - combine them into fewer coins so I don't have to write so much data in the future. Analogously, in the reverse situation, I may want to split one coin into several. Ideally so that I can easily consume the whole thing in the future as described in point 4.

Does it make sense to you?

One could also make a single transaction out to a series of smaller coins with a doubling sequence, so, half in one, half of the half in the second, etc, to one's taste, and then one will be able to make a payment from it at exact precision, with a small set of coins. The optimal efficiency pattern is 2s, 3s and 5s for the smallest coin set for any given payment amount, this gives you the equivalent of base 60 to divide things up perfectly in quarters, sixths, tenths, wha;tever you need.

Thanks a million!

Also sell goods and services for Bitcoin.

That way you don't have to pay for the transaction.

I think it’s worth mentioning that a 1 sat/vB fee might sit unconfirmed for a long time, depending on the state of the mempool. So if you require any sense of urgency, keep that in mind.

Also, run your own node, and your own mempool viewer, so you can verify transactions and the state of the mempool yourself

cool article, thanks