"category" : "str",                  (string) The transaction category.
                                           "send"                  Transactions sent.
                                           "receive"               Non-coinbase transactions received.
                                           "generate"              Coinbase transactions received with more than 100 confirmations.
                                           "immature"              Coinbase transactions received with 100 or fewer confirmations.
                                           "orphan"                Orphaned coinbase transactions received.

Source: https://bitcoincore.org/en/doc/0.20.0/rpc/wallet/listsinceblock/

I get "send" and "receive", but what are "generate", "immature" and "orphan"? And why is Coinbase (the exchange?!) mentioned several times in core (no pun intended) Bitcoin Core functionality?!

Once again, there's nothing but cryptic, very short "descriptions" of this, leaving me (and supposedly many others) guessing wildly.


Coinbase transactions are the coin generation transaction of a block. They are the first transaction in a block. These are special transactions which do not spend any UTXOs and only create UTXOs "out of thin air". Hence UTXOs created by coinbase transactions are categorized as "generate".

Coinbase transactions are completely unrelated to the exchange named Coinbase. They named themselves after these special transactions.

UTXOs created by a coinbase transaction cannot be spent until they have more than 100 confirmations. This is known as the coinbase maturity period. While there are less than or equal to 100 confirmations, the transaction is considered to be "immature". Once there are more than 100 confirmations, the transaction and its UTXOs are considered to be "mature".

The reason there is a maturity requirement is because sometimes blocks do not become part of the main chain. These are referred to as stale or orphan blocks. To avoid issues where a transaction spends a UTXO from a coinbase of a stale block, the consensus rules require that enough blocks have been mined on top of the block with that coinase transaction such that it is extremely unlikely to be reorged out of the main chain. But for the coinbase transactions that are part of stale blocks, they are categorized as "orphan".


Coinbase: A special field used as the sole input for coinbase transactions. The coinbase allows claiming the block reward and provides up to 100 bytes for arbitrary data.

Coinbase here does not refer to "Coinbase" exchange or any company. I can register a company today with name "UTXO" but it does not change the meaning of UTXO - Unspent Transaction Output in Bitcoin.

Example of coinbase transaction from block 663933: https://blockstream.info/tx/fc8ee032e9a1c51869a73b43c2147523a4d4d6dd64207ffa74b6e557d06f6881 in which miner got 6.25 BTC (subsidy) + 0.07237 BTC (fees)

Who generates the coinbase transaction?

Orphan block: Blocks whose parent block has not been processed by the local node, so they can’t be fully validated yet.


  • Hey, this is exactly what I am trying to do, store deposit transactions for each unique user address from the output received from listsinceblock. I would like to ask, when computing the sum of deposits for each unique user address, does one consider transactions only of category receive and generate and ignore all other transactions categories like orphan, immature and send? Aug 3 '21 at 1:08

Not the answer you're looking for? Browse other questions tagged or ask your own question.