Rules determining when an output may be spent. Ordinary received outputs have a 10-block spendable age, while miner outputs have a 60-block maturity rule in the reviewed stable code.
Also called: locked balance, unlocked balance, maturity.
Confirmed is not always spendable
A wallet can recognize an incoming payment after it enters a block while still excluding it from unlocked balance. The reviewed stable rules require an ordinary received output to reach a spendable age of 10 blocks.
Miner outputs have a separate 60-block maturity rule. The wallet also considers explicit transaction unlock conditions. Having enough total balance therefore does not guarantee that enough eligible outputs are available for a new payment.
References: Monero source: cryptonote_config.h · Monero source: cryptonote_core/blockchain.cpp · Monero source: wallet/wallet2.cpp
A payment arriving before you spend again
Suppose a wallet receives a payment and immediately tries to send some of it onward. The incoming output may be confirmed but locked. The wallet must wait until the applicable conditions are met before using that output.
Change from an outgoing transaction is also a newly created output. If the wallet has no other unlocked outputs, it can temporarily show a lower unlocked balance even though the change belongs to the same owner.
References: Monero source: wallet/wallet2.cpp · Monero source: cryptonote_config.h
The explicit unlock_time field
The transaction unlock_time field can add a block-height or timestamp condition. In the reviewed implementation, values below 500,000,000 are interpreted as block indices and larger values as timestamps, with protocol-specific allowance rules.
A zero value does not waive the normal spendable-age rule. Explicit unlock conditions and ordinary age checks are separate checks in the wallet and validation logic. Avoid inferring one from the other.
References: Monero source: wallet/wallet2.cpp · Monero source: cryptonote_config.h · Monero source: cryptonote_core/blockchain.cpp
Block intervals and countdown estimates
Monero's target block interval is 120 seconds, but actual blocks do not arrive on an exact schedule. Multiplying a block count by two minutes produces an estimate, not a promise of when the wallet can spend.
Confirmation displays and block-height boundary conventions can also differ. Use the wallet's unlocked status and confirm its node is current rather than treating a rounded timer as the consensus rule.
References: Monero source: cryptonote_config.h · Monero source: wallet/wallet2.cpp
Related glossary terms
Practical guides
Technical baseline: v0.18.5.4. Reviewed 2026-11-08 UTC.