Coinbase's Base Account product: a universal sign-on and payments layer built on Smart Wallet. Provides Sign in with Base, Base Pay (USDC checkouts in 3 lines), Base Subscriptions, and Sub-Accounts via the `@base-org/account` SDK — the next evolution of the Coinbase Wallet SDK.
- 01Sign in with Base
- 02USDC checkouts (Base Pay)
- 03recurring USDC subscriptions
- 04consumer apps on Base
- 05Sub-Accounts for app-specific keys
- pnpm add @base-org/account @base-org/account-ui
| Variable | Scope | Description |
|---|---|---|
| NEXT_PUBLIC_CDP_PROJECT_ID | Client | Coinbase Developer Platform project ID used by Base Account for paymaster + analytics. |
Use Base Account for Sign in with Base and USDC payments. Install `@base-org/account` and create a provider with `createBaseAccountSDK({ appName, appLogoUrl })`, then call `getProvider()` to get an EIP-1193 provider you can pass to wagmi or use directly. For checkouts, call `pay({ amount, to, testnet })` — no SDK instantiation or wallet connection needed. For recurring USDC, use Base Subscriptions; for app-scoped keys, request a Sub-Account via the SDK. Render the official `<SignInWithBaseButton />` from `@base-org/account-ui/react` for branded UX.
- ⚑Base Account is built on Coinbase Smart Wallet (passkey-based ERC-4337) — same passkey-loss-equals-wallet-loss concerns apply, mitigate via multi-owner accounts.
- ⚑Base Pay settles in USDC on Base only; if you need other tokens or other chains you need to bridge / swap separately. Don't promise users 'pay with anything' UX out of the box.
- ⚑Sub-Accounts run on mainnet now, but rules around per-app spend limits and revocation are still evolving — design your UX to surface and revoke Sub-Account permissions.
- ⚑Sign in with Base issues an authenticated session — verify the SIWE-style signature server-side; never trust a client-supplied address.
- ⚑The SDK is the successor to `@coinbase/wallet-sdk`. Mixing both packages in one app causes connector collisions; pick one and stick with it.