How can i get the estimate to transfer USDT from one account to another using web3js on BSC Smartcahin?

I am trying to build a code to transfer USDT from onw wallet to another using web3js vanilla Javascript. But sometimes it gives an error like low nonce but mostly it gives insufficient fund. Further reading on code i get an assumption that it is due to low balance for gas fees to complete the transaction below is the code i am using to get estimate gas but it is not accurate can anyone help me??

const currentGas = await web3.eth.getGasPrice();
    const requiredGasPrice = await web3.eth.estimateGas({to: toAddress});
    const gas = (currentGas * requiredGasPrice)*2;
    const nonce = await web3.eth.getTransactionCount(pubkey, 'latest');

I tried using higher gas fees sometime it works but i don’t know whta should be exact gas for n numbers of usdt to transfer as it varies.