> ## Documentation Index
> Fetch the complete documentation index at: https://docs.chainstack.com/llms.txt
> Use this file to discover all available pages before exploring further.

# eth_sendRawTransactionSync | Polygon

> Polygon API method that submits a signed transaction and blocks until the transaction receipt is returned or the timeout expires. On Polygon.

Polygon API method that submits a signed transaction and blocks until the transaction receipt is returned or the timeout expires. This is a synchronous version of [`eth_sendRawTransaction`](/reference/sendrawtransaction) — instead of returning just the transaction hash, it waits for the transaction to be included in a block and returns the full receipt.

<Warning>
  **Hex-encoded timeout**

  Polygon's Bor client predates [EIP-7966](https://eips.ethereum.org/EIPS/eip-7966), and its `timeout` parameter is typed as `hexutil.Uint64`. You must pass the timeout as a **hex-encoded** value (e.g., `"0x1388"` for 5000 ms), **not** as a decimal integer like on Base, Ethereum, or other EIP-7966-conformant implementations. Passing a decimal integer returns `invalid argument 1: json: cannot unmarshal non-string into Go value of type hexutil.Uint64`.
</Warning>

## Parameters

* `signedTransactionData` — the signed transaction data in hexadecimal format. Includes nonce, gas price, gas limit, recipient address, value, data, and signature.
* `timeout` (optional) — maximum wait time in milliseconds, passed as a **hex-encoded** uint64 string (e.g., `"0x1388"` for 5000 ms). If omitted, the node uses its configured default.

## Response

* `result` — the full transaction receipt object once the transaction is included in a block, with the same fields as [`eth_getTransactionReceipt`](/reference/gettransactionreceipt). If the timeout expires before inclusion, the node returns an error.

## `eth_sendRawTransactionSync` code examples

<CodeGroup>
  ```javascript ethers.js theme={"system"}
  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: ethers.parseEther("0"),
      chainId: 137,
    };

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

    // Send synchronously — Bor expects a HEX-encoded timeout
    const receipt = await provider.send(
      "eth_sendRawTransactionSync",
      [signedTx, "0x1388"] // 5000 ms in hex
    );
    console.log(`Confirmed in block: ${receipt.blockNumber}`);
    console.log(`Status: ${receipt.status}`);
  };

  sendTransactionSync();
  ```

  ```python web3.py theme={"system"}
  from web3 import Web3

  node_url = "CHAINSTACK_NODE_URL"
  web3 = Web3(Web3.HTTPProvider(node_url))

  account = web3.eth.account.from_key("YOUR_PRIVATE_KEY")
  tx = {
      'nonce': web3.eth.get_transaction_count(account.address),
      'to': "0xRecipientAddress",
      'value': 0,
      'gas': 21000,
      'gasPrice': web3.eth.gas_price,
      'chainId': 137,  # Polygon mainnet
  }

  signed = account.sign_transaction(tx)

  # Bor requires the timeout as a hex string
  timeout_ms = hex(5000)  # "0x1388"

  receipt = web3.provider.make_request(
      "eth_sendRawTransactionSync",
      [signed.raw_transaction.hex(), timeout_ms]
  )
  print(f"Receipt: {receipt['result']}")
  ```

  ```bash cURL theme={"system"}
  curl -X POST "CHAINSTACK_NODE_URL" \
    -H "Content-Type: application/json" \
    -d '{"jsonrpc": "2.0", "method": "eth_sendRawTransactionSync", "params": ["SIGNED_TX_DATA", "0x1388"], "id": 1}'
  ```
</CodeGroup>

## 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 (payments, bots, simulations).
* 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`](/reference/sendrawtransaction).

## Cross-chain note

Other Chainstack chains expose the same method but with different parameter conventions. Per EIP-7966, the timeout should be a decimal integer; Polygon's Bor is the exception because the method existed in Bor before the EIP standardized the encoding. See the [Ethereum equivalent](/reference/ethereum-sendrawtransactionsync) for the EIP-7966 form.


## OpenAPI

````yaml openapi/polygon_node_api/execute_transactions/eth_sendRawTransactionSync.json POST /0615fdf3c9eaf0681469e61a4308ea09
openapi: 3.0.0
info:
  title: eth_sendRawTransactionSync example
  version: 1.0.0
  description: >-
    Submits a pre-signed transaction and waits synchronously for the transaction
    receipt or until the timeout expires. Polygon's Bor client predates EIP-7966
    and expects the timeout as a hex-encoded uint64 (e.g., "0x1388" for 5000
    ms).
servers:
  - url: https://polygon-mainnet.core.chainstack.com
security: []
paths:
  /0615fdf3c9eaf0681469e61a4308ea09:
    post:
      tags:
        - Ethereum Operations
      summary: eth_sendRawTransactionSync
      operationId: sendRawTransactionSync
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - jsonrpc
                - method
                - id
                - params
              properties:
                jsonrpc:
                  type: string
                  default: '2.0'
                method:
                  type: string
                  default: eth_sendRawTransactionSync
                id:
                  type: integer
                  default: 1
                params:
                  type: array
                  default:
                    - >-
                      0xf86c808504a817c80082520894ab5db0e98b8ea6b7f9d8ad8e8ed0bc8fba0d1a2f870de0b6b3a764000080821b9f
                  items:
                    type: string
                  minItems: 1
                  maxItems: 2
            examples:
              example1:
                summary: Submit raw transaction with hex-encoded timeout
                value:
                  jsonrpc: '2.0'
                  method: eth_sendRawTransactionSync
                  params:
                    - >-
                      0xf86c808504a817c80082520894ab5db0e98b8ea6b7f9d8ad8e8ed0bc8fba0d1a2f870de0b6b3a764000080821b9f
                    - '0x1388'
                  id: 1
      responses:
        '200':
          description: Successful transaction submission with receipt
          content:
            application/json:
              schema:
                type: object
                properties:
                  jsonrpc:
                    type: string
                    example: '2.0'
                  id:
                    type: integer
                    example: 1
                  result:
                    type: object
                    properties:
                      transactionHash:
                        type: string
                        example: >-
                          0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef
                      blockHash:
                        type: string
                        example: >-
                          0xabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcd
                      blockNumber:
                        type: string
                        example: '0x12345'
                      gasUsed:
                        type: string
                        example: '0x5208'
                      status:
                        type: string
                        example: '0x1'

````