What a USDC transfer actually costs on Base, Polygon, Arbitrum, Ethereum and XDC
What a USDC transfer actually costs on Base, Polygon, Arbitrum, Ethereum and XDC, measured rather than assumed: gas units simulated per chain against live prices and fresh chain heads, plus the rollup L1 data fee where it applies. Every figure ships with its inputs and the block it was read at, so you can recompute it. Cheapest first; a chain that cannot be measured is excluded, never estimated.
Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.
Endpoint
GET https://api.402rates.com/v1/settlement/costs
| Category | Market data |
|---|---|
| Provider host | api.402rates.com |
| Networks | eip155:137, eip155:42161, eip155:50, eip155:8453 |
| Payment schemes | exact |
| Self-reported calls, 30 days | 13 from 2 payers (the provider's figure, not ours) |
Our checks, last 30 days
We never call tools that send, buy, move money or file anything, not even without paying.
Example input (from the provider)
{
"method": "GET",
"queryParams": {
"chains": "base,polygon,arbitrum,ethereum,xdc"
},
"type": "http"
}
Promised output schema (from the provider)
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"method": {
"enum": [
"GET"
],
"type": "string"
},
"queryParams": {
"properties": {
"chains": {
"description": "comma-separated list of: base, polygon, arbitrum, ethereum, xdc. Order does not matter and duplicates are ignored. Omit it to price all five, which is the usual call and costs exactly the same.",
"pattern": "^(base|polygon|arbitrum|ethereum|xdc)(,(base|polygon|arbitrum|ethereum|xdc))*$",
"type": "string"
}
},
"type": "object"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method"
],
"type": "object"
},
"output": {
"properties": {
"example": {
"type": "object"
},
"type": {
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}
},
"required": [
"input"
],
"type": "object"
}