Cancel unconfirmed transaction

Hi all,

Sorry for the dumb question but I searched few good hours and no answer found from mighty google.

I had some ZECs in one T-address and, using the Zcash Swing Wallet (ZSW), I tried to transfer them to another address that’s connected Jaxx wallet. When asked for a transaction fee by ZSW, I set it to 0 (zero). Pretty idiotic, I’ll give you that… I know now that without a transaction fee nobody will confirm my transaction for free, but, by then, I did not know that and tried to keep my “wealth” intact.

Now it’s already one week since this transaction was started, but the ZECs did not arrive in Jaxx and they are not in ZSW either. The transaction itself says “unconfirmed” and in the details I can see that 0 out of 6 confirmations were received (ie none).

So, how can I cancel this transaction so that I can see the ZECs back into my ZSW wallet? I looked for options in zcashd client as well as in ZSW but none found.

Thank you in advance,

1 Like

Hi, did you find the solution?

The same problem happened.

Particularly with the Jaxx wallet, it might be a good idea to use a block explorer to confirm the balance of the receiving address.

Yes, in a way, I found a solution:

  • I have installed Zcash Swing wallet on another computer (be it a virtual machine); I’ll call it the new instance and the original installation: old instance.
  • export from old instance the private key and import it (import one private key) to the new instance.
  • delete any auto-generated T-addresses from new instance, if you don’t want them
  • wait until block chain is synced and check that you have the right balance in your T-address (it makes sense to have the full amount in the new instance I guess: no confirmation received in old instance means block chain ledger does not know about your transaction; only old instance wallet knows it.)
  • shut down old instance, backup its wallet.dat and then delete it.
  • copy wallet.dat from new instance to old one; make sure permissions are the same. (Either this, or export/import the wallet from new instance to old one)
  • start again the old instance and you should have the money there even after syncing 100%
  • delete the new instance completely from that other computer.

Please don’t ignore making backups so that in any moment you can go back to the current state (even if the current state means that you money are not confirmed)

Hope this helps,

1 Like

This is an interesting method. Thanks for sharing. I wonder what’s happening in the background here specifically… is it because mempool no longer has the unconfirmed txn?

TryIng this method in a quiet radical way:
Since 24h there is stuck in a tx from winzec to kraken as UNCONFIRMED!!!
So after waiting and nothing happens I decided to backup my wallet make a list of my private keys and delete the whole winzec software and all of its components in app data.
Now I’m reinstalling the GUI and syncing with the blockchain.
When it’s 100 percent synced I’ll import my private keys and will see if the dead tx is cancelled.
On mighty Google I’ve often seen people telling about this problem but nobody made an solution… maybe my way works… I’ll report😆

Update: my risky trubbleshooting of the unconfirmed tx problem has worked well. After importing the private key of the stucking address first there appeared an error. Repeated the import again error BUT the adress has been imported succesfully :tada:!
The best is that the uncinfirmed tx has been disappeared.
For going save I increase mining fees on 0.0005 :zcash: and following tx’s work well !


I’ve done some more digging around this as it keeps coming up. It seems the above is an elaborate way of clearing wallet.dat of the transaction info and there is a -zapwallettxes flag to accomplish this.

This link was very informative: bitcoind - How can an unconfirmed transaction be removed from the memory pool? - Bitcoin Stack Exchange

As befits its name, the memory pool is kept in the process’s memory. So if you quit and restart bitcoind, the memory pool will be cleared. However, this may not fix your problem; unconfirmed transactions relating to your own wallet addresses are stored not only in the memory pool, but in wallet.dat, so a restart won’t clear them. To accomplish that, you can start bitcoind with the recently added -zapwallettxes option. This will cause bitcoind to forget all transactions associated to your addresses, and rescan the block chain to reconstruct them. In particular, any unconfirmed transactions will be forgotten and not reconstructed.

I wonder if stopping then restarting with zcashd -zapwallettxes would achieve the same result as above. Note there is a mode value for the zapwallettxes i.e. -zapwallettxes=2 and not entirely sure how that affects things but seems the value of 2 drops everything associated with the tx.

For WinZec and the like I wonder if simply going to “program files/zcash4win/app” and then running zcashd.exe -zapwallettxes=2 would achieve the same as above?

1 Like

Hello from Zcash Company. There can be multiple reasons why your transactions has not been mined. For further information, check out this entry in our FAQ: Frequently Asked Questions - Zcash

Right now, there are no great ways to “cancel” a transaction–we’re sorry about that, and we know it’s a problem. We’re working on it–after the Overwinter network upgrade (June 2018; Overwinter - Zcash), all transactions expire after ~10 minutes/20 blocks, so that you can try your transaction again with some modifications.

I hope that the suggestions in here have worked out for you.