I always having issue with sending token. when I send token even transaction get confirm, the token remain in my wallet and I lost only ether on fees! what wrong with ethereum!
There might be Many reasons. One of them is using error handling patterns.
1.assert() 2.require() 3.return() 4.revert() When there is throw while executing the contract, the gas used while executing, will loss. It means while executing , fee takes will and will not be recovered. Make sure that which handling method will be appropriate for that specific purpose .