Bad-txns-coinbase-spend-has-transparent-outputs or Desktop Wallet says not enough funds when there are

This is an issue of there being coinbase (mined) funds mixed with regular funds. At the moment, Electrum can see coinbase BTCP, but cannot send it as it cannot send to shielded addresses. In the desktop wallet, people often mix coinbase with regular BTCP, which will cause this same issue. It will also be caused when claiming BTCP from the miner program with a wallet address that already has coinbase funds.

So, how do you fix it? You will have to download and run the daemon/client of the wallet to get the easiest fix. Download links: Windows, Mac, and Linux. Linux users will have to compile from source following the instructions given.

For Windows users (Mac coming soon):

  1. Download the wallet and unzip/install in your location of choice. For this tutorial, we will assume you placed it in C:\BitcoinPrivateDesktopWallet
  2. Make sure you have installed the latest Java
  3. Navigate to the folder where you extracted the wallet files.
    1. Run BitcoinPrivateDesktopWallet.jar
      1. Allow to sync, can take up to 12 hours
  4. If your coinbase funds are in electrum, you will need to import your private key:
    1. Go to Electrum, press view > show addresses
    2. Right click the address where your coinbase funds are and press "private key" and it will be copied to clipboard
    3. Go to the Desktop Wallet and press Wallet > Import one private key. This could take up to 30 min.
  5. Once it has imported the private key and fully synced, you should see your funds in the wallet.
  6. Next, open cmd.exe via the start menu
    1. Use the following commands in order
      1. btcp-cli.exe z_getnewaddress
      2. btcp-cli.exe z_shieldcoinbase "*" z-address-from-above fee
        1. where "z-address-from-above" is the address you just generated in the first command and you can set the "fee" as you please (say 0.00005)
        2. DOUBLE CHECK ADDRESS IS CORRECT OR YOU WILL LOSE YOUR FUNDS.
      3. All of your coinbase funds should have moved into your z-address. You can now send them to your desired b-address or leave them here.