> ## 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.

# Fast transfer allowance

> Understanding Circle's Fast Transfer allowance mechanism

The Fast Transfer allowance is Circle's mechanism for providing
faster-than-finality USDC transfers. It limits the total value of USDC that can
be minted through Fast Transfer before related burns reach hard finality.

## How it works

Circle maintains a Fast Transfer allowance pool that backs all in-process CCTP
Fast Transfers. The following steps describe how the allowance works:

1. **Initial state**: Circle maintains a Fast Transfer allowance pool (for
   example, 10 million USDC).

2. **Fast Transfer initiated**: When you burn USDC on the source blockchain with
   Fast Transfer:
   * The burn amount temporarily debits the allowance
   * Circle's Attestation Service issues an attestation after
     [soft finality](/cctp/concepts/finality-and-block-confirmations)
   * You can immediately mint USDC on the destination blockchain

3. **Allowance depleted**: If the allowance reaches zero, Fast Transfers are
   temporarily unavailable until the allowance replenishes.

4. **Allowance replenished**: Once burns reach hard finality on source
   blockchains, the corresponding amounts are credited back to the allowance.

<Note>
  **Note:** The Fast Transfer allowance is global across all supported
  blockchains. It's not specific to a particular source or destination blockchain,
  but rather tracks the total value of in-process Fast Transfers.
</Note>

## Check the current allowance

To check the remaining Fast Transfer allowance, call the
[`GET /v2/fastBurn/USDC/allowance`](/api-reference/cctp/all/get-fast-burn-usdc-allowance)
endpoint. For a detailed guide on checking the allowance, see
[Get the Fast Transfer allowance](/cctp/howtos/get-fast-transfer-allowance).

## When allowance is insufficient

If the Fast Transfer allowance is insufficient for your transfer, you have two
options:

### Option 1: Wait for replenishment

The allowance automatically replenishes as pending Fast Transfers reach hard
finality.

Monitor the allowance until sufficient capacity is available:

```ts TypeScript theme={null}
async function waitForAllowance(requiredAmount: bigint, timeoutMs = 1200000) {
  const startTime = Date.now();

  while (Date.now() - startTime < timeoutMs) {
    const response = await fetch(
      "https://iris-api-sandbox.circle.com/v2/fastBurn/USDC/allowance",
    );
    const { allowance } = await response.json();

    // Convert USDC string to 6-decimal subunits without float precision loss
    const [whole, frac = ""] = String(allowance).split(".");
    const allowanceSubunits =
      BigInt(whole) * 1_000_000n + BigInt((frac + "000000").slice(0, 6));

    if (allowanceSubunits >= requiredAmount) {
      console.log("Sufficient allowance available");
      return true;
    }

    console.log(`Current allowance: ${allowance} USDC, waiting...`);
    await new Promise((resolve) => setTimeout(resolve, 30000)); // Check every 30 seconds
  }

  throw new Error("Timeout waiting for allowance replenishment");
}
```

### Option 2: Use Standard Transfer

Change `minFinalityThreshold` to 2000 or higher to use
[Standard Transfer](/cctp/concepts/finality-and-block-confirmations#standard-transfer-attestation-times),
which doesn't consume the Fast Transfer allowance.

## Allowance lifecycle

Understanding what happens during each phase of the allowance lifecycle helps
you build more robust applications:

<Steps>
  <Step title="Burn initiated">
    The user calls `depositForBurn` with `minFinalityThreshold` ≤ 1000. The
    transaction confirms on the source blockchain, and the allowance is debited by
    the burn amount.
  </Step>

  <Step title="Soft finality reached">
    Circle's Attestation Service issues an attestation, and the attestation becomes
    available through the API. The user can now mint USDC on the destination
    blockchain.
  </Step>

  <Step title="Hard finality reached">
    The burn transaction reaches hard finality on the source blockchain. The
    allowance is credited back by the burn amount, and capacity is restored for new
    Fast Transfers.
  </Step>
</Steps>
