In addition to illegal operations, transferring TRX/TRC10 to non-existent accounts also incurs a full penalty of the _fee_limit_. As users normally set the fee limit to 1000 TRX (max), this is a significant penalty and can be even more costly if the user attempts to retry the operations automatically.

# Penalized Contracts Examples

### Transferring TRX into a Non-Existent/Invalid Account

In the above example, _transAddr_ always fails and consumes the _fee_limit_. In the more common case of _transAddr2_, the developer should make sure _addr_ is pre-validated in either Tron-Web or some other existing address. Otherwise, the user pays for the _fee_limit_ penalty.

### Transferring TRX into Itself

Similarly, _transAddr_ always incurs the _fee_limit_ penalty. _transAddr2_ will fail the self-transfer case if _addr_ is the contract's address itself. _transAddr3_ protects against the self-transfer penalty but still suffers from the non-existent account problem above.

### TRC10 Token Transfer into a Non-Existent/Invalid Account

Similar to the TRX transfer above, if _to_ account does not exist, _sendBalance_ fails with a _fee_limit_ penalty. The self-transfer case _sendBalance2_ also incurs _fee_limit_.