RPC method

eth_getTransactionReceipt on zkSync Era

Supported on SwiftNodes

Everything below was measured on 2026-10-13 by calling eth_getTransactionReceipt on zkSync Era through the same endpoint customers use, and is re-measured weekly.

What eth_getTransactionReceipt does

Returns the outcome of a mined transaction: status (1 success, 0 reverted), gas used, the effective gas price, the logs it emitted and any contract it created. It returns null until the transaction is in a block.

eth_getTransactionReceipt on zkSync Era: what we measured

Fields17 (3 beyond the Ethereum set)
Receipt for an unknown hashnull
Size of the sample receipt7.2 KB

Reading the fee and fields

Beyond the Ethereum fields, zkSync Era receipts carry 3 more. l1BatchNumber: the L1 batch that includes the block or transaction; l1BatchTxIndex: the transaction's position inside its L1 batch; l2ToL1Logs: messages from L2 to L1 emitted by the transaction.

A hash the node has not seen returns null, not an error, so poll until it is non-null (viem's waitForTransactionReceipt does this) and give up after a timeout.

A real zkSync Era receipt

As our endpoint returned it; logs collapsed to a count and long hex values shortened.

{
  "blockHash": "0xb7d508c9d7b07735453f104b19577e5fa38856e91f3caa40132fddcbe7334e2b",
  "blockNumber": "0x451bbd0",
  "contractAddress": null,
  "cumulativeGasUsed": "0x0",
  "effectiveGasPrice": "0x2b275d0",
  "from": "0x528acad9478cf2d9f99e556ad8858b8ee6ac766a",
  "gasUsed": "0x2822a",
  "l1BatchNumber": null,
  "l1BatchTxIndex": null,
  "l2ToL1Logs": [],
  "logs": "9 logs",
  "logsBloom": "0x0000000000040001…(256 bytes)",
  "status": "0x1",
  "to": "0xe629b208046f7a33de3a43931c9fe505a7ac3d36",
  "transactionHash": "0xf45d9b599c88ffa97ea02abadc9af1a1b6bb4f350b9a0f53b839892cc6114570",
  "transactionIndex": "0x0",
  "type": "0x71"
}

Example request

curl -s https://rpc.swiftnodes.io/rpc/zksync?key=YOUR_API_KEY \
  -X POST -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_getTransactionReceipt","params":["0xf45d9b599c88ffa97ea02abadc9af1a1b6bb4f350b9a0f53b839892cc6114570"]}'
import { createPublicClient, http } from "viem";

const client = createPublicClient({
  transport: http("https://rpc.swiftnodes.io/rpc/zksync?key=YOUR_API_KEY"),
});

const receipt = await client.waitForTransactionReceipt({ hash, timeout: 60_000 });
if (receipt.status !== "success") throw new Error("reverted");

const total = receipt.gasUsed * receipt.effectiveGasPrice;

Other methods on zkSync Era

eth_getTransactionReceipt on other chains

Frequently asked questions

Does zkSync Era support eth_getTransactionReceipt?

Yes. eth_getTransactionReceipt answered on the SwiftNodes zkSync Era endpoint when our weekly probe called it through the customer path (2026-10-13).

How do I get the total fee of a transaction on zkSync Era?

gasUsed × effectiveGasPrice from the receipt.

Why is the zkSync Era receipt null?

The transaction is not in a block yet, or the hash is unknown to the node. Keep polling with a timeout.

zkSync Era endpoints, live block height and WebSocket status are on the zkSync Era RPC page.

One key covers every chain we serve, and SwiftNodes has a free tier.