---
name: cdp-accounts-create
description: Creates and funds CDP server wallets (EVM, Solana, Smart Account) or end-user embedded wallets. Handles testnet faucet funding automatically.
---

# cdp-accounts-create

Create a CDP account and optionally fund it.

## Preconditions

1. CLI configured → `/cdp-setup`
2. Wallet secret required for server wallets (evm, solana, smart) → `/cdp-setup`
3. Smart accounts require a funded EOA owner — create one first if needed.

## EVM account

```
cdp evm accounts create name=<name>
```
With policy: `cdp evm accounts create name=<name> accountPolicy=<policyId>`

Verify: `cdp evm accounts get <address>` and `cdp evm accounts by-name <name>`

### Fund (testnet)

```
cdp evm faucet address=<address> network=base-sepolia token=eth
```
Faucet tokens: eth, usdc, eurc, cbbtc. Wait ~6s, then verify:
```
cdp evm token-balances get base-sepolia <address>
```

### Fund (mainnet)

Prompt user to send funds manually. Poll balance until it increases.

## Solana account

```
cdp solana accounts create name=<name>
```
Verify: `cdp solana accounts get <address>` and `cdp solana accounts by-name <name>`

### Fund

```
cdp solana faucet address=<address> token=sol
```
Faucet tokens: sol, usdc. Verify:
```
cdp solana token-balances get solana-devnet <address>
```

## Smart account

1. Resolve or create funded EOA owner.
2. ```
   cdp evm smart-accounts create 'owners:=["<ownerAddress>"]' name=<name>
   ```
   Note: `owners` is a string array, NOT objects.
3. Verify: `cdp evm smart-accounts get <address>` and `cdp evm smart-accounts by-name <name>`
4. Fund the owner EOA if needed (smart account gas comes from owner or paymaster).

## Response fields

| Command | Address field |
|---------|--------------|
| evm accounts create | `.address` |
| solana accounts create | `.address` |
| smart-accounts create | `.address` |

## Notes

- Faucet amounts are small (~0.0001 ETH, ~0.00125 SOL) — sufficient for testing.
- Account names must be unique within a project, alphanumeric, 2-36 chars.
- Use `0.00001ether` for send values to stay under default policy thresholds.
