How to get an Ethereum RPC endpoint for stablecoin infrastructure (2026 guide)

TL;DR
Every stablecoin payment on Ethereum produces an ERC-20 Transfer event — and if your RPC endpoint drops those events, returns a truncated log range, or falls behind the chain tip under load, your reconciliation pipeline silently corrupts without a single error thrown. Ethereum now settles over $150 billion in stablecoin supply and trillions in monthly transfer volume, making endpoint reliability a compliance requirement, not a convenience. This guide covers how to select and configure an Ethereum RPC endpoint that can handle the eth_getLogs throughput, archive depth, and uptime that production payment infrastructure actually demands.
What is an Ethereum RPC endpoint
An Ethereum RPC endpoint is a server that exposes the Ethereum JSON-RPC API — the standard interface through which your application reads chain state and submits transactions. Every request your code makes, from checking an address balance to broadcasting a signed USDC transfer, travels over this interface using HTTP or WebSocket connections against methods defined in the Ethereum JSON-RPC specification.
For stablecoin and payment applications, the operations that run through this endpoint at production scale include:
- Reading ERC-20 token balances via
eth_callagainst thebalanceOf(address)function - Retrieving Transfer event logs for payment reconciliation via
eth_getLogs - Subscribing to real-time incoming payments via
eth_subscribewith thelogsfilter - Confirming settlement finality via
eth_getTransactionReceipt - Fetching block timestamps for audit-trail anchoring via
eth_getBlockByNumber - Estimating gas before broadcasting transfers via
eth_estimateGas - Submitting signed USDC or USDT transfers via
eth_sendRawTransaction
You can review the full list of supported JSON-RPC methods in the Ethereum developer documentation.
The failure mode that catches payment teams off guard is not a broken connection — it is a degraded one. An endpoint that returns stale block state, drops log queries under load, or silently truncates event history at a recent block number will accept your calls and return HTTP 200 while feeding corrupted data into your reconciliation pipeline. For stablecoin infrastructure operating under MiCA or FinCEN reporting requirements, that silent degradation is a compliance event, not a technical footnote.
Why Ethereum RPC behaves differently under stablecoin load
Stablecoin infrastructure pulls Ethereum RPC endpoints in two opposite directions at the same time — and most provider selection advice treats them as the same problem when they are not.
The first workload is continuous, low-latency event subscription: your payment system subscribes to Transfer events on USDC and USDT contracts and must receive every event in real time, with sub-second delivery, indefinitely. This workload is connection-sensitive — it favors WebSocket endpoints with stable persistent connections, low per-event latency, and fast reconnect recovery. If the endpoint drops a single event, your reconciliation ledger gains a gap that the compliance team finds months later.
The second workload is large-range historical log backfill: compliance audits, onboarding reconciliation for new wallet addresses, or recovery after an infrastructure incident. These jobs issue eth_getLogs queries spanning thousands or hundreds of thousands of blocks. This workload is throughput-sensitive — it favors archive access, high RPS limits, and permissive block range windows. A 10K-block range cap per query means hundreds of sequential calls to cover a year of history. At peak USDC and USDT transfer volume on Ethereum mainnet, that is a significant archive read job.
These two workloads compete on a shared endpoint. The architecture implication — keep a dedicated archive endpoint separate from your real-time monitoring endpoint — follows directly from this tension, not from a generic “use multiple providers” best practice.
| Property | Ethereum Mainnet |
|---|---|
| Block time | ~12 seconds |
| Consensus | Proof of Stake (post-Merge, September 2022) |
| Gas token | ETH (EIP-1559 base fee + priority fee) |
| Stablecoin supply on mainnet | $150B+ (USDT, USDC, USDe, USDS, PYUSD, and others) |
| Monthly ERC-20 settlement volume | $2T+ (trailing 30-day) |
eth_getLogs on public endpoints | Available but rate-limited; block range restricted |
| Archive depth | Full history from genesis |
| WebSocket subscriptions | Fully supported |
| Testnet (dapp development) | Sepolia |
| Testnet (validator/staking) | Hoodi (replaced deprecated Holesky in 2025) |
Ethereum RPC endpoint options
Public vs private Ethereum RPC endpoints
Ethereum’s stablecoin-grade workload begins exactly where public endpoints stop. The public RPC URLs available through Chainlist are suitable for wallet connections and one-off development queries — but their rate limits, capped log ranges, and absence of archive access make them a liability for any system that needs reliable Transfer event delivery at scale.
Official public endpoints:
- Mainnet:
https://eth.llamarpc.com(community-maintained) - Sepolia testnet:
https://rpc.sepolia.org
Warning: There is no official Ethereum Foundation public RPC endpoint for mainnet. Community-run public endpoints cap requests at roughly 100 per minute and do not expose archive data or trace methods. The Ethereum documentation itself recommends using professional RPC providers for production applications. For any stablecoin or payment system, a shared public endpoint in production is both a reliability risk and a compliance gap.
| Feature | Public endpoint | Private managed endpoint |
|---|---|---|
| Access | Free and open | Restricted access |
| Resources | Shared infrastructure | Dedicated resources |
| Best use case | Development & testing | Production workloads |
| Rate limit | ~100 req/min | No aggressive throttling |
eth_getLogs block range | Capped (typically last 10K blocks) | Full range supported |
| WebSocket subscriptions | Limited or unavailable | Fully available |
| Archive access | Not available | Available |
For a stablecoin infrastructure team that needs to monitor Transfer events across multiple ERC-20 contracts simultaneously, the choice between public and managed is not a cost conversation — it is a data integrity conversation.
Full node vs archive Ethereum node
Ethereum full nodes retain state from a recent checkpoint forward, typically the last few thousand blocks. Archive nodes retain complete chain state from genesis. For stablecoin infrastructure, the distinction maps directly to what your reconciliation and compliance systems can and cannot query.
| Full node access | Archive node access |
|---|---|
| Real-time USDC/USDT balance reads | Historical balance-at-block queries for reconciliation |
| Current Transfer event monitoring | Full eth_getLogs history from any historical block |
| Live transaction confirmation tracking | Backfilling missed payment events after an outage |
| Block and receipt queries within recent history | Audit trail reconstruction for compliance reporting |
| Gas price estimation for broadcast | Historical gas cost analytics for treasury reporting |
Chainstack supports Ethereum archive node access, which is required for any payment system that needs to reconstruct Transfer event history beyond the recent chain window. Compliance teams auditing USDC flows from twelve months ago, or a reconciliation job backfilling events after an infrastructure incident, need archive access to complete the query without gaps.
HTTPS vs WebSockets
For stablecoin infrastructure, the choice between HTTPS and WebSocket is not about preference — it maps to which part of your payment stack you are building. Real-time incoming payment detection needs persistent connections. Balance reads, receipt confirmations, and historical log backfills work cleanly over HTTPS.
| Feature | HTTPS | WebSocket |
|---|---|---|
| Model | Request/response | Persistent connection |
| Complexity | Simple operationally | Requires reconnect/heartbeat logic |
| Best for | Balance reads, receipt checks, historical eth_getLogs backfills | Real-time Transfer event subscriptions, block monitoring |
| Latency | Standard | Lower for high-frequency event streams |
| Connection overhead | Per request | One-time handshake |
WebSocket support is fully available on Chainstack-managed Ethereum endpoints. Public endpoints either do not expose WebSocket access or apply strict connection limits that make subscription-based event monitoring unreliable for production payment flows.
Why Ethereum became the settlement layer for stablecoins
Stablecoin issuers could, in theory, deploy on any chain. Most of them still ship their flagship contract on Ethereum first, and the reasons are structural, not sentimental.
Ethereum’s smart contract model supports every stablecoin issuance pattern in active use today — fiat-backed reserves (Circle USDC, Tether USDT), overcollateralized designs (Sky USDS), and synthetic dollar protocols (Ethena USDe). Every major issuer maintains their primary deployment on Ethereum mainnet, where the deepest liquidity, the most mature DeFi integrations, and the most established custodian infrastructure all converge.
The numbers reflect this. As of 2026, Ethereum mainnet holds over $150 billion in stablecoin supply — roughly half of total global issuance across all chains. On-chain dollar transfer volume on Ethereum exceeded $2 trillion in the trailing 30-day window. USDT alone, with over $189 billion in total circulation, processes daily settlement volumes that regularly exceed Visa’s on-chain equivalent.
This concentration creates a specific infrastructure obligation. Any payment platform, stablecoin protocol, or fintech application that needs to track, settle, or reconcile on-chain dollar flows will interact with Ethereum RPC endpoints at volume. The eth_getLogs queries that power Transfer event monitoring, the archive reads that support compliance auditing, and the WebSocket subscriptions that deliver real-time payment confirmations all run through a single interface. Teams building stablecoin infrastructure on Ethereum and blockchain infrastructure for fintech applications depend on consistent endpoint performance for their core product guarantees — not as a best-effort background concern.
Finality guarantees and what they mean for payment UX
Ethereum’s Proof of Stake consensus produces blocks every ~12 seconds. A transaction included in a block is not immediately final — it moves through distinct confirmation states that have direct implications for when your payment system should release funds or display a settled status to users.
The relevant confirmation stages for payment applications:
- Included (1 confirmation): The transaction appears in a proposed block. Reversible during a chain reorganization.
- Safe (~2 epochs / ~6.4 minutes): The block has been attested by two-thirds of the active validator set. Reorganization becomes statistically improbable.
- Finalized (~2 epochs / ~12–15 minutes): Ethereum’s Casper finality gadget has committed the block. Reversal requires destroying a substantial portion of staked ETH — effectively irreversible for practical purposes.
Payment UX decisions should map to these stages explicitly:
- Show “payment received” after inclusion plus 3–5 block confirmations for low-value transfers
- Release funds only after a finalized checkpoint for high-value or cross-border settlements
- Use
eth_getBlockByNumberwith the"finalized"tag parameter to query the most recently finalized block without manually polling for epoch boundaries
A common mistake in payment engineering is treating block inclusion as equivalent to finality. An RPC endpoint that does not support the finalized and safe block tags reliably forces your code into unsafe polling patterns. Managed endpoints expose these tags consistently; community public endpoints may lag or omit them.
Compliance requirements for on-chain payment infrastructure
The regulatory picture for stablecoin payment infrastructure has sharpened considerably since 2024. MiCA (Markets in Crypto-Assets Regulation), now fully in force for the EU, requires operators of electronic money token services to maintain complete transaction records, demonstrate audit trail continuity, and support supervisory data requests. The GENIUS Act in the US, in its current form, imposes similar obligations on payment stablecoin issuers and their technology partners.
For RPC infrastructure, three compliance capabilities matter:
Complete Transfer event history: Regulators requesting a full transaction history for a wallet address expect a response that covers the address from its first on-chain interaction. eth_getLogs queries against a full node return only recent events. Archive access is not optional for a MiCA-compliant stablecoin issuer or payment processor — it is a data retention requirement with legal weight.
Real-time transaction monitoring: Anti-money laundering obligations require payment platforms to screen transfers as they land, not after a batch reconciliation window. WebSocket subscriptions to Transfer events on monitored contract addresses provide the real-time feed that compliance engines need to flag suspicious flows before settlement completes.
Infrastructure auditability: SOC 2 Type II certification for your RPC provider is increasingly a procurement requirement in fintech partnerships and banking relationships. It signals that the provider’s security and availability controls have been independently audited over an extended period — a point-in-time attestation is insufficient.
Chainstack holds SOC 2 Type II certification and operates on infrastructure that supports the audit trail continuity and data retention requirements of payment-grade deployments.
Multi-region payment node topology
A single RPC endpoint, even a managed one, is an architectural liability for a payment product with uptime SLAs. A regional cloud incident, a provider maintenance window, or a network partition can interrupt your Transfer event stream at the worst possible moment. The standard topology for payment-grade Ethereum infrastructure uses three tiers:
Tier 1 — Primary managed node: A Dedicated Node or Global Node from your primary provider, deployed in the region closest to your application servers. All production traffic routes here by default.
Tier 2 — Secondary provider endpoint: An active standby from a genuinely independent second provider — not a failover endpoint from the same provider’s internal pool. This absorbs traffic automatically if Tier 1 becomes unavailable, with your application switching on the first sustained error or timeout.
Tier 3 — Dedicated archive endpoint: A separate archive-capable endpoint used exclusively for reconciliation queries, compliance backfills, and historical reporting. Keeping heavy eth_getLogs backfill traffic off your primary endpoint prevents a compliance audit job from degrading real-time payment event delivery.
For geographic distribution, deploy your primary node in the region where your application servers run. For EU-regulated deployments, a Frankfurt or Amsterdam region minimizes cross-border data transfers under MiCA’s data residency guidance.
How to get a private Ethereum RPC endpoint with Chainstack
To deploy an Ethereum RPC node on Chainstack:
- Log in to the Chainstack console (or create an account)
- Create a new project
- Select Ethereum as your blockchain protocol
- Choose network: Ethereum Mainnet, Sepolia, or Hoodi
- Deploy the node
- Open Access/Credentials and copy your HTTPS and WebSocket endpoints
- Run a connectivity check before wiring it into production code
Here is a minimal ethers.js setup connecting to a Chainstack Ethereum endpoint — covering both HTTPS for discrete queries and WebSocket for the real-time Transfer event subscriptions that drive most stablecoin payment monitoring pipelines:
import { ethers } from 'ethers';
// HTTP provider — for balance reads, receipt checks, and historical eth_getLogs
const httpProvider = new ethers.JsonRpcProvider("YOUR_CHAINSTACK_ENDPOINT");
httpProvider.getBlockNumber().then(console.log);
// WebSocket provider — for real-time ERC-20 Transfer event subscriptions
// Chain ID 1 is Ethereum mainnet; update to 11155111 for Sepolia
const wsProvider = new ethers.WebSocketProvider("YOUR_CHAINSTACK_WS_ENDPOINT");
wsProvider.getBlockNumber().then((blockNumber) => {
console.log(blockNumber);
wsProvider.destroy();
});
For the full integration guide, see the Chainstack Ethereum tooling documentation.
You can also access Chainstack Ethereum RPC directly from Claude, Cursor, Codex, Gemini, or Windsurf using Chainstack MCP. Learn more about Chainstack MCP.
Using Chainlist
Chainlist includes Ethereum mainnet and its testnets — it is a convenient way to add the network to MetaMask or a compatible wallet with one click. It is not an infrastructure provider. Any Ethereum RPC URL you add through Chainlist points to a community-maintained shared endpoint. Replace it with a managed endpoint before deploying any stablecoin payment logic to production.
Chainstack pricing for Ethereum RPC
Chainstack bills on a Request Unit model — one RU per API call regardless of method, which produces more predictable cost forecasts than compute-unit systems that charge different amounts per JSON-RPC method. For stablecoin teams with consistent eth_getLogs and eth_call volume, estimating monthly spend requires knowing your request count, not memorizing a per-method pricing matrix. See the full Chainstack pricing page for plan details and overage rates.
Archive node requests consume 2 RU per call instead of 1 — relevant if your compliance pipeline runs heavy historical log queries.
| Plan | Monthly Cost | Requests/Month | RPS | Overage (per 1M extra) |
|---|---|---|---|---|
| Developer | $0 | 3M | 25 | $20/1M |
| Growth | $49 | 20M | 250 | $15/1M |
| Pro | $199 | 80M | 400 | $12.50/1M |
| Business | $499 | 200M | 600 | $10/1M |
| Enterprise | $990+ | 400M+ | Unlimited | $5/1M |
Advanced options relevant to stablecoin infrastructure:
- Archive Node add-on — 2 RU per request; available on Growth and above
- Unlimited Node add-on — flat-fee unlimited requests at selected RPS tiers, from $149/month
- Dedicated Nodes: From $0.50/hour compute + $0.01 per 20 GB/hour storage
How to estimate monthly cost
- Measure your
eth_getLogsquery volume over a 24-hour window and multiply by 30 - Add your
eth_callvolume for ERC-20 balance reads and contract state queries - Factor in WebSocket subscription events — each Transfer event delivered counts as a request
- Add your transaction broadcast volume with a 20% buffer for retries
- For stablecoin monitoring specifically: USDT and USDC on Ethereum mainnet generate thousands of Transfer events per hour during peak trading periods. Benchmark your event fan-out against your watched contract list before committing to a plan tier — the difference between watching 5 contracts and 50 can easily push you from Growth to Pro.
Production readiness checklist
- Primary + fallback RPC endpoint configured from independent providers
- Request timeout policy set (10–30 seconds for
eth_getLogs, 5 seconds for balance reads) - Retry logic with exponential backoff implemented for 429 and 503 responses
- Credentials stored in environment variables or a secret manager — never hardcoded
- Monitoring for latency, error rate, and throttling across all RPC methods
- Alerts configured for sustained degradation on
eth_getLogsspecifically - WebSocket reconnect logic with missed-event backfill from last processed block number
- Archive endpoint kept separate from real-time monitoring endpoint to prevent query interference
eth_getLogsblock range paginated to avoid single-query timeouts on historical backfills- Finality confirmation logic implemented using the
"finalized"block tag rather than fixed confirmation counts
Troubleshooting common Ethereum RPC issues
| Issue | Cause | How to Fix |
|---|---|---|
429 Too Many Requests | Rate limit exceeded on shared public endpoint | Upgrade to a managed endpoint with higher RPS limits; add exponential backoff before retrying |
| WebSocket disconnects | Provider timeout or idle connection pruning | Implement heartbeat pings every 30 seconds; on close, reconnect and replay events from the last processed block number |
eth_getLogs returns empty on historical range | Public endpoints impose range restrictions (typically 2K–10K blocks max per query); full nodes retain months of state but managed endpoints are required to access it without those limits | Switch to a managed archive endpoint; paginate queries within the provider’s stated block range limit |
eth_getLogs times out on wide block range | Block range too large for a single query | Paginate in batches of 2,000–10,000 blocks; implement binary search for failed ranges |
| Transaction confirmed on receipt but not finalized | Using inclusion confirmation instead of Casper finality | Use eth_getBlockByNumber with "finalized" tag to verify the containing block is fully finalized |
Stale eth_call results after recent state change | Node behind on sync or serving a cached response | Specify "latest" as the block parameter explicitly; if results remain stale, the endpoint may be lagging — check sync status |
ERC-20 Transfer events missing from eth_getLogs response | Incorrect event signature hash in topic filter | The Transfer event topic is always 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef — verify your topic filter array |
execution reverted on eth_estimateGas for ERC-20 transfer | Insufficient allowance, wrong token balance, or bad contract state | Simulate first with eth_call; verify ERC-20 allowance and sender balance before gas estimation |
Conclusion
A stablecoin payment system that relies on a shared public Ethereum endpoint will eventually show users a wrong balance — not because of a smart contract bug, but because eth_getLogs queries dropped under load, returned a truncated range, or fell behind the chain tip during a high-volume period. There is no error thrown. Your response-code monitor stays green. The compliance team finds it during the next audit when event counts don’t reconcile.
The pattern that works: use a managed archive-capable endpoint as your primary, a genuinely independent second provider as your standby, and a dedicated archive endpoint for compliance backfill queries. Implement WebSocket reconnect logic that replays events from the last processed block number. Confirm settlement finality using the "finalized" block tag before releasing irreversible payouts. Treat eth_getLogs throughput and archive depth as first-class infrastructure requirements from day one, not features to add after your first production incident.
Start on the free Developer tier to validate your endpoint configuration, then size your plan against your Transfer event monitoring volume.
FAQ
What is the best SDK for querying Ethereum stablecoin Transfer events? ethers.js is the most widely used choice for Ethereum in 2026, with a Contract abstraction that handles ERC-20 event decoding automatically. viem is the modern TypeScript-first alternative with stricter types and better tree-shaking — increasingly common in newer payment applications. web3.py remains the standard for Python-based compliance and analytics pipelines. All three work against any JSON-RPC compatible endpoint including Chainstack.
Are public Ethereum RPC endpoints sufficient for a stablecoin payment product? No. Public endpoints cap eth_getLogs queries to recent blocks, apply rate limits that break under production Transfer event monitoring volume, and do not expose archive data. For a stablecoin product, a public endpoint means incomplete reconciliation data and no path to historical audit trails. Use public endpoints for local development and testnet verification only.
How do I monitor that my Ethereum endpoint is delivering all Transfer events without gaps? Track the highest block number you have successfully processed. On each eth_getLogs response, verify the returned block range is contiguous with your last processed block. On WebSocket subscriptions, store the block number of every event delivered and reconcile against eth_getBlockByNumber for each expected block. If a gap appears, immediately backfill it using a historical eth_getLogs query before advancing your cursor.
What is the difference between safe and finalized on Ethereum, and which should I use for payment confirmation? safe means the block has been voted on by two-thirds of the validator set — statistically secure but not yet cryptographically committed. finalized means Casper’s finality gadget has committed the block and reversal requires destroying a substantial fraction of staked ETH. For payment UX: show “payment confirmed” after the safe state (~6 minutes) for speed-sensitive flows; require finalized (~12–15 minutes) before releasing irreversible payouts, cross-border settlement disbursements, or compliance ledger entries.
Does Chainstack support Ethereum archive nodes for compliance backfills? Yes. Chainstack supports Ethereum archive nodes with full history from genesis. Archive requests consume 2 RU per call instead of 1, so keep compliance backfill jobs on a dedicated archive endpoint to prevent them from competing with your real-time Transfer event monitoring for RPS capacity.
Which Ethereum testnet should I use for stablecoin development in 2026? Use Sepolia for all dapp and smart contract development — it is the long-term supported testnet and the correct environment for ERC-20 deployment, transfer testing, and event monitoring integration. Hoodi replaced the deprecated Holesky network in 2025 and is designed specifically for validator and staking infrastructure testing; unless you are building node operation tooling, Sepolia is the right choice. Chainstack supports both networks.
Additional resources
- Ethereum logs tutorial: Logs and filters — Chainstack tutorial covering
eth_getLogsandeth_subscribewith USDC Transfer event examples including topic encoding - Chainstack Ethereum tooling documentation — Complete guide for ethers.js, web3.js, viem, Hardhat, and Foundry with Chainstack nodes
- Ethereum JSON-RPC API reference — Official Ethereum developer documentation for all supported methods
- More Ethereum tutorials and articles on the Chainstack Blog