Supported stablecoins and networks
Discover enabled assets and safely add Polygon USDC or USDT0 to checkout.
Paybytoken resolves each checkout option from the intersection of the merchant's mode-specific
Payment Method Configuration and the operational token catalog. Your integration selects a
currency and chain; it must not provide a contract address, chain ID, or decimals.
Polygon support
| Mode | API pair | Network | Contract | Notes |
|---|---|---|---|---|
| Test | USDC + polygon | Polygon Amoy (80002) | 0x41E94Eb019C0762f9Bfcf9Fb1E58725BfB0e7582 | Circle's official test USDC. |
| Live | USDC + polygon | Polygon PoS (137) | 0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359 | Native USDC; bridged USDC.e is not accepted. |
| Live | USDT + polygon | Polygon PoS (137) | 0xc2132D05D31c914a87C6611C10748AEb04B58e8F | The existing Polygon USDT contract upgraded in place to USDT0. |
The API keeps the stable asset code USDT across networks. Customer interfaces may label the
Polygon option USDT0 (USDT) so the network-specific implementation is clear without changing
merchant accounting keys.
Paybytoken deliberately excludes Polygon's old bridged USDC.e contract
0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174. It also excludes Polygon USDT from test mode until a
Paybytoken-controlled mock asset is deployed and documented on Amoy.
See Circle's USDC contract directory and Polygon's USDT0 migration announcement for the underlying network contracts.
Discover before creating a Session
Call the Tokens API from your server and build an allowlist from enabled results:
const tokens = await paybytoken.tokens.list({ chain: 'polygon' })
const supportedTokens = tokens.data
.filter((token) => token.enabled)
.map(({ currency, chain }) => ({ currency, chain }))Configure the merchant allowlist in Portal or through the
Payment Method Configurations API. Normally,
omit supported_tokens when creating a Session so it uses the full configuration. Pass a subset
only when an individual order needs fewer choices:
const session = await paybytoken.checkoutSessions.create({
currency: 'usd',
line_items: order.items,
supported_tokens: [
{ currency: 'USDC', chain: 'polygon' },
{ currency: 'USDC', chain: 'base' },
],
ui_mode: 'hosted',
success_url: 'https://shop.example.com/orders/complete',
cancel_url: 'https://shop.example.com/cart',
})An unconfigured or disabled pair fails Session creation. Never silently replace it with a token
that has the same symbol on another contract or network. Render custom checkout from the Session's
immutable payment_method_options instead of querying current settings again.
Customer-facing rules
- Show the network name and token together, for example USDC · Polygon PoS.
- For Polygon USDT, show USDT0 (USDT) while sending the API asset code
USDT. - Ask wallets to switch to chain ID
80002in test mode or137in live mode. - Display the exact destination address and contract returned by the confirmed Session.
- Do not treat USDC, USDC.e, or same-symbol assets on different networks as interchangeable.
Continue with Hosted checkout, Embedded checkout, or Custom checkout.
Did this page answer your question?
Your feedback helps us improve the integration path.