title: How can I swap BNB into another crypto currency using web3?
body: <p>I would like to use web3 to exchange BNB into other tokens via Pancakeswap, so I came across this code which seems to be correct:</p>
  <pre><code>import time
  import config as config
  from web3 import Web3
   
  PancakeABI = open('pancakeABI','r').read().replace('\n','')
   
  bsc=&quot;https://bsc-dataseed.binance.org/&quot;
  web3 = Web3(Web3.HTTPProvider(bsc))
  print(web3.isConnected())
   
  #My own address to swap from
  sender_address = &quot;YOUR OWN WALLET PUBLIC ADDRESS&quot;
   
  #This is global Pancake V2 Swap router address
  router_address = &quot;0x10ED43C718714eb63d5aA57B78B54704E256024E&quot;
   
  #always spend using Wrapped BNB
  #I guess you want to use other coins to swap you can do that, but for me I used Wrapped BNB
  spend = web3.toChecksumAddress(&quot;0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c&quot;)
   
  #This is your private key info
  private=&quot;YOUR OWN WALLET PRIVATE KEY&quot;
   
  #Print out your balances just for checking
  balance = web3.eth.get_balance(sender_address)
  print(balance)
   
  humanReadable = web3.fromWei(balance,'ether')
  print(humanReadable)
   
  #Contract id is the new token we are swaping to
  contract_id = web3.toChecksumAddress(&quot;THE Contract ID of the destination Token&quot;)
   
  #Setup the PancakeSwap contract
  contract = web3.eth.contract(address=router_address, abi=PancakeABI)
   
  nonce = web3.eth.get_transaction_count(sender_address)
   
  start = time.time()
  print(web3.toWei('0.02','ether'))
   
  pancakeswap2_txn = contract.functions.swapExactETHForTokens(
    1074184953676691292, # here setup the minimum destination token you want to have, you can do some math, or you can put a 0 if you don't want to care
    [spend,contract_id],
    sender_address,
    (int(time.time()) + 1000000)
  ).buildTransaction({
    'from': sender_address,
    'value': web3.toWei(0.02,'ether'),#This is the Token(BNB) amount you want to Swap from
    'gas': 250000,
    'gasPrice': web3.toWei('5','gwei'),
    'nonce': nonce,
  })
   
  signed_txn = web3.eth.account.sign_transaction(pancakeswap2_txn, private_key=private)
  tx_token = web3.eth.send_raw_transaction(signed_txn.rawTransaction)
  print(web3.toHex(tx_token))
  </code></pre>
  <p>The problem I have is that my BNBs are sent but they don't arrive on the wallet. So my BNB are like &quot;lost&quot;.</p>