D-CENTRALBitcoin Mining Quick-Reference

Stratum Share-Rejection Error Decoder Card

Stratum V1 numeric reject codes (20-25) and Stratum V2 string error reasons — message, cause and fix for the common "why is my miner rejecting shares?" question.

ProtoCodeMessageSeverityCauseFix
V120Other / UnknownInfoThe pool's generic catch-all reject when no more specific code applies.Check the pool dashboard and the miner log for the underlying reason; code 20 is usually a transient or pool-side condition rather than a hardware fault.
V121Job not found (stale)LowThe share referenced a job_id the pool has already retired — typically a new block or a clean_jobs notify arrived while the miner was still solving the old job, so the work went stale.A small percentage of stale rejects is normal. Persistently high rates point to latency between miner and pool — use a geographically closer stratum endpoint, reduce network hops, and check for an overloaded proxy.
V122Duplicate shareLowThe pool already received an identical share (same nonce and parameters); the miner submitted the same solution twice.Usually a firmware/driver quirk or a reconnect replaying work. Update firmware; if it persists, look for a misbehaving stratum proxy or a duplicated worker process.
V123Low difficulty shareMediumThe submitted share does not meet the current share-difficulty target the pool set with mining.set_difficulty.Confirm the miner honoured the latest set_difficulty. A steady stream of code 23 alongside hardware errors usually means overclock instability or failing ASIC chips/hashboards — back off the overclock and run a diagnostics pass.
V124Unauthorized workerHighThe worker was not authorized — mining.authorize failed or was skipped for this username.Check the worker/username and password fields exactly match the pool account; many pools want the BTC payout address or an account.worker format. Nothing will be credited until this clears.
V125Not subscribedHighThe miner sent mining.submit before completing mining.subscribe — a protocol-sequence violation.The client must subscribe (and usually authorize) before submitting shares. Update or repair the firmware or the proxy implementing Stratum.
V2unknown-userUnknown userHighThe upstream does not recognise the supplied mining-account identity (the SV2 analogue of V1 code 24).Verify the configured account/username on the Stratum V2 connection or job-declaration channel.
V2too-low-difficultyToo low difficultyMediumThe submitted share is below the channel's current target (the SV2 analogue of V1 code 23).Check overclock stability and hardware-error rate, and confirm the miner is tracking target updates on the channel.
V2stale-shareStale shareLowThe share is for work that is no longer valid because a newer template or prevhash superseded it.Normal at a low rate during block changes; high rates indicate latency between the miner and the job source.
V2unsupported-feature-flagsUnsupported feature flagsMediumDuring setup, a peer requested feature flags the other side does not support.Align the SV2 feature flags or update the software on both ends so a common set is negotiated.
V2unsupported-protocolUnsupported protocolMediumThe requested SV2 sub-protocol is not supported by the peer.Use a supported sub-protocol (Mining, Job Declaration, or Template Distribution) on both endpoints.
V2protocol-version-mismatchProtocol version mismatchHighThe SV2 protocol versions advertised by the two peers do not overlap.Update the miner, proxy, or pool so a common protocol version is available to negotiate.
V2invalid-mining-job-tokenInvalid mining job tokenMediumThe job token presented with a submit is not valid or known to the upstream.Indicates a desync between job declaration and submission; reconnect or update the job-declaring proxy.
V2invalid-job-param-value-{field}Invalid job parameter valueMediumA specific job parameter value was invalid; the {field} placeholder is replaced with the offending field name.Inspect the named field in the job declaration — almost always a bug in the job declarator software.
V2template-id-not-foundTemplate id not foundLowThe referenced block-template id is unknown to the upstream (Template Distribution Protocol).The template expired or the connection desynced; the template provider should re-send current templates.
V2stale-template-idStale template idLowThe block template referenced has been superseded by a newer one.Normal during block changes; persistent occurrences indicate latency in template distribution.

Stratum V1 reject codes follow the de-facto Slush/BIP convention; the exact string a pool returns can vary. V2 reasons follow the SV2 specification.

Source: D-Central Stratum Share-Rejection / Error-Code Reference (STRATUM_PROTOCOL_BIBLE). V1 codes follow the de-facto Slush/BIP convention; V2 reasons follow the SV2 spec.

Back to the source: Stratum Error-Code Reference · related guide · all reference cards · Open Mining Data hub

© 2026 D-Central Technologies, Laval, Quebec · Free to share under CC BY 4.0 with attribution to D-Central. A reference, not a guarantee — verify against your specific hardware.