JSON-RPC Error -32000: Replacement Transaction Underpriced Fix
JSON-RPC error -32000 "replacement transaction underpriced" occurs when you submit a new transaction reusing a pending nonce without increasing gas fees sufficiently. Standard EVM node mempool policies (Geth, Nethermind, Besu) require any replacement transaction to increase both maxPriorityFeePerGas and maxFeePerGas by at least 10% (price bump threshold) over the original transaction. Bump both fee parameters by 12–15% to successfully replace the transaction and clear stuck mempool queues.
# Root Cause & Technical Architecture
To prevent malicious actors from spamming mempools by repeatedly replacing transactions with negligible fee bumps, Geth implements a strict `priceBump` threshold (default 10%). In `txpool/legacypool/list.go`, when a newly submitted transaction shares an existing `(account, nonce)` pair, the node checks whether `newPriorityFee >= oldPriorityFee * 1.10` and `newMaxFee >= oldMaxFee * 1.10`. If either condition fails, the node rejects it with `replacement transaction underpriced`.
# 4-Step Actionable Diagnostic Protocol
Step-by-Step ResolutionInspect Pending Transaction Fees in Mempool
Query eth_getTransactionByHash for the pending transaction to retrieve its exact maxFeePerGas and maxPriorityFeePerGas values.
Apply 12% to 15% Minimum Fee Escalation
Multiply the pending transaction's priority fee and max fee by at least 1.12 to exceed the node 10% replacement threshold.
Preserve Exact Nonce Sequence Value
Ensure the replacement transaction specifies the identical nonce as the stuck pending transaction. Altering the nonce queues a secondary transaction.
Clear Transaction with Zero-Value Self-Transfer
To cancel a stuck transaction entirely, broadcast a 0 ETH transfer to your own address using the stuck nonce with an escalated fee.
# Diagnostic Verification Code / Command
typescript// Accelerate or Replace Stuck EVM Transaction with 15% Fee Bump
import { parseGwei } from 'viem';
function calculateReplacementFees(pendingTx: { maxFeePerGas: bigint; maxPriorityFeePerGas: bigint }) {
// Geth requires >= 10% bump. We apply 15% safety buffer.
const bumpedPriorityFee = (pendingTx.maxPriorityFeePerGas * 115n) / 100n;
const bumpedMaxFee = (pendingTx.maxFeePerGas * 115n) / 100n;
return {
maxPriorityFeePerGas: bumpedPriorityFee,
maxFeePerGas: bumpedMaxFee
};
} Launch Derivation Path Inspector
Execute client-side cryptographic simulation and parameter checks safely in your browser via native WebCrypto without sending private keys or mnemonics over the wire.
Read Full Investigation & Recovery Workflow
Explore complete architectural diagrams, edge-case failure trees, and detailed post-mortem analysis in our verified deep guide.
# Related Diagnostic Codes in EVM & JSON-RPC
Related Hex StatusesJSON-RPC Error -32000: Insufficient Funds for Gas * Price + Value
Fix JSON-RPC error -32000 insufficient funds for gas * price + value. Resolve native token balance shortages, fee estimation surges, and gas caps.
JSON-RPC Error -32000: Nonce Too Low Stale Wallet State Fix
Fix JSON-RPC error -32000 nonce too low. Troubleshoot stale local wallet nonce caches, pending mempool transactions, and reset account state.
JSON-RPC Error -32603: Internal JSON-RPC Error in Web3 Wallets
Fix JSON-RPC error -32603 Internal JSON-RPC error. Resolve EVM execution reverts, contract call simulation failures, and RPC endpoint rate limits.
# Frequently Asked Questions
FAQ SchemaWhy does MetaMask "Speed Up" sometimes trigger this error?
If network base fee spikes suddenly, MetaMask's automatic 10% bump may fall slightly below node requirements. Manually increase the priority fee.
Can I cancel a stuck transaction without paying gas?
No. Cancelling on Ethereum requires broadcasting a replacement transaction that spends gas to overwrite the pending nonce on-chain.
What is the default priceBump percentage in Geth?
The default priceBump in Geth is 10%. Node operators can adjust this via the --txpool.pricebump command line flag.