Correct; the deposit address they give you, is not actually 'your address', in the way that you don't have control over it. You can only send to it, not take anything back out. Whatever you send there will be credited to your account on this website / platform, but you rely on it working, being reachable, their system security and their honesty to be able to get those funds back out.
This is exactly my question, how can they create a virtual address for a user and receive the fund?
Basically, they are marking public addresses based on a private key, but how does it possible?
What do they use or are there any services or API that I can use?
What I'm trying to do is, create a mobile app to provide some services to my users, but to allow users to pay their fees, I need to create a unique address (USDT TRC20, USDT ERC20, BTC, ETH, Tron, and...) for each user.
I could use some websites like coinpayments but it's a third party and I don't want my users to use third-party services.