I saw there are two type of function available, but I don't understand the difference. If another contract send to my contract for example $100 BUSD, how do I know when I received them?
I saw there are these two function:

```
fallback() external payable { }

receive() external payable { }

```

I have to do some logic when another contract send me a token, and I also need to know the address of the token that I received. Which of the two functions should I use?

Also, I have another question.
If I want to send BUSD/BTC/BNB etc from my contract to a wallet address, what's the difference between:

```
payable(_to).transfer(_amount);

```

and

```
IBEP20(tokenAddress).transfer(to, amount);

```

I'm on the binance smart chain, but I don't think there is any difference.

Thank you!