This does not allow me to specify an amount of tokens, so I think you have presented a solution to transfer all token in the contract to a wallet and not an amount to the user?
You are correct I am not trying to transfer ERC/NATIVE token, I am trying to transfer an IERC20 token, address(this).balance will not work, and I am in doubt about the edited solution because how do I increase allowence from the contract to the external IERC20 token? Or is this not a problem?