LayerZeroFault
EVM & JSON-RPC CODE: -32000-REPLACE Reviewed & Verified:

JSON-RPC Error -32000: Replacement Transaction Underpriced Fix

Verified by Victor Vance • Lead Technical Analyst & Systems Researcher
Quick Diagnostic Answer (Executive Summary) GSC Snippet Verified

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 Resolution
01

Inspect Pending Transaction Fees in Mempool

Query eth_getTransactionByHash for the pending transaction to retrieve its exact maxFeePerGas and maxPriorityFeePerGas values.

02

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.

03

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.

04

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
speed-up-transaction.ts
// 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
  };
}
Zero-Secrets Client Sandbox

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.

Open Sandbox →
Comprehensive In-Depth Guide

Read Full Investigation & Recovery Workflow

Explore complete architectural diagrams, edge-case failure trees, and detailed post-mortem analysis in our verified deep guide.

Read Guide →

# Related Diagnostic Codes in EVM & JSON-RPC

Related Hex Statuses

# Frequently Asked Questions

FAQ Schema

Why 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.