user102059: I am making an app, and I want my users to deposit BTC coin to my address which is an exchange address (I don't have the private keys).
How can I know which user made which transaction?
I have a way, which is to add the numeric user ID to the amount , for example if an user wants to deposit 100.00 BTC coin , and the ID is 158769, I can add the ID in the amount like this: 100.0000158769 and make it as a QR-code so the user should deposit the exact amount so I can know that he made this transaction.
But is there any other way to do it , any idea?
Thanks in advance

user7272: Your proposed approach is not practical:

Users might change the amount, or omit the fractional part
The fractional part might represent significant value - a user with an ID of 1234567 will have to pay a minimum of 0.01234567, well over a hundred USD at the moment
If users are withdrawing from an exchange or some other wallet without much control over the transactions, they might not be able to set the value beyond the first four decimals. Additionally, some custodial wallets batch payments, combining multiple outputs to one address into a single output with a summed value.

Pieter is right, the only reasonable way to approach this is to assign unique addresses for each user, and forwarding funds from there to your trading accounts. It is important to control the keys at the point money flows into your system. It is not unheard of exchanges to update their deposit addresses, either as part of normal key rollover or due to a hack. It is a lot easier for you to change a single forwarding address in your system, than to convince all of your users to update it.
All of your user addresses can be in a single wallet - managing the funds and forwarding them to a trading service will be no different from any other transaction you make. Any transaction fees incurred are simply the cost of doing business, and you can decide if you wish to pass those on to users or absorb them.

user208: You give each customer a different address. That is the only reasonable approach.

102059: <p>I am making an app, and I want my users to deposit BTC coin to my address which is an exchange address (I don't have the private keys).</p>

<p>How can I know which user made which transaction?</p>

<p>I have a way, which is to add the numeric user ID to the amount , for example if an user wants to deposit 100.00 BTC coin , and the ID is 158769, I can add the ID in the amount like this: 100.0000158769 and make it as a QR-code so the user should deposit the exact amount so I can know that he made this transaction.</p>

<p>But is there any other way to do it , any idea?</p>

<p>Thanks in advance</p>
 7272: <p>Your proposed approach is not practical:</p>

<ol>
<li>Users might change the amount, or omit the fractional part</li>
<li>The fractional part might represent significant value - a user with an ID of 1234567 will have to pay a minimum of 0.01234567, well over a hundred USD at the moment</li>
<li>If users are withdrawing from an exchange or some other wallet without much control over the transactions, they might not be able to set the value beyond the first four decimals. Additionally, some custodial wallets batch payments, combining multiple outputs to one address into a single output with a summed value.</li>
</ol>

<p>Pieter is right, the only reasonable way to approach this is to assign unique addresses for each user, and forwarding funds from there to your trading accounts. It is important to control the keys at the point money flows into your system. It is not unheard of exchanges to update their deposit addresses, either as part of normal key rollover or due to a hack. It is a lot easier for you to change a single forwarding address in your system, than to convince all of your users to update it.</p>

<p>All of your user addresses can be in a single wallet - managing the funds and forwarding them to a trading service will be no different from any other transaction you make. Any transaction fees incurred are simply the cost of doing business, and you can decide if you wish to pass those on to users or absorb them.</p>
 208: <p>You give each customer a different address. That is the only reasonable approach.</p>
