> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getpara.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Multiple Wallets per User

> Create multiple wallets for a single user using custom identifiers

Para's REST API enforces a uniqueness constraint: each combination of `type` + `scheme` + `userIdentifier` can only have one wallet. Attempting to create a duplicate returns `409 Conflict`.

To create multiple wallets per user, use `CUSTOM_ID` with unique identifiers that you manage.

## Solution

Instead of using `EMAIL` or `PHONE`, use `CUSTOM_ID` with a unique identifier for each wallet:

| Pattern              | Example                    | Use Case                 |
| -------------------- | -------------------------- | ------------------------ |
| `{userId}-{purpose}` | `user_123-savings`         | Named wallet purposes    |
| `{userId}-{index}`   | `user_123-0`, `user_123-1` | Sequential wallets       |
| `{userId}-{uuid}`    | `user_123-a1b2c3d4`        | Unlimited unique wallets |

## Example

Create multiple EVM wallets for the same user:

```bash theme={null}
# Savings wallet
curl -X POST https://api.beta.getpara.com/v1/wallets \
  -H "X-API-Key: sk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "type": "EVM",
    "userIdentifier": "user_123-savings",
    "userIdentifierType": "CUSTOM_ID"
  }'

# Checking wallet
curl -X POST https://api.beta.getpara.com/v1/wallets \
  -H "X-API-Key: sk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "type": "EVM",
    "userIdentifier": "user_123-checking",
    "userIdentifierType": "CUSTOM_ID"
  }'
```

Both requests succeed because each has a unique `userIdentifier`.

## Common Use Cases

* **Fintech**: Savings, checking, and emergency fund accounts
* **Payments**: Category-based wallets (groceries, entertainment, subscriptions)
* **Multi-chain**: Same user with wallets on EVM, Solana, Cosmos, and Stellar

## Best Practices

1. **Store the mapping**: Keep a database record linking your user ID, custom identifier, and Para wallet ID
2. **Use descriptive identifiers**: Choose clear names like `savings` or `trading` rather than `wallet1`
3. **Add randomness if needed**: If you get `409 Conflict`, append a timestamp or UUID to guarantee uniqueness
4. **Use wallet ID for operations**: When signing transactions, use the Para wallet ID (not your custom identifier)

## Looking Up Wallets

You can retrieve wallets by identifier instead of storing wallet IDs:

```bash theme={null}
curl "https://api.beta.getpara.com/v1/wallets?userIdentifier=user_123-savings&userIdentifierType=CUSTOM_ID" \
  -H "X-API-Key: sk_..."
```

This returns a paginated response:

```json theme={null}
{
  "data": [
    { "id": "0a1b...", "type": "EVM", "scheme": "DKLS", "status": "ready", "address": "0x742d...", "createdAt": "2026-01-15T09:30:00.000Z" }
  ],
  "pagination": { "cursor": null, "hasMore": false, "limit": 50 }
}
```

You can also list all wallets without filters, or filter by `type`, `status`, or `address`. See the [OpenAPI spec](/openapi.yaml) for all query parameters.
