Stratum Error Codes — Share Rejection Reference (V1 & V2)
Why is my miner rejecting shares? A complete reference for every Stratum mining-protocol error — the numeric Stratum V1 reject codes (20-25) and the Stratum V2 string error reasons — with the real cause and how to fix each. Free CSV/JSON + REST under CC BY 4.0.
Quick answer
When a mining pool rejects a share it returns a Stratum error. In Stratum V1 that is a numeric code: 20 (other), 21 (job not found / stale), 22 (duplicate share), 23 (low difficulty share), 24 (unauthorized worker) and 25 (not subscribed). Stratum V2 uses descriptive strings instead, such as too-low-difficulty, stale-share and unknown-user. A few stale (21) rejects are normal; a steady stream of low-difficulty (23) rejects usually means an unstable overclock or failing hashboard, while 24/25 are configuration or firmware faults that stop you earning entirely. This reference lists all 16 codes with their cause and fix.
Most reject spikes are code 21 (stale, latency) or code 23 (low-difficulty, overclock/hardware). Codes 24 and 25 mean nothing is being credited — fix the worker auth or firmware first.
Download CSV Download JSON REST API →
| Proto | Code | Message | Severity | Cause | How to fix |
|---|---|---|---|---|---|
| V1 | 20 | Other / Unknown | Info | The 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. |
| V1 | 21 | Job not found (stale) | Low | The 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. |
| V1 | 22 | Duplicate share | Low | The 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. |
| V1 | 23 | Low difficulty share | Medium | The 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. |
| V1 | 24 | Unauthorized worker | High | The 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. |
| V1 | 25 | Not subscribed | High | The 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. |
| V2 | unknown-user | Unknown user | High | The 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. |
| V2 | too-low-difficulty | Too low difficulty | Medium | The 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. |
| V2 | stale-share | Stale share | Low | The 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. |
| V2 | unsupported-feature-flags | Unsupported feature flags | Medium | During 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. |
| V2 | unsupported-protocol | Unsupported protocol | Medium | The requested SV2 sub-protocol is not supported by the peer. | Use a supported sub-protocol (Mining, Job Declaration, or Template Distribution) on both endpoints. |
| V2 | protocol-version-mismatch | Protocol version mismatch | High | The 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. |
| V2 | invalid-mining-job-token | Invalid mining job token | Medium | The 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. |
| V2 | invalid-job-param-value-{field} | Invalid job parameter value | Medium | A 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. |
| V2 | template-id-not-found | Template id not found | Low | The 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. |
| V2 | stale-template-id | Stale template id | Low | The block template referenced has been superseded by a newer one. | Normal during block changes; persistent occurrences indicate latency in template distribution. |
Source: D-Central's Stratum protocol reference. See also the Stratum protocol matrix, Stratum V1 vs V2, and the glossary on share difficulty, reject rate and Stratum V2.
Related products, repair, and setup paths
- how D-Central diagnoses ASIC repairs
- ASIC troubleshooting library
- ASIC manuals and repair guides
- replacement hashboards
- ASIC control boards
- ASIC power supplies
- S19 family replacement hashboard
- C52 replacement control board
- APW12 S19 power supply
- immersion cooling hub
- home immersion cooling guide
- ASIC miners for immersion planning
- ASIC cooling parts
- airflow shroud before immersion
- compare miner specs in the database
- ASIC repair support
Last reviewed June 19, 2026.
