Well, the error-message transfer amount exceeds balance
says it all.
The entity executing this transfer doesn't hold a sufficient amount of tokens.
This entity happens to be your contract, so you need to make sure that your contract holds a sufficient amount of tokens before attempting to execute that function.