Summary
Amoy Polygon is the current Polygon proof-of-stake testnet, replacing the deprecated Mumbai network. It runs the same client stack as Polygon mainnet (Bor and Heimdall) with chain ID 80002 and POL as its native gas token, so contracts and tooling behave almost identically to production. Developers use it to deploy and test smart contracts, indexers, and dApp frontends before shipping to Polygon mainnet.
This page explains what Amoy is, how to connect to it through an RPC endpoint, and how to decide between a public endpoint and managed or dedicated infrastructure. It also covers faucet access, MetaMask network settings, and the failure modes you are most likely to hit when moving from Mumbai to Amoy.
Amoy Polygon is the current Polygon proof-of-stake (PoS) testnet. If you have been searching for "amoy polygon" after seeing a deprecation notice on Mumbai, the short version is: Amoy replaced Mumbai as the canonical Polygon testnet, it uses chain ID 80002, and it runs the same Bor/Heimdall client stack as Polygon mainnet. That means contracts, tooling, and RPC methods behave almost identically to production, which is exactly what you want from a testnet.
This page answers what Amoy is, then helps you decide how to connect to it. If you already know you need an endpoint, jump to the chain settings table and the connection examples. If you are still evaluating whether Amoy is the right network for your workflow, start with the fit section below.
When Amoy is the right network for your work
Amoy is a testnet, so the decision is less about "is this good infrastructure" and more about "is this the correct network for the task in front of me." Use the following as a quick filter.
| Your task | Amoy is a good fit? | Notes |
|---|---|---|
| Deploying and testing Solidity contracts before mainnet | Yes | Same EVM behavior as Polygon mainnet |
| Testing a dApp frontend against a live chain | Yes | Use a stable RPC endpoint, not a shared public one, for repeated runs |
| Indexing or subgraph development | Yes | Confirm your indexer supports chain ID 80002 |
| Testing gas estimation and fee logic | Yes | POL is the native gas token, matching mainnet |
| Load testing production throughput | No | Testnets do not reflect mainnet load or validator behavior |
| Storing anything of value | No | Testnet tokens have no monetary value |
| Bridging real assets | No | Use Polygon mainnet |
If your task is in the top half of that table, Amoy is the right network. If it is in the bottom half, you want Polygon mainnet instead, which OnFinality also supports through its Polygon network page.
Amoy Polygon chain settings at a glance
These are the values you need to add Amoy to a wallet, a Hardhat config, or a backend service. Keep them consistent across environments to avoid subtle bugs.
| Setting | Value |
|---|---|
| Network name | Polygon Amoy |
| Chain ID | 80002 |
| Native currency | POL (18 decimals) |
| Block explorer | https://amoy.polygonscan.com |
| RPC transport | HTTP and WebSocket |
| Client stack | Bor (execution) and Heimdall (consensus) |
The chain ID is the value people get wrong most often. Mumbai used 80001; Amoy uses 80002. If a tool silently points at the wrong chain ID, transactions may appear to succeed locally while failing against the network you actually intended.
Connecting to Amoy through an RPC endpoint
An RPC endpoint is the HTTP or WebSocket address your wallet, script, or backend uses to read and write to the chain. OnFinality exposes a public Amoy endpoint you can use for light testing:
https://polygon-amoy.api.onfinality.io/public
For anything beyond occasional manual testing, you should use an API key or a dedicated node rather than the shared public endpoint. Public endpoints are rate-limited and shared across many users, which makes them unsuitable for CI pipelines, indexers, or anything that polls frequently.
Quick check with curl
The fastest way to confirm an endpoint is live and returning the chain you expect is a eth_chainId call:
curl -s https://polygon-amoy.api.onfinality.io/public \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}'
A correct response returns 0x13882, which is 80002 in decimal. If you get a different value, you are talking to the wrong network.
MetaMask and wallet configuration
In MetaMask, add a network manually and enter the values from the table above. The two fields that cause the most confusion are the chain ID (80002) and the currency symbol (POL, not MATIC). Older tutorials still list MATIC because the token was renamed, but new network configurations should use POL.
JavaScript example with ethers
import { JsonRpcProvider } from "ethers";
const provider = new JsonRpcProvider(
"https://polygon-amoy.api.onfinality.io/public",
{ chainId: 80002, name: "polygon-amoy" }
);
const block = await provider.getBlockNumber();
console.log("Amoy head block:", block);
Passing the chain ID explicitly lets ethers detect a mismatch early instead of failing later with a confusing error.
Getting testnet POL from a faucet
Amoy uses POL for gas, so you need testnet POL before you can deploy or send transactions. Faucets for Amoy are typically gated behind a wallet balance check or a small social verification step to reduce abuse. The general flow is:
- Add Amoy to your wallet using the settings above.
- Copy your wallet address.
- Request testnet POL from a Polygon Amoy faucet.
- Confirm the balance arrives before running deployments.
Faucet availability and drip amounts change over time, so treat any specific faucet URL as something to verify rather than a permanent constant. If a faucet is dry, the usual causes are a shared IP, a wallet that has already claimed recently, or a temporary outage on the faucet itself.
Common failure modes and how to debug them
Most Amoy problems are configuration problems, not network problems. The table below maps symptoms to likely causes.
| Symptom | Likely cause | Fix |
|---|---|---|
chainId mismatch errors | Wrong chain ID (80001 vs 80002) | Update config to 80002 |
| Transactions stuck pending | Gas price too low or nonce gap | Resubmit with higher gas or reset nonce |
insufficient funds on deploy | No testnet POL | Request from a faucet |
| Intermittent 429 responses | Shared public endpoint rate limiting | Move to an API key or dedicated node |
| Contract not found after deploy | Deployed to a different chain | Verify chain ID in the deploy output |
| WebSocket disconnects | Idle timeout on shared endpoint | Reconnect logic or a dedicated node |
If you are migrating from Mumbai, the single most common issue is a stale chain ID or a hardcoded Mumbai RPC URL left in a config file. Search your repository for 80001 and mumbai before you assume the network is broken.
Public endpoint vs managed RPC vs dedicated node
Once Amoy is working locally, the next decision is where to run it for your team. The three common options differ mainly in how much control and isolation you need.
| Option | Best for | Tradeoffs |
|---|---|---|
| Public endpoint | Manual testing, quick checks | Shared, rate-limited, no SLA |
| Managed RPC (OnFinality API service) | CI, staging, small production dApps | API key, predictable access, less ops work |
| Dedicated node | High-volume indexers, latency-sensitive apps | Full isolation, more cost, more setup |
OnFinality offers both managed RPC access through its API service and dedicated nodes through Dedicated Node. For most teams testing on Amoy, a managed endpoint with an API key is the right starting point. Move to a dedicated node when you need consistent throughput, WebSocket subscriptions at scale, or isolation from other users.
If you are comparing providers more broadly, the RPC provider selection guide covers the evaluation criteria in more depth, and RPC pricing explains how usage is typically metered.
Migrating from Mumbai to Amoy
Mumbai is deprecated, so if you still have Mumbai references in your codebase, plan a migration. The steps are usually small but easy to miss:
- Replace chain ID
80001with80002everywhere it appears. - Replace Mumbai RPC URLs with an Amoy endpoint.
- Update the block explorer URL to
https://amoy.polygonscan.com. - Re-request testnet POL from an Amoy faucet.
- Re-deploy contracts and re-run integration tests.
- Update any hardcoded contract addresses, since they will differ on Amoy.
A quick grep for mumbai, 80001, and maticmum will usually surface every place that needs attention.
Operational checklist for teams using Amoy
Before you treat Amoy as a stable part of your workflow, confirm the following:
- Every environment (local, CI, staging) points at the same chain ID and endpoint.
- Secrets such as API keys are stored in environment variables, not committed.
- Your client has retry and timeout logic for transient RPC failures.
- WebSocket clients reconnect automatically after disconnects.
- You have a fallback endpoint in case the primary one is unavailable.
- Monitoring alerts on failed RPC calls, not just on application errors.
These are the same habits you will need on Polygon mainnet, so building them on Amoy pays off later. OnFinality's supported RPC networks page lists the networks available if you want to run the same setup across testnet and mainnet.
Key Takeaways
- Amoy is the current Polygon PoS testnet, replacing the deprecated Mumbai network.
- It uses chain ID 80002, POL as the native gas token, and the Bor/Heimdall client stack.
- The public OnFinality Amoy endpoint is fine for light testing, but managed or dedicated infrastructure is better for CI, indexers, and production-like workloads.
- Most Amoy issues are configuration problems: wrong chain ID, missing testnet POL, or a stale Mumbai URL.
- Migrating from Mumbai mainly means updating chain IDs, endpoints, explorer URLs, and contract addresses.
Frequently Asked Questions
What is Amoy Polygon?
Amoy is the Polygon proof-of-stake testnet. It replaced Mumbai and runs the same client software as Polygon mainnet, so contracts and tooling behave similarly without risking real assets.
What is the Amoy Polygon chain ID?
Amoy uses chain ID 80002. This is different from Mumbai's 80001, and mixing them up is a common source of errors.
What is the Amoy Polygon RPC endpoint?
OnFinality provides a public Amoy endpoint at https://polygon-amoy.api.onfinality.io/public. For regular use, an API key or dedicated node is recommended over the shared public endpoint.
Is Amoy the same as Polygon mainnet?
No. Amoy is a testnet with no real value. It mirrors mainnet behavior closely enough for development and testing, but you should never treat testnet tokens or state as production data.
How do I get testnet POL on Amoy?
Use a Polygon Amoy faucet. Availability and drip amounts change, so verify the current faucet before relying on it in a workflow.
Can I use Amoy for load testing?
No. Testnets do not reflect mainnet throughput or validator behavior. Use Amoy for correctness testing and mainnet-like staging for performance work.
What replaced Mumbai?
Amoy replaced Mumbai as the canonical Polygon testnet. If you still have Mumbai references, migrate them to Amoy.