Skip to main content
POST
eth_sendRawTransactionSync
curl --request POST \
  --url https://tempo-mainnet.core.chainstack.com/c3ce2925b51f1ed18719fe8a23bbdccf/ \
  --header 'Content-Type: application/json' \
  --data '
{
  "jsonrpc": "2.0",
  "method": "eth_sendRawTransactionSync",
  "params": [
    "0xf867808502540e841e825208949729187d9e8bbefa8295f39f5634ca454dd9d294808083014b9da00602a6c9850068ac6667c098f65cf061e5e90d7030a63d13396dc6d0522fe517a07a0f9c9455612fcacfce60fba7c6e305728148f3ec345661535d0230f872f224"
  ],
  "id": 1
}
'
{
  "jsonrpc": "<string>",
  "id": 123,
  "result": {}
}
Tempo-specific API method that sends a signed transaction to the network and blocks until the transaction receipt is returned. This is a synchronous version of eth_sendRawTransaction — instead of returning just the transaction hash, it waits for the transaction to be included in a block and returns the full receipt.
Get your own node endpoint todayStart for free and get your app to production levels immediately. No credit card required.You can sign up with your GitHub, X, Google, or Microsoft account.
This method is particularly useful on Tempo because of its ~500ms finality. The synchronous wait adds minimal latency while eliminating the need to poll for receipts.

Parameters

  • signedTransaction — the signed transaction data as a hex string

Response

  • result — the full transaction receipt object, returned once the transaction is included in a block. Contains the same fields as the response from eth_getTransactionReceipt, including Tempo-specific fields like feeToken and feePayer.

eth_sendRawTransactionSync code examples

const ethers = require('ethers');
const NODE_URL = "CHAINSTACK_NODE_URL";
const provider = new ethers.JsonRpcProvider(NODE_URL);

const sendTransactionSync = async () => {
    const wallet = new ethers.Wallet("YOUR_PRIVATE_KEY", provider);

    const tx = {
      to: "0xRecipientAddress",
      value: 0,
      data: "0x..." // TIP-20 transfer calldata
    };

    // Sign the transaction
    const signedTx = await wallet.signTransaction(tx);

    // Send synchronously — blocks until receipt is returned
    const receipt = await provider.send("eth_sendRawTransactionSync", [signedTx]);
    console.log(`Confirmed in block: ${receipt.blockNumber}`);
    console.log(`Status: ${receipt.status}`);
  };

sendTransactionSync();

When to use

Use eth_sendRawTransactionSync instead of eth_sendRawTransaction when:
  • You need the receipt immediately and want to avoid polling with eth_getTransactionReceipt
  • You are building synchronous request/response flows (like payment APIs)
  • You want to simplify transaction submission logic by getting the result in a single call
For fire-and-forget scenarios or when submitting many transactions in parallel, use eth_sendRawTransaction instead.

Body

application/json
jsonrpc
string
default:2.0
method
string
default:eth_sendRawTransactionSync
params
any[]

Signed transaction data

id
integer
default:1

Response

200 - application/json

The transaction receipt

jsonrpc
string
id
integer
result
object

The transaction receipt object, returned once the transaction is included in a block

Last modified on March 19, 2026