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

# Digital Asset Accounts SDKs

> Choose the Digital Asset Accounts SDK that matches your account type and platform

Digital Asset Accounts is Circle's API for stablecoin accounts that you open for
your end customers. Most operations are REST calls from your backend with your
API key. The SDKs cover the jobs that need the end customer's own device or
browser:

* **Authorization for non-custodial accounts**: the end customer's device holds
  a hardware-backed authorization key and signs every write to their
  [non-custodial account](https://developers.circle.com/digital-asset-accounts/concepts/non-custodial-accounts.md).
* **Passkey Strong Customer Authentication (SCA)**: in the European Economic
  Area (EEA), end customers confirm some operations, such as transfers, with a
  passkey. See
  [Strong Customer Authentication](https://developers.circle.com/digital-asset-accounts/concepts/strong-customer-authentication.md).

## Server-side and client-side SDKs

The SDKs split along the trust boundary between your backend and the end
customer's device:

* **Server-side**: the [Node.js SDK](https://developers.circle.com/sdks/daa/node-sdk.md) runs on your backend
  and calls Circle with your API key.
* **Client-side**: the [web](https://developers.circle.com/sdks/daa/web-sdk.md),
  [React Native](https://developers.circle.com/sdks/daa/react-native-sdk.md), [iOS](https://developers.circle.com/sdks/daa/ios-sdk.md), and
  [Android](https://developers.circle.com/sdks/daa/android-sdk.md) SDKs run in your application. They never hold
  your API key, and your backend makes every API call. The only direct
  connection to Circle is the Circle-hosted passkey page, which the SDK opens
  with a frame token.

```mermaid theme={null}
flowchart LR
    subgraph device["End customer's device"]
        CLIENT["Your application<br/>with a client-side SDK"]
    end
    subgraph server["Your backend"]
        BACKEND["Your API key<br/>REST API or Node.js SDK"]
    end
    CIRCLE["Circle system"]
    CLIENT --> BACKEND
    BACKEND --> CIRCLE
    CLIENT -. "passkey page<br/>(frame token)" .-> CIRCLE
```

## Choose an SDK

| Your integration | What to use |
| - | - |
| Custodial accounts (`omnibus`), SCA doesn't apply | No SDK. Call the [REST API](https://developers.circle.com/api-reference/digital-asset-accounts.md) from your backend |
| Custodial accounts, EEA end customers who need SCA | The [Node.js SDK](https://developers.circle.com/sdks/daa/node-sdk.md) or the REST API on your backend, plus the client-side SDK for your application's platform |
| Non-custodial accounts (`custodyType` of `self`) | The [React Native SDK](https://developers.circle.com/sdks/daa/react-native-sdk.md) in your application, plus a [relay on your backend](https://developers.circle.com/digital-asset-accounts/quickstarts/create-non-custodial-account.md#step-1-set-up-a-backend-relay) |
| Non-custodial accounts in a Swift, Kotlin, or web application | Not currently available. The iOS and Android SDKs provide the authorization key for the React Native SDK, and don't have their own sign-in or account methods |

## Feature support by SDK

| Feature | [Node.js](https://developers.circle.com/sdks/daa/node-sdk.md) | [Web](https://developers.circle.com/sdks/daa/web-sdk.md) | [React Native](https://developers.circle.com/sdks/daa/react-native-sdk.md) | [iOS](https://developers.circle.com/sdks/daa/ios-sdk.md) | [Android](https://developers.circle.com/sdks/daa/android-sdk.md) |
| - | - | - | - | - | - |
| Social login and authorization key | No | No | Yes | Through React Native | Through React Native |
| Create a non-custodial account | No | No | Yes | Through React Native | Through React Native |
| Signed transfers and withdrawals | No | No | Yes | Through React Native | Through React Native |
| Account, transaction, and deposit reads | No | No | Yes | No | No |
| Open passkey enrollments and challenges | Yes | No | No | No | No |
| Run the passkey enrollment and approval | No | Yes | Yes | Yes | Yes |

"Through React Native" means that the React Native SDK calls the iOS or Android
SDK for key storage and signing. You don't call those methods yourself.

## Availability

| SDK | Package | Status |
| - | - | - |
| [Node.js](https://developers.circle.com/sdks/daa/node-sdk.md) | `@circle-fin/daa-node-sdk` on npm | Available |
| [Web](https://developers.circle.com/sdks/daa/web-sdk.md) | `@circle-fin/daa-web-sdk` on npm | Available |
| [React Native](https://developers.circle.com/sdks/daa/react-native-sdk.md) | `@circle-fin/daa-react-native-sdk` on npm | Sandbox preview |
| [iOS](https://developers.circle.com/sdks/daa/ios-sdk.md) | `DaaSdk` for Swift Package Manager and CocoaPods | Sandbox preview |
| [Android](https://developers.circle.com/sdks/daa/android-sdk.md) | `com.circle.daa:daa-android-sdk` on GitHub Packages | Sandbox preview |

All SDKs use the same environment names: `sandbox` and `production`. The SDKs
follow semantic versioning. Before version 1.0.0, a minor version can include
breaking changes, so pin an exact version.
