Skip to main content
User-controlled wallets allow you to create wallets for your users that give them full control of their keys with a Web2-like experience. Users onboard with popular authentication mechanisms (social login, email OTP, or PIN with security questions), then approve transactions and signatures from their device.

Key features

User retains custody

Users have full control of their private keys secured with . Your app or backend never holds user keys. See Key management for more details.

Seamless onboarding

Choose from social login (Google, Apple, Facebook), email OTP, or PIN with security questions to authenticate your users. Optional biometrics with PIN.

Customizable UIs

For social login and email OTP, Circle provides confirmation UIs for transfers and signing that you can customize, or disable to build and match your own branding.

What you can build

Build payment or remittance apps with USDC, with faster settlement and low fees versus traditional rails, no custody or key management for you. Users approve transfers in your app; you execute using Circle APIs.
Build marketplaces and subscriptions with in-app crypto checkout. One-tap approval, higher conversion, no external wallets or seed phrases. Users approve; you run checkout and complete the transfer using Circle APIs.
Build lending, swapping, yield/earn, or other DeFi flows with user custody. Users sign (for example, , ) from your app, with no key export or separate wallet; optional gas sponsorship hides gas complexity. You orchestrate the flow and never hold keys.
Enable tipping, creator payouts, and in-app rewards in USDC. You provide the social or content layer; users hold the wallet. SDK creates wallets and runs transfers with user approval.
Build games or loyalty apps where users earn, hold, or spend USDC or in-game assets. Keep engagement in-app, with no external wallets or seed phrases. Users approve (rewards, purchases); you create wallets and run transfers using the SDK and APIs.
Embed USDC into savings, payroll, B2B payments, or remittance. Users keep custody; you avoid holding assets. Social, email, or PIN for familiar onboarding. Users approve from your UI; you execute using Circle APIs.

How it works

1

Choose an authentication type

Circle offers social logins, email OTP, or PIN with security questions for recovery. Configure your choice in the Circle Console for web2-like user onboarding.
2

Create user identifier and wallet

Your app invokes the and users authenticate with social or email, or set up PIN. Circle creates a user identifier and a wallet that the user controls.
3

Obtain user approval and confirmation

For transfers or signatures, present confirmation UIs (or your custom flow): the user approves on their device with one tap, PIN, or biometrics.
4

Submit transactions using Circle APIs

Use Circle APIs for transfers, contract execution, and signing. Circle’s infrastructure handles broadcasting and blockchain connectivity so you don’t run or maintain node infrastructure yourself.
Users authorize every transaction; your app never holds or uses their key material. For details on each authentication type, see Authentication types.

Account types

On EVM chains, a user-controlled wallet is created as either an externally owned account (EOA) or a smart contract account (SCA). Pick one based on your needs. For non-EVM chains such as Aptos or Solana, see Account Types for a full breakdown by blockchain.

EOA (Externally Owned Account)

Select when the source wallet can hold native token for gas, you want simple key-controlled accounts, and you don’t need multiple operations in one transaction (batch execution).

SCA (Smart Contract Account)

Select when you need gas paid by a relayer or platform (gas sponsorship), batch execution, or other programmable behavior. For details on gas sponsorship, see Gas Station.

Get started

Choose how users authenticate, then follow a quickstart to create wallets and see the full flow:

Authentication types

Compare social logins, email OTP, and PIN: onboarding UX, signing UX, and key management so you can pick the right type for your app.

Create user wallets with social login

Build a web app that allows users to sign in with Google and get a user-controlled wallet with USDC balance.

Create user wallets with email

Authenticate users with an OTP sent by email and create a user-owned wallet linked to your app.

Create user wallets with PIN

Allow users to set a PIN (and optional biometrics) to create and authorize a user-controlled wallet from your app.