Bitcoin

Verify Bitcoin Coinbase Payout Transaction

Verify bitcoin coinbase payout transaction data from the block template through confirmations and confirm the mining reward reached your address on-chain.

Verify Bitcoin Coinbase Payout Transaction

A mined block does not create a balance inside a pool account. It creates a Bitcoin transaction in the block itself. To verify bitcoin coinbase payout transaction data correctly, start there: the first transaction in the solved block, its outputs, and the script that controls them.

This article uses coinbase transaction in the Bitcoin protocol sense. It does not mean a withdrawal from the Coinbase exchange. The names are easy to confuse. The verification path is not.

What a Bitcoin coinbase transaction proves

Every valid Bitcoin block begins with one special transaction: the coinbase transaction. It has no normal inputs because it creates the block reward under Bitcoin's consensus rules. Its outputs can pay the miner directly, split rewards between multiple scripts, or include other permitted outputs such as an OP_RETURN commitment.

The amount available to the coinbase transaction is bounded by two things: the block subsidy at that height and the transaction fees from the block's non-coinbase transactions. A valid block cannot create more than that total. If it does, every fully validating node rejects the block.

That makes the coinbase transaction the primary payout record for solo mining. A dashboard can report a pending reward. A notification can claim a block was found. Neither changes the chain. The transaction in an accepted block does.

For a direct-payout mining setup, the question is simple: does at least one spendable coinbase output carry the exact script for your Bitcoin address, and does its value match what the payout policy said it would pay?

How to verify a Bitcoin coinbase payout transaction

You need a block height or block hash, your intended payout address, and preferably access to your own full node. Public explorers can be useful for a quick view, but their labels and availability are not consensus. Your node validates blocks under the rules you chose to run.

1. Find the accepted block

Start with the block hash. If you know the height, query your node for the hash at that height, then fetch the block with transaction details. Confirm that the block is on the active chain, not an orphaned candidate that briefly appeared in logs or on a monitoring page.

A block's confirmation count matters. One confirmation means the block is currently part of the best chain according to your node. Each later block built on top adds another confirmation. More confirmations reduce the chance that a competing chain replaces it, but they are not a magical guarantee.

For a mining reward, there is another rule that matters more immediately: coinbase outputs require 100 additional blocks before they can be spent. The payout can be visible as soon as the block is accepted. It is not spendable until it matures.

2. Identify transaction zero

Inspect the block's transaction list. The first transaction is the coinbase transaction. It is often called transaction zero because its position is zero-indexed in software output. Do not select a later transaction just because it pays your address. A later transaction could be an ordinary user payment included in the same block.

The coinbase transaction has a special input structure. Rather than spending a prior unspent output, its input references a null previous output and carries coinbase data. This is one quick structural check that you are looking at the right transaction.

Record its transaction ID, but do not stop there. A transaction ID tells you which transaction to inspect. It does not tell you who controls every output or whether its funds are mature.

3. Match the payout output to your address

Decode each coinbase output. Look at the output value and the locking script, usually shown as scriptPubKey. If your node or wallet decoder presents an address for that script, compare it character for character with the payout address you configured.

The underlying comparison is the script, not an explorer's address label. This distinction matters because some valid output scripts do not map to one ordinary address display, and different software can present equivalent data differently. For common P2WPKH, P2TR, and P2PKH payouts, a decoded address provides a practical check. A script-level comparison is stronger when you have the tooling.

Check the full address. Comparing only the first and last few characters is how people approve the wrong destination after copying from a poisoned clipboard. A valid-looking Bitcoin address is not evidence that it is yours.

If the coinbase transaction has several outputs, add only the outputs that lock to scripts you control. The total coinbase amount can be larger than your payout because it may contain more than one recipient or a non-spendable commitment output. The relevant question is not whether the transaction is large. It is whether your expected output is present.

4. Check the amount against the block rules

Next, calculate what the block was allowed to pay. At the relevant height, the protocol subsidy is fixed by the halving schedule. Add the fees from all non-coinbase transactions in that block. The total of the coinbase outputs must not exceed subsidy plus fees.

For a direct solo payout, your expected output depends on the published construction policy. If the policy says the solved block's subsidy and transaction fees go to your configured address, the expected spendable output is that total, subject only to any explicitly stated outputs required by the construction method. Do not infer a fee from a rounded number. Inspect the transaction.

NexusPool's Payout Preflight is useful before this stage because it verifies the payout destination before your work is used in a candidate template. But preflight is not a substitute for checking a solved block. It helps establish the intended script. The accepted coinbase transaction establishes what reached the chain.

5. Confirm maturity before treating it as usable money

A common error is to see the output in a wallet and immediately attempt to spend it. Bitcoin nodes reject attempts to spend an immature coinbase output. Wait until the chain has advanced by 100 blocks after the reward's block.

Your wallet may show the amount as pending, immature, or unconfirmed depending on its design. That is normal. Check the original block height and the current tip height yourself rather than relying on one status word. Once maturity is reached, the output can be spent like other confirmed UTXOs, assuming you control the private key for its script.

The checks that catch most false confidence

A payout claim can be misleading without being technically fabricated. Someone may show a transaction from the wrong block, a valid transaction to a different address, or a block that never became part of the active chain. The following failures are worth ruling out deliberately:

  • The displayed transaction is not the first transaction in the block.
  • The output address is similar to, but not equal to, your configured payout address.
  • The block is stale or orphaned rather than on the active chain.
  • The output is visible but still within the 100-block coinbase maturity period.
  • The claimed reward includes a number that cannot be reconciled with the subsidy and actual transaction fees.

There is also a limit worth stating plainly. You cannot verify a future payout transaction before a block is solved because no such transaction exists on-chain yet. You can verify the configured address, the job or template data available to your miner, and the payout construction commitments an operator exposes. Once a valid block is found, the chain supplies the final evidence.

Why direct on-chain payment changes the audit

A conventional pool balance is an internal accounting claim. It may be honest. It is still not a UTXO you control. To audit it, you need the operator's share accounting, threshold rules, fee handling, payment schedule, and wallet behavior.

A coinbase output paid directly to your own address narrows the audit. You still need to verify that your miner received and submitted work as expected. Mining remains high variance, and no operator can alter the odds in your favor. But after a block is accepted, ownership is visible in a standard Bitcoin output. There is no internal withdrawal queue between the reward and your keys.

That does not mean every direct payment arrangement is identical. A payout can be split, redirected by an incorrectly configured address, or built under terms the miner did not inspect. The point is not to trust a phrase like “non-custodial.” The point is to check the script and amount in the accepted block.

Keep a small record for every found block: block height, block hash, coinbase transaction ID, output index, payout script or address, value, confirmation count, and maturity height. This takes minutes and gives you a durable audit trail independent of any website.

Trust nothing. Verify the coinbase output.