Keeping Track of User Deposits with Bitcoin I found the following statements about Bitcoin on the Ethereum SE:

When using Bitcoin 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.
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 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 &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?
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.
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.