title: I am trying to execute a swap on Pancakeswap using web3, but I get an error when calculating transaction cost
body: <p>I am new at ethereum development and I am working on a simple script to execute swaps using Pancakeswap. Everything seems to be working well up to the point where I am building my transaction and calculate the tx-cost. I am using the UniswapRouterV02 abi create my Pancakeswap contract. The code:</p>
  <p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
  <div class="snippet-code">
  <pre class="snippet-code-js lang-js prettyprint-override"><code>const init = async () =&gt; {
  
      const [WBNB, BUSD] = await Promise.all(
          [addresses.WBNB, addresses.BUSD].map(tokenAddress =&gt; (
              new Token(
                  ChainId.MAINNET,
                  tokenAddress,
                  18
              )
          )));
  
  
      const pair = await Fetcher.fetchPairData(WBNB, BUSD, provider)
      const route = await new Route([pair], WBNB)
      const trade = await new Trade(route, new TokenAmount(WBNB, tradeAmount), TradeType.EXACT_INPUT)
      const executionPrice = trade.executionPrice.toSignificant(12)
  
      // Correct prices; everything seems correct up until here
  
      const slippageTolerance = new Percent('50', '10000')
  
      const amountOutMin = trade.minimumAmountOut(slippageTolerance).raw
      const path = [WBNB.address, BUSD.address]
      const to = MY_ADDRESS
      const deadline = Math.floor(Date.now() / 1000) + 60 * 20
      const value = trade.inputAmount.raw
  
      // Correct prices everything seems correct up until here
  
      const pancakeSwap = new web3.eth.Contract(
          abis.uniswapRouter.abi,
          addresses.PANCAKE_ROUTER //'0x05fF2B0DB69458A0750badebc4f9e13aDd608C7F'
      );
  
      let tx = pancakeSwap.methods.swapExactTokensForTokens(
          tradeAmount,
          web3.utils.toBN(amountOutMin.toString()),
          path,
          to,
          deadline
      )
  
      const [gasPrice, gasCost] = await Promise.all([
          web3.eth.getGasPrice(),
          tx.estimateGas({from: admin}),
      ]);
  
  
      console.log(`gasPrice: ${gasPrice}`)
      console.log(`gasCost: ${gasCost}`)
  }
  
  init()</code></pre>
  </div>
  </div>
  </p>
  <p>The price calculation for the swap returns correct prices. However when I try to calculate the transaction costs the following error is thrown:
  <strong>Error: Returned error: gas required exceeds allowance (44038122) or always failing transaction</strong></p>
  <p>Any help would be greatly appreciated, please let me know if more of my code should be clarified!</p>