Fail with error 'SafeERC20: ERC20 operation did not succeed'

I try to withdraw matic tokens from my smart contract, that I deployed on mumbai testnet.
My withdraw functions looks like this:

function withdrawOnlyOwner(address token) public onlyOwner {
        IERC20 token_transfer = IERC20(token);
        uint256 transfer_amount = balance(token);
        require(transfer_amount > 0, "Balance too low");
        SafeERC20.safeTransfer(token_transfer, owner, transfer_amount);
        emit Withdrawal(owner, transfer_amount);

balance is a public function that works correctly, I get the balance of the token I put the address in.

If I run the .js code snippet to withdrwa all funds from the contract, the code works correctly. But I do not get the tokens and if I do have a look at the transaction [here].(
Does someone have an idea what is going wrong here?

Dear @Dani92
If possible, could you share whole codebase of your smart contract?
Kind regards.

Hi, welcome to the community! :wave:

I am not sure for your Matic token, but is it an original coin, just like ETH, use it as gas fee, or a token, just like DAI? I tend to think it is just like ETH, so maybe you can not use SafeERC20.safeTransfer, just recipientAddress.transfer(amount)

Yes it is the main token on polygon (0x0000000000000000000000000000000000001010). It should be the same like eth on ethereum. But why should this not work with safeTransfer? Thats what I don't understand.

What is balance(token) ?