Skip to main content

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.

Before you build, you need to choose a wallet product. Your wallet product determines which account types are available to you. If you choose Modular Wallets, your account type is always a Modular Smart Contract Account (MSCA). If you choose developer-controlled or user-controlled wallets, you need to pick between an Externally Owned Account (EOA) and a Smart Contract Account (SCA). EOAs are controlled by a private key and work across all supported blockchains. SCAs are smart contracts that support gas sponsorship, batch operations, and flexible ownership. See the account type comparison for a full breakdown.

Wallet product comparison

The following table maps common use cases to the recommended wallet product and account type:
If you wantWallet productAccount type
Full backend control (for example, payouts, automation, custodial flows)Developer-controlledEOA or SCA
Users to own and approve their transactionsUser-controlledEOA or SCA
Passkeys, modules, or a fully customized wallet experienceModularMSCA (only option)

Developer-controlled wallets

Your backend creates and manages wallets on behalf of users. You control when wallets are created, how transactions are signed, and how funds move without your users managing keys or interacting with the blockchain directly. Use when: You need fine-grained control over wallets and transactions without exposing blockchain complexity to your users. Example use cases: Payouts, automation, deposit collection, AI agent wallets Account type: EOA or SCA

User-controlled wallets

Users own and control their wallets inside your app. They authenticate with familiar methods (social login, email OTP, or PIN) and approve every transaction. Your app handles the interface while Circle handles key management and recovery. Use when: You want your users to fully control their funds and approve every transaction. Example use cases: Consumer apps, fintech platforms, reward wallets Account type: EOA or SCA

Modular wallets

You design the wallet experience while Circle handles signing and infrastructure. Modular wallets are smart contract wallets built on open composable standards, extendable with pre-built audited modules, for example, passkey authentication, batch transactions, and parallel execution. Use when: You need a customized wallet experience that developer-controlled or user-controlled wallets don’t cover. Example use cases: Passkey signing, multisig, subscriptions, custom transaction logic Account type: MSCA only

Account type comparison

The following table compares EOA and smart contract account capabilities:
EOASmart contract account (SCA / MSCA)
Wallet productDeveloper-controlled, user-controlledSCA: Developer-controlled, user-controlled
MSCA: Modular only
ControlPrivate keySmart contract (owner can be a single key, passkey, or multiple signers)
BlockchainsAll supported blockchainsEVM only
Creation feeNoneGas charged on first outbound transaction
Gas per transactionLowerHigher (contract validation overhead)
Gas sponsorshipSolana only, using feePayerYes, using Gas Station or a paymaster
Batch operationsNoYes
ModulesNoMSCA only
For Ethereum mainnet, use EOA. SCA deployment gas on Ethereum mainnet can be high.

Externally owned accounts (EOA)

An EOA is an account controlled by a private key. On EVM, EOAs require native tokens for gas. EOAs work on all supported blockchains and are the only option on Solana, Aptos, and NEAR. Use EOA when:
  • You are building on Solana, Aptos, or NEAR.
  • You are building on Ethereum mainnet and want to avoid high SCA deployment costs.
  • You need high transaction throughput. For example, airdrops or mass payouts.
  • You do not need gas sponsorship, batching, or custom account logic.

Smart contract accounts (SCA and MSCA)

SCAs are available with developer-controlled and user-controlled wallets. MSCAs are available with Modular Wallets only. A Smart Contract Account (SCA) and a Modular Smart Contract Account (MSCA) share the same foundation: both follow ERC-4337 and ERC-6900, both support gas abstraction and batch operations, and both use lazy deployment. Deployment gas is charged on the first outbound transaction, not at wallet creation. Both also carry higher per-transaction gas than EOAs due to contract validation overhead. SCA and MSCA wallets use versioned proxy contracts. For contract versions, addresses, and upgrade instructions, see Upgrade your SCA wallet. Use SCA or MSCA when:
  • You want to sponsor gas for users (gasless transactions)
  • You need to batch multiple operations into one transaction
  • You are building on EVM L2s or other supported EVM networks
If you chose Modular Wallets, your smart contract account is an MSCA. The key difference from an SCA is that MSCAs support modules, pre-built audited smart contracts that extend account behavior with features like passkey authentication, multisig, or subscription logic. Everything else, gas abstraction, batching, and lazy deployment, works the same way. For a full explanation of how MSCAs work with the Modular Wallet SDK, see Modular Wallets.