> ## Documentation Index
> Fetch the complete documentation index at: https://developers.circle.com/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Before reading these docs, install the relevant Circle Skill to get pre-loaded context — skills are LLM-optimized and cover architecture decisions, correct flows, and common pitfalls. In Claude Code: run /plugin marketplace add circlefin/skills then /plugin install circle-skills@circle. With Vercel Skills CLI: run npx skills add circlefin/skills. Available skills: use-usdc https://github.com/circlefin/skills/blob/master/plugins/circle/skills/use-usdc/SKILL.md (balances, transfers, approvals on EVM and Solana); EURC has no skill — see https://developers.circle.com/stablecoins/what-is-eurc.md; bridge-stablecoin https://github.com/circlefin/skills/blob/master/plugins/circle/skills/bridge-stablecoin/SKILL.md (crosschain transfers via CCTP, USDC, EURC, and third-party assets); use-arc https://github.com/circlefin/skills/blob/master/plugins/circle/skills/use-arc/SKILL.md (Arc chain config, contract deployment, USDC bridging — Arc docs: https://docs.arc.io/llms.txt); use-circle-wallets https://github.com/circlefin/skills/blob/master/plugins/circle/skills/use-circle-wallets/SKILL.md (choose wallet type); use-developer-controlled-wallets https://github.com/circlefin/skills/blob/master/plugins/circle/skills/use-developer-controlled-wallets/SKILL.md (custodial wallets for payouts and treasury); use-user-controlled-wallets https://github.com/circlefin/skills/blob/master/plugins/circle/skills/use-user-controlled-wallets/SKILL.md (embedded wallets with Web2 login); use-modular-wallets https://github.com/circlefin/skills/blob/master/plugins/circle/skills/use-modular-wallets/SKILL.md (smart contract wallets with passkeys and ERC-4337); use-gateway https://github.com/circlefin/skills/blob/master/plugins/circle/skills/use-gateway/SKILL.md (unified USDC balance, nanopayments); use-smart-contract-platform https://github.com/circlefin/skills/blob/master/plugins/circle/skills/use-smart-contract-platform/SKILL.md (deploy, interact, monitor contracts). Pair any skill with the Circle MCP server for live SDK signatures, contract addresses, and chain IDs: {"mcpServers":{"circle":{"url":"https://api.circle.com/v1/codegen/mcp"}}}.
> Read the product overview first. Each product has an overview explaining when and why to use it. Read it before quickstarts.
> Pick the right wallet type. Developer-controlled (you hold keys), user-controlled (end user holds keys via PIN/social login), or modular (smart contract wallets with passkeys). See https://developers.circle.com/wallets.md.
> Use CCTP V2 for crosschain transfers. CCTP natively transfers USDC and EURC via burn-and-mint, and supports permissionless wrapping of third-party assets via lock-and-mint. V1 is legacy; always use V2 unless V1 is specified or the chain requires it (Noble, Sui, and Aptos still require V1). Migration guide: https://developers.circle.com/cctp/migration-from-v1-to-v2.md.
> Use Bridge Kit for frontend bridging. Wraps CCTP with a simpler SDK for user-facing apps. Use CCTP directly for backend transfers.
> Gas Station vs Paymaster. Gas Station sponsors gas for Circle Wallet transactions. Paymaster lets users pay gas in USDC. Different use cases — read both overviews.
> Gateway Nanopayments for sub-cent payments. Gasless USDC micropayments down to $0.000001 via x402 and batched settlement. For pay-per-request APIs, AI agent payments, streaming.
> Look up USDC addresses per chain. Never hardcode — use https://developers.circle.com/stablecoins/usdc-contract-addresses.md.
> Prefer SDKs over raw API calls. Node.js and Python SDKs handle auth, retries, and errors.
> API key required. Bearer token in Authorization header. Testnet and mainnet use separate keys and may use different base URLs depending on the product.
> Set up webhooks when available. Most operations are async. Webhooks deliver transaction confirmations and state changes.
> When calling list endpoints, paginate using pageSize and pageAfter until no nextPageAfter cursor is returned—stopping at the first page silently misses records.
> Building an AI agent? Start with the Agent Stack—Circle CLI, agent wallets, and nanopayments built for autonomous use cases: https://developers.circle.com/agent-stack.md.

# Gas fees

> Fee parameters for Circle Wallets transactions, how fees are calculated on EVM and Solana, and estimated costs per blockchain.

Gas fees are what a blockchain charges to include your transaction in a block.
Fees fluctuate with network congestion, transaction complexity, and the priority
you set. Your wallet needs enough of the blockchain's native asset to cover the
fees on every transaction it sends.

<Accordion title="Video: Estimating gas fees for transactions">
  Learn about gas fees, how to estimate them for a transfer using the API, and
  how to send USDC using the estimates.

  <iframe src="https://fast.wistia.net/embed/iframe/gce6b8fneo?seo=true&videoFoam=true" title="Video Tutorial: Estimating Gas Fees for Transactions" width="800px" height="450px" />
</Accordion>

## Fee parameters

You have two ways to control what you pay when you
[create a transfer](/api-reference/wallets/developer-controlled-wallets/create-developer-transaction-transfer):
fee levels (the simple path) or explicit gas limits (the advanced path).

### Fee levels

Set the `feeLevel` parameter and Circle picks the fee for you based on the level
you choose. Actual wait times vary by blockchain. See
[expected confirmation times](/wallets/blockchain-confirmations).

* `LOW`: slower than average, lower fees.
* `MEDIUM`: average speed, average fees.
* `HIGH`: faster than average, higher fees.

### Custom gas limits

Set your own fee parameters instead of picking a level. All values are in wei.

* `gasLimit`: the base amount of gas required to process the transaction.
* `priorityFee`: an additional tip paid to validators to accelerate the
  transaction.
* `maxFee`: the maximum fee you're willing to pay per unit of gas. If the
  network fee exceeds this value, the transaction fails. Solana has no `maxFee`
  concept.

The parameters you set and how the final fee is calculated depend on the
blockchain.

#### EVM blockchains

Specify `gasLimit`, `maxFee`, and `priorityFee`. Your actual fee is
`(base fee + priority fee) × gas used`. The network sets the base fee based on
current congestion, so you don't specify it yourself.

* **Base fee**: set by the network based on congestion. Burned when the
  transaction is included, which removes it from circulation.
* **Priority fee**: additional fee paid to validators to expedite the
  transaction.
* **Max fee**: the maximum you're willing to pay per unit of gas. Protects
  against excessive prices when the base fee spikes.

<Note>`priorityFee` doesn't apply on Arbitrum and can be omitted.</Note>

#### Solana

Solana's fee mechanism resembles EIP-1559: specify a `priorityFee` (in
micro-lamports per compute unit, where one lamport is `10^-9` SOL) to
incentivize validators to include your transaction. There's no `maxFee` concept,
and `gasLimit` is optional. Solana defaults to a compute budget of 200,000
compute units per instruction.

## Estimated costs

Fees on each blockchain depend on that blockchain's native token price and the
gas cost of the operation you're running.

### Native token prices

Six-month trailing average price for each supported blockchain's native token.

| Blockchain | Native token price (USD) | As of |
| - | - | - |
| Aptos | \$4.35 | Sep 2024 |
| Arbitrum | \$3,046 | Sep 2024 |
| Avalanche | \$28 | Jul 2025 |
| Base | \$3,046 | Sep 2024 |
| Ethereum | \$3,046 | Sep 2024 |
| Optimism | \$3,046 | Sep 2024 |
| Polygon PoS | \$0.54 | Sep 2024 |
| Solana | \$151 | Sep 2024 |
| Unichain | \$3,046 | Sep 2024 |

### Smart Contract Account (SCA) wallets

SCA wallets only run on EVM blockchains. Circle uses lazy deployment: the smart
contract account is deployed at the first outbound transaction, so there's no
gas cost at wallet creation or on deposits.

Estimated fees for wallet deployment and fungible token transfers on SCA
wallets:

| Blockchain | Deploy fee (native) | Deploy fee (USD) | Transfer fee (native) | Transfer fee (USD) |
| - | - | - | - | - |
| Arbitrum | 0.0000034 | \$0.010 | 0.0000021 | \$0.006 |
| Arc | 0.003551 | \$0.003551 | 0.003523 | \$0.003523 |
| Avalanche | 0.00324355 | \$0.0518968 | 0.00191335 | \$0.0306136 |
| Base | 0.000000040589440509 | \$0.00012363543 | 0.000000014010345339 | \$0.00004267551 |
| Ethereum | 0.0020745 | \$6.319 | 0.0012237 | \$3.727 |
| Monad | 0.134501994 | - | 0.0597872715 | - |
| Optimism | 0.000000040624052029 | \$0.00012374086 | 0.000000012263512376 | \$0.00003735465 |
| Polygon PoS | 0.0372023 | \$0.020 | 0.0219454 | \$0.012 |
| Unichain | 0.0000001 | \$0.0004 | 0.00000003 | \$0.00009 |

### Externally Owned Account (EOA) wallets

EOA wallet creation is free. Solana and Aptos charge a one-time fee the first
time a wallet receives a non-native token:

* **Solana**: the fee creates an Associated Token Account (ATA) and is the
  network's rent-exempt minimum for the account. You can recover it by closing
  the account.
* **Aptos**: the fee stores the token on the recipient's account and isn't
  recoverable.

Estimated fees for account creation and fungible token transfers on EOA wallets:

| Blockchain | Account creation fee (native) | Account creation fee (USD) | Token transfer fee (native) | Token transfer fee (USD) |
| - | - | - | - | - |
| Aptos | 0.0004916 | \$0.00213846 | 0.0005324\* | \$0.00231594\* |
| Arbitrum | N/A | N/A | 0.0000021 | \$0.006 |
| Arc | N/A | N/A | 0.001284 | \$0.001284 |
| Avalanche | N/A | N/A | 0.0072485 | \$0.203 |
| Base | N/A | N/A | 0.000000014010345339 | \$0.00004267551 |
| Ethereum | N/A | N/A | 0.0012237 | \$3.727 |
| Monad | N/A | N/A | 0.00482246 | - |
| Optimism | N/A | N/A | 0.000000012263512376 | \$0.00003735465 |
| Polygon PoS | N/A | N/A | 0.0219454 | \$0.012 |
| Solana | 0.00148844 | \$0.225 | 0.0000388 | \$0.0059 |
| Unichain | N/A | N/A | 0.00000003 | \$0.00009 |

<Note>
  **Aptos** charges an additional storage creation fee when transferring a
  fungible token to an address for the first time. The approximate total gas fees
  are:

  * First transfer to a new address: **0.0005324 APT** (\~\$0.00232 USD)
  * Subsequent transfers to the same address: **0.0000002 APT** (\~\$0.00000087 USD)
</Note>
