Polygon

Polygon is the Network That Must Match Before Signing

Last updated

Polygon is the destination network only when the wallet reports chain ID 137, the receiving service accepts that same network, and the selected token contract matches the intended asset. Before signing, confirm the recipient, asset contract, amount, and POL gas balance. After broadcast, use the transaction receipt and token Transfer event to confirm the onchain result.

A familiar ticker does not prove network compatibility by itself. The same address can exist across EVM chains, while balances and token contracts remain separate, so every send requires a chain-and-contract match.

POL Replaced MATIC in the Wallet Display

The wallet label changed from MATIC to POL on Polygon Chain, while mainnet kept chain ID 137 and existing PoS balances converted automatically.

Some wallets still show MATIC because their saved network metadata has not changed, but that label does not create a separate balance. On Polygon Chain, native holdings converted to POL at a 1:1 ratio, and POL now pays gas. MetaMask lets users edit the currency symbol for a custom network entry; Rabby and other EVM wallets derive the balance from the same chain state. Treat chain ID 137 as the decisive network field. If the label says POL while eth_chainId returns 0x89, the wallet is still connected to Polygon mainnet. A display change never moves tokens.

Update the symbol before sending if the old label makes the confirmation ambiguous.


Direct Sends, Custodial Deposits, and Bridges Change Different Ledgers

Direct transfers, custodial deposits, and bridge routes all begin with a signature, yet each route credits a different destination system after execution.

Direct Wallet Transfer

A direct transfer changes Polygon state in one transaction. Native POL credits the recipient account directly; an ERC-20 transfer updates balances inside its token contract. The recipient then views that balance on chain ID 137.

Custodial Deposit

A custodial deposit lands on Polygon first, and the receiving service later credits its internal ledger. Its deposit screen must specify Polygon Chain and the accepted token representation.

Bridge Route

Polygon Portal starts a cross-chain workflow rather than a simple recipient transfer. A route from Ethereum chain ID 1 to Polygon chain ID 137 executes on the source first, then uses the bridge mapping to create or release the destination representation.

Which Polygon Network Does the Destination Accept?

The destination must explicitly accept Polygon Chain mainnet and the exact token representation that your wallet will send before you sign.

After that point, Polygon Chain mainnet uses chain ID 137, represented as 0x89 by the JSON-RPC eth_chainId method, while Amoy uses 80002. Ethereum mainnet is chain ID 1; OP Mainnet uses 10; Arbitrum One uses 42161; and Base uses 8453. One key can derive the same-looking address on these EVM networks, but each chain maintains separate balances and nonces. Amoy test assets do not become mainnet funds. Compare the numeric chain ID with the destination instructions before comparing the account string.

Purple Polygon graphic reading The go-to blockchain for payments

Prerequisites Before the Amount Field

A Polygon transfer requires the recipient address, supported network, exact asset identity, spendable amount, and enough POL for gas in the sending wallet.

  • The destination names Polygon Chain or Polygon PoS, not merely EVM support.
  • The copied recipient is complete and preserves mixed-case checksum characters.
  • The asset is native POL or the intended ERC-20 contract.
  • The amount leaves sufficient POL for the network fee.
  • The wallet reports chain ID 137 before confirmation.

An EVM address contains 20 bytes, displayed as 40 hexadecimal characters plus the 2-character 0x prefix, for 42 visible characters. EIP-55 mixed-case encoding contributes about 15 check bits on average and gives a mistyped address only a 0.0247% chance of passing by accident. A checksum validates the spelling; it does not establish that a custodian supports Polygon deposits.

Contract Addresses Define the Asset

The token contract, not the visible symbol, identifies an ERC-20 balance and the code that executes its transfer on Polygon.

Native POL

A native POL transfer carries its amount in transaction value. POL uses 18 decimal places, so 1 POL equals 10 18 base units.

ERC-20 Contract Identity

Circle-issued native USDC uses 0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359, while bridged USDC.e uses 0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174 on Polygon. Both contracts are valid, yet a receiving service may accept only one representation. Compare the full address instead of relying on the shared USDC name.

Decimal Conversion

Native USDC uses 6 decimal places, making 1 USDC equal to 1,000,000 base units. Wallets format that integer for display, while the signed ERC-20 call carries the integer itself. A decimal mismatch changes the amount encoded onchain.

How Should You Read the Confirmation Screen?

Read the Polygon confirmation screen as a structured transaction: chain, recipient or contract, value, method, amount, gas limit, and fee caps.

A native POL send targets the recipient, places funds in value, and leaves data empty. An ERC-20 send instead targets the token contract and calls transfer(address,uint256). Standard ABI encoding uses a 4-byte function selector followed by two 32-byte argument slots, producing 68 bytes of calldata before any envelope fields. The decoded recipient and integer amount deserve separate checks because the transaction's to field names the token contract.

EIP-1559 Type 2 transactions separate maxFeePerGas from maxPriorityFeePerGas. The receipt later records gasUsed and effectiveGasPrice; their product is the actual POL fee. If the method reads approve, the action changes an allowance rather than transferring the displayed token amount.

The Five-Stage Signing Path

The signing path has five stages, moving from interface choices through EVM execution to a receipt that records the Polygon outcome permanently.

Each stage answers a different question. Passing one stage does not substitute for the next, because network identity, contract identity, authorization, execution, and finality come from different mechanisms.

Table: The Five-Stage Signing Path
Stage Interface Decision Onchain Evidence Security Tier
1. Network Selection Choose Polygon mainnet eth_chainId returns 0x89 EIP-155 chain identity
2. Asset and Destination Match Match support, recipient, and contract Contract metadata and account data resolve on chain 137 ERC-20 contract identity
3. Confirmation Review Read method, amount, and fee caps Unsigned fields and decoded calldata match Wallet signature authorization
4. Signature and Broadcast Authorize the exact payload A transaction hash enters the pending pool EVM state-transition validation
5. Receipt and Credit Check Confirm success and destination accounting Status, logs, and milestone finality agree Heimdall v2 consensus

The wallet controls the authorization stage; Polygon validators control execution and finality. A custodial destination adds its own accounting step after the fifth onchain stage, so a successful receipt and an internal credit remain two distinct observations.


Execution Changes Balances and Nonces

A confirmed Polygon transaction changes only the state reached by its signed fields and contract call, while the sender also spends POL gas.

For a native send, the EVM debits the transferred value and gas from the sender, then credits the value to the recipient. For an ERC-20 transfer, the contract subtracts base units from the sender's token balance, adds the same units to the recipient, and emits Transfer(from,to,value). An externally owned account nonce advances by 1 when the network includes its transaction. Receipt status 1 records success; status 0 records a reverted execution. A revert restores contract and value changes, while consumed gas remains charged and the included nonce remains used.

Those state changes belong to chain ID 137 and remain visible through every synchronized Polygon RPC.

A Receipt Proves the Onchain Outcome

A Polygon receipt proves inclusion and execution, while milestone finality establishes that the containing block stays settled under normal protocol operation.

A transaction hash contains 32 bytes and appears as 64 hexadecimal characters after the 0x prefix, for 66 visible characters. Querying eth_getTransactionReceipt returns the block number, sender, target, gas used, effective gas price, status, and logs. PolygonScan presents the same public record through an interface. For ERC-20 transfers, inspect the Transfer log for the token contract, sender, recipient, and base-unit amount.

Heimdall v2 finalizes Polygon Chain transactions through milestones in 2 to 5 seconds after at least two-thirds of validating stake agrees. A receipt can appear before that milestone. Custodial services also choose their own confirmation policy, so their credit time follows internal accounting after onchain finality.

Why Does the Wallet Show a Zero Balance?

A successful receipt with a zero wallet display usually means the wallet is viewing another chain or has not loaded the token contract.

Start with the receipt. Status 1, the intended recipient, and the intended contract establish that the Polygon state change completed.

Next, switch MetaMask or Rabby to chain ID 137 and query the recipient again. If native POL appears but an ERC-20 does not, import the exact contract address from the transaction log. The wallet then calls balanceOf on that contract and formats the integer with its decimals value. This repair changes only the interface configuration; it does not require a second transfer.

A different recipient or an unsupported custodial deposit requires the destination operator's process, whereas the network-and-token display error resolves inside the wallet.


Advanced Edge Cases at Contract Destinations

Advanced Polygon transfers require extra inspection when the destination is a contract, the action uses an allowance, or a relayer submits execution.

Contract Recipients

An externally owned account and a contract both use 20-byte EVM addresses. The eth_getCode method distinguishes them by returning deployed bytecode for a contract. A plain ERC-20 transfer does not call a universal receiver hook, so the contract needs its own accessible path for later token movement.

Approval Then Transfer

An ERC-20 approve call sets a spender allowance and emits Approval; it does not debit the token balance. A later transferFrom call consumes allowance and moves tokens. Some flows use EIP-2612 permits, including POL on Ethereum, so a typed signature can authorize an allowance before another transaction executes it.

Relayed Execution

A Polygon meta-transaction signs an EIP-712 message, then a relayer wraps that authorization in a standard transaction and pays the gas. The receipt's transaction sender may therefore be the relayer, while contract events identify the user-directed action. A typed-data signature alone has no EVM transaction hash; the relayer broadcast creates that record. Match the typed-data chain, verifying contract, method, and amount before authorizing it.

Still wondering about Polygon?

Does a Polygon transfer require a memo or destination tag?

A standard Polygon transfer does not require a protocol-level memo or destination tag. The EVM uses the recipient address and, for contract calls, calldata. A custodial service may assign an additional reference inside its own deposit workflow. If the Polygon deposit screen shows one, follow that service's exact format because it governs internal crediting rather than chain ID 137 routing.

Is a small test transfer useful before sending the full balance?

A small test transfer is useful when the destination or token route is new to you. It confirms the chain, token contract, recipient, wallet flow, and destination crediting before the larger send. The test requires its own transaction and POL fee, while the main send pays a second fee, so retain enough POL for both and compare the first receipt before continuing.

How long can a Polygon transaction remain pending?

A Polygon transaction has no protocol-defined pending timeout. It remains unconfirmed until a validator includes it, a node drops it from its pool, or the sender replaces it under the same nonce with acceptable fee fields. Later transactions from that account wait behind the lowest missing nonce, so resolve the oldest pending nonce first and track the replacement hash separately.

Who pays the network fee for an ERC-20 transfer on Polygon?

The account that broadcasts a standard ERC-20 transfer pays the network fee in POL. The token contract deducts only the encoded token amount, while the EVM charges gas to the transaction sender. A relayed or sponsored flow changes the payer because a relayer submits the onchain transaction; the wallet should identify that arrangement before the user signs its authorization.

Which details should accompany a Polygon transfer support request?

A complete Polygon transfer support request should include the 66-character transaction hash, chain ID 137, sender, recipient, token contract, amount, block number, and receipt status. Add the receiving service's deposit reference if one exists. Those fields let an operator distinguish a successful onchain transfer from an internal-credit issue without relying on a wallet screenshot or token symbol.

Which token standards require the same wrong-chain check on Polygon?

ERC-20, ERC-721, and ERC-1155 transfers all require the Polygon network and the correct contract address to match. ERC-20 adds an amount, ERC-721 identifies one token ID, and ERC-1155 may carry an ID plus quantity or a batch. The receiving wallet or contract must also support the relevant transfer method and, for safe NFT transfers, the required receiver interface.

Will changing the Polygon RPC provider move or alter my tokens?

Changing RPC providers does not move tokens because synchronized providers read the same Polygon chain state for chain ID 137. The wallet may briefly show different pending data, fee estimates, or indexing progress when endpoints disagree or lag. Confirm that eth_chainId returns 0x89 and compare the finalized receipt; the balance then comes from the chain, not from the provider's local display.