Question: How can I get Bitcoin receive notifications with Bitcoin Core. I have tried the `walletnotify` and `blocknotify` options. `walletnotify` is fired two times when I send or receive bitcoins. And with `blocknotify` I have to perform below task to detect which account of the wallet has received bitcoin.

* Run `getBlock` command to get all transaction hash
* Run a for loop for each transaction hash to run `getTransaction` command
* If transaction hash belong to my wallet account, I save the receive transaction in my database.

Using `blocknotify` seems to be inefficient as it involves lots of RPC calls per transaction.

`walletnofity` executes twice for bitcoin send and receive.

I have also tried `ZMQ` but I got a response which is difficult to convert into desirable format.

So could anybody suggest some efficient way to get a bitcoin receive notification upon first confirmation?

Answer: 
I see a solution using [ZMQ](https://github.com/bitcoin/bitcoin/blob/master/doc/zmq.md).

[An example](https://github.com/bitcoin/bitcoin/blob/dac2caa371a1c65faf34966c85dbafc30a0c640a/contrib/zmq/zmq_sub.py) of using it is also available on Python.

By enabling ZMQ you can process network updates (blocks, new transactions) and select most relevant events accordingly. Also, some libraries to deserialize bitcoin blocks and transactions could be useful. If you work with Python, you can use python-bitcoinlib.
Not sure if this will be efficient enough for you, but when walletnotify is called it can pass along the txid it was called with. Then whatever program is executed, from walletnotify can do something like a decoderawtransaction using that txid and see if the blockHash field is filled in, and confirmations>0.

You can also use some intermediary program to prevent the primary program from being called twice. For example in bitcoin.conf have walletnotify call to something like 'checkconfirmed.py' . checkonfirmed.py can do the decoderawtransaction opreration described above, and only if confirmed will it call out to "finalprogram.py".