Docs
Docs
Home
Getting Started
Agent Tooling
CLI
Supported Chains
Acala
Aptos
Arbitrum
Arc
Asset Hub
Astar
Avalanche
Base
Berachain
Bifrost
Binance Smart Chain
Bittensor
Blast
Boba Network
Bridge Hub
Celo
Centrifuge
Chiliz
Cronos
Enjin
Ethereum
Etherlink
Flow EVM Gateway
Gnosis
Hydration
Hyperliquid
Immutable
Ink
IoTeX
Kusama
Linea
LISK
Manta Atlantic
Manta Pacific
Mantle
MegaETH
Monad
Movement
Neuroweb
opBNB
Optimism
Plasma
Polkadot
Polygon
Pulsechain
Robinhood
Ronin
Scroll
Sonic
Starknet
Taiko
Tempo
Sui
TRON
Unichain
Viction
World Chain
XDC Network
XX Network
Zetachain
zkSync Era
Zora
Supported ChainsTempoJSON-RPC APITransaction Methods

eth_sendTransaction - Tempo RPC Method

Send a transaction from an unlocked account on Tempo. Requires the node to hold the sender's private key - intended for development and testing only.

Tempo RPC endpoint: endpoint URLs, plans and pricing.

Creates and sends a new transaction from an unlocked account on Tempo. The node signs the transaction server-side using the private key associated with the from address.

Why Tempo? Build on a payments-first EVM chain with deterministic settlement and stablecoin-native fees with no native gas token, fees denominated in supported USD stablecoins, and full EVM RPC compatibility.

Security Warning: Public Dwellir endpoints do not manage unlocked accounts for you. On shared infrastructure, eth_sendTransaction commonly returns an unsupported-method response or an account-management error such as unknown account, depending on the client. For production applications, sign transactions client-side and use eth_sendRawTransaction instead.

When to Use This Method

eth_sendTransaction is useful for payment application developers, wallet teams, stablecoin issuers, and treasury automation builders in development scenarios:

  • Local Development - Send transactions quickly on local nodes (Hardhat, Anvil, Ganache) without managing private keys
  • Testing Workflows - Rapidly prototype and test contract interactions on dev networks
  • Scripted Deployments - Deploy contracts on private or permissioned networks with unlocked accounts

Best Practices

  • Requires an unlocked account on the node, which is a significant security risk in production
  • Prefer eth_sendRawTransaction with client-side signed transactions for all production use cases
  • Node-managed accounts are disabled on most public providers; this method is best for local development only
JSON-RPC request
{
  "jsonrpc": "2.0",
  "method": "eth_sendTransaction",
  "params": [
    {
      "from": "0x407d73d8a49eeb85d32cf465507dd71d507100c1",
      "to": "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b",
      "gas": "0x76c0",
      "gasPrice": "0x9184e72a000",
      "value": "0x9184e72a",
      "data": "0x"
    }
  ],
  "id": 1
}

Code Examples

Common Use Cases

1. Local Development with Hardhat

Send transactions using Hardhat's pre-funded unlocked accounts:

JavaScript
async function devTransfer(provider, from, to, value) {
  const txHash = await provider.send('eth_sendTransaction', [{
    from,
    to,
    value: '0x' + value.toString(16),
    gas: '0x5208' // 21000
  }]);

  const receipt = await provider.waitForTransaction(txHash);
  console.log(`Transfer confirmed in block ${receipt.blockNumber}`);
  return receipt;
}

2. Contract Deployment on Dev Network

Deploy contracts without managing private keys locally:

JavaScript
async function deployContract(provider, from, bytecode) {
  const txHash = await provider.send('eth_sendTransaction', [{
    from,
    data: bytecode,
    gas: '0x4C4B40' // 5,000,000
  }]);

  const receipt = await provider.waitForTransaction(txHash);
  console.log(`Contract deployed at: ${receipt.contractAddress}`);
  return receipt.contractAddress;
}

3. Batch Transfers in Testing

Send multiple test transactions on Tempo dev networks:

JavaScript
async function batchTransfer(provider, from, recipients) {
  const hashes = [];

  for (const { to, value } of recipients) {
    const hash = await provider.send('eth_sendTransaction', [{
      from,
      to,
      value: '0x' + value.toString(16),
      gas: '0x5208'
    }]);
    hashes.push(hash);
  }

  return hashes;
}

Error Handling

Common errors and solutions:

Error CodeDescriptionSolution
-32000Method unavailable or unknown accountUse client-side signing with eth_sendRawTransaction
-32000Insufficient fundsEnsure from address has enough balance for value + gas
-32000Nonce too lowA transaction with this nonce was already mined - let the node auto-assign
-32601Method not foundMethod disabled on this node - use client-side signing
-32602Invalid paramsVerify transaction object fields and hex encoding

Related Methods

  • eth_sendRawTransaction - Broadcast a pre-signed transaction (recommended for production)
  • eth_signTransaction - Sign without sending (requires unlocked account)
  • eth_estimateGas - Estimate gas cost before sending

eth_signTransaction

Sign a transaction without broadcasting it on Tempo. Public shared RPC endpoints commonly return deprecation, unsupported-method, or account-management errors because they do not keep unlocked signers.

eth_call

Execute smart contract calls without creating transactions on Tempo. Essential for reading contract state for merchant settlement, treasury operations, payout automation, and stablecoin-native financial applications.

On this page

When to Use This MethodBest PracticesCode ExamplesCommon Use Cases1. Local Development with Hardhat2. Contract Deployment on Dev Network3. Batch Transfers in TestingError HandlingRelated Methods