# Create and Manage Wallets
Source: https://docs.chain.link/crec/guides/wallets/create-and-manage
Last Updated: 2026-08-31

> For the complete documentation index, see [llms.txt](/llms.txt).

A **wallet** in CRE Connect is a Smart Account deployed on a specific chain, owned by an EOA you control, and authorised to be driven by one or more **signers** (ECDSA addresses or RSA keys). It is the `op.Account` you target when you build operations.

This guide covers wallet provisioning and life-cycle management. For runtime signer changes see [Manage Wallet Signers](/crec/guides/wallets/manage-signers).

## Create a wallet

A wallet has two security layers:

- **Owner**: the EOA that owns the deployed Smart Account on chain. Used for ownership-level changes (handled outside CRE Connect).
- **Allowed signers**: the keys CRE Connect will accept signatures from when executing operations. Today we support `ecdsa` (EVM addresses) and `rsa` (public-key pairs).

### Status channel

`StatusChannelId` is optional on `Create`. If you supply it, every wallet status transition (`pending → deploying → deployed`, etc.) emits a `wallet.status` verifiable event into that channel, which is the canonical way to observe `deployed` outside the SDK. The SDK rejects the zero UUID with `wallets.ErrStatusChannelIDZero`.

```go
sc := channelID
w, err := client.Wallets.Create(ctx, wallets.CreateInput{
    // ... fields above ...
    StatusChannelId: &sc,
})
```

Reuse a single dedicated channel per environment for status events, or co-locate status events with the channel that owns the wallet's downstream operations: both patterns work.

## Look up a wallet

```go
w, err := client.Wallets.Get(ctx, walletID)
if err != nil {
    if errors.Is(err, wallets.ErrWalletNotFound) {
        return fmt.Errorf("wallet does not exist: %s", walletID)
    }
    return err
}
fmt.Println(w.Address, w.Status, w.AllowedEcdsaSigners)
```

curl:

```bash
curl -sS "$CREC_BASE_URL/wallets/$WALLET_ID" -H "Authorization: Apikey $CREC_API_KEY"
```

## List and filter

## Rename a wallet

The only updatable field through the SDK is `Name`. The Platform UI also lets you edit the wallet's **Description** in the same flow.

Signer-set changes go through a separate flow; see [Manage Wallet Signers](/crec/guides/wallets/manage-signers).

## Archive a wallet

Archive is **synchronous**. The wallet transitions to `archived` and stops accepting new operations. The on-chain account is **not** destroyed; you can re-import it via a fresh `Create` if needed.

## Sentinel errors

| Error                                                           | Trigger                                          |
| --------------------------------------------------------------- | ------------------------------------------------ |
| `wallets.ErrNameRequired` / `wallets.ErrNameTooLong`            | Validation.                                      |
| `wallets.ErrInvalidWalletOwnerAddress`                          | `WalletOwnerAddress` is not a valid hex address. |
| `wallets.ErrUnsupportedWalletType`                              | `WalletType` is not `ecdsa` or `rsa`.            |
| `wallets.ErrInvalidSignersForEcdsa`                             | `AllowedRsaSigners` set on an ECDSA wallet.      |
| `wallets.ErrInvalidSignersForRsa`                               | `AllowedEcdsaSigners` set on an RSA wallet.      |
| `wallets.ErrInvalidEcdsaSigner` / `wallets.ErrInvalidRsaSigner` | Bad signer entry.                                |
| `wallets.ErrWalletNotFound`                                     | 404 from `Get` / `Update` / `Archive`.           |
| `wallets.ErrInvalidLimit` / `wallets.ErrInvalidOffset`          | Bad pagination parameters.                       |

## Service limits

- **Max 10 ECDSA signers** and **max 10 RSA signers** per wallet (enforced by the OpenAPI spec).
- Wallet name length capped at **255 characters**.

## Next steps

- [Manage Wallet Signers](/crec/guides/wallets/manage-signers): change the allowed-signers set after creation.
- [Smart Accounts](/crec/concepts/smart-accounts): the on-chain contract behind a CREC wallet.