<p>Yes, each UTXO needs to be spend individually, regardless of which address they were received to. I think it would be appropriate to read this advice as &quot;at least one address per customer&quot;. Having separate addresses per customer will make it much simpler for you to track which customer's account needs to be credited than having only a single address for your service altogether. However, if you're not in a scenario where you're just taking deposits for a user, but e.g. selling products or services, I would even recommend to use a separate address for each payment process, which would make it trivial to discern not only the customer but also which invoice got settled.</p>
<p>Today, wallets generally use hierarchical deterministic derivation to generate many addresses from one master secret. Under the hood, each address is associated with a different private key, but all private keys can be regenerated from the master secret. This allows you to track many addresses with a single wallet, but simplifies backups and secret management.</p>
<p>Address reuse is terrible for both your and your users' financial privacy and has no palpable advantages when you start to consider the additional overhead of figuring out who paid with which transaction. I can only vehemently dissuade from using the same address for selling to multiple customers. If you get a lot of volume, it will be trivial for people to claim foreign payments as theirs and you will lose a lot of time investigating and acquiring proof from the actual customer. Using separate addresses may be more work in the beginning, but just gets rid of this whole class of issues.</p>

CC BY-SA 4.0
2021-01-15T00:03:37.993Z
Great response, upvoted and accepted. I agree that unique addresses is the way to go with Bitcoin. I just have one question: You mentioned that "If you get a lot of volume, it will be trivial for people to claim foreign payments as theirs and you will lose a lot of time investigating and acquiring proof from the actual customer" this statement implies that it is in fact "possible" for a customer to prove they sent certain funds  despite multiple customers claiming the same thing. What "proof" can a customer provide (after the fact) that would be sufficient to prove he in fact sent those funds?
S.O.S
CC BY-SA 4.0
2021-01-15T01:02:19.577Z
Some wallets are able to sign messages with private keys they possess. You could challenge the payer to sign a message with the private key that was used to sign for one of the inputs. Unfortunately, not all wallets have this capability, especially online wallet services don't usually provide that functionality.
Murch
CC BY-SA 4.0
2021-01-15T19:24:13.333Z
Additionally, there is no provision to transfer these sort of challenges or their responses on the network, so you'd have establish an out-of-band communication channel to get that information in the first place. It's just one big hassle. Using distinct addresses for different payment processes is much more straightforward.
Murch
CC BY-SA 4.0
2021-01-14T17:47:15.663Z
2021-01-14T18:06:02.810Z
2021-01-14T18:06:02.810Z
Murch
<p>I found the following statements about Bitcoin on the <a href="https://ethereum.stackexchange.com">Ethereum SE</a>:</p>
<blockquote>
<p><a href="https://ethereum.stackexchange.com/questions/27826/is-creating-new-account-per-unique-user-ok-in-ethereum?rq=1">When using Bitcoin</a> one can generate new address per user of service
and save pair (address -&gt; userId), so it is always obvious which
specific user sent coins.</p>
<p>Also, all these coins are stored in the wallet as UTXO, so it is easy to send them to another address paying fee once</p>
</blockquote>
<blockquote>
<p><a href="https://ethereum.stackexchange.com/questions/79518/generating-multiple-deposite-address-for-one-account?rq=1">I need to generate different</a> unique deposit addresses for each user,
so they can send funds to their accounts while I can keep track of how
much each user deposited. This is fairly easy in other cryptos such as
bitcoin</p>
</blockquote>
<p>Are these statements true?</p>
<p>If so, can someone explain why it &quot;is fairly easy&quot; to do this in Bitcoin&quot;? Doesn't Bitcoin also require UTXO Sweep when consolidating BTC from many addresses to one address? I was under the impression that BTC does not allow multiple public addresses corresponding to a single private key?</p>

<bitcoin-core><transactions><transaction-fees>
Keeping Track of User Deposits with Bitcoin
S.O.S
# Keeping Track of User Deposits with Bitcoin

(Asked by: username_0 on 2021-01-14)

I found the following statements about Bitcoin on the [Ethereum SE](https://ethereum.stackexchange.com):

> [When using Bitcoin](https://ethereum.stackexchange.com/questions/27826/is-creating-new-account-per-unique-user-ok-in-ethereum?rq=1) one can generate new address per user of service
> and save pair (address -> userId), so it is always obvious which
> specific user sent coins.
>
> Also, all these coins are stored in the wallet as UTXO, so it is easy to send them to another address paying fee once

> [I need to generate different](https://ethereum.stackexchange.com/questions/79518/generating-multiple-deposite-address-for-one-account?rq=1) unique deposit addresses for each user,
> so they can send funds to their accounts while I can keep track of how
> much each user deposited. This is fairly easy in other cryptos such as
> bitcoin

Are these statements true?

If so, can someone explain why it "is fairly easy" to do this in Bitcoin"? Doesn't Bitcoin also require UTXO Sweep when consolidating BTC from many addresses to one address? I was under the impression that BTC does not allow multiple public addresses corresponding to a single private key?

**Tags:** bitcoin-core, transactions, transaction-fees


---

## 1 answers

### Answer by username_1 on 2021-01-14. Score: 3 | Accepted answer

Yes, each UTXO needs to be spend individually, regardless of which address they were received to. I think it would be appropriate to read this advice as "at least one address per customer". Having separate addresses per customer will make it much simpler for you to track which customer's account needs to be credited than having only a single address for your service altogether. However, if you're not in a scenario where you're just taking deposits for a user, but e.g. selling products or services, I would even recommend to use a separate address for each payment process, which would make it trivial to discern not only the customer but also which invoice got settled.

Today, wallets generally use hierarchical deterministic derivation to generate many addresses from one master secret. Under the hood, each address is associated with a different private key, but all private keys can be regenerated from the master secret. This allows you to track many addresses with a single wallet, but simplifies backups and secret management.

Address reuse is terrible for both your and your users' financial privacy and has no palpable advantages when you start to consider the additional overhead of figuring out who paid with which transaction. I can only vehemently dissuade from using the same address for selling to multiple customers. If you get a lot of volume, it will be trivial for people to claim foreign payments as theirs and you will lose a lot of time investigating and acquiring proof from the actual customer. Using separate addresses may be more work in the beginning, but just gets rid of this whole class of issues.

> **Comments:**
> **username_0**: Great response, upvoted and accepted. I agree that unique addresses is the way to go with Bitcoin. I just have one question: You mentioned that "If you get a lot of volume, it will be trivial for people to claim foreign payments as theirs and you will lose a lot of time investigating and acquiring proof from the actual customer" this statement implies that it is in fact "possible" for a customer to prove they sent certain funds  despite multiple customers claiming the same thing. What "proof" can a customer provide (after the fact) that would be sufficient to prove he in fact sent those funds?  
> **username_1**: Some wallets are able to sign messages with private keys they possess. You could challenge the payer to sign a message with the private key that was used to sign for one of the inputs. Unfortunately, not all wallets have this capability, especially online wallet services don't usually provide that functionality.  
> **username_1**: Additionally, there is no provision to transfer these sort of challenges or their responses on the network, so you'd have establish an out-of-band communication channel to get that information in the first place. It's just one big hassle. Using distinct addresses for different payment processes is much more straightforward.  

---

