---
title: "Create a new wallet account"
method: POST
path: "/v1/accounts/wallets"
tags: ["Accounts"]
---

# Create a new wallet account

`POST /v1/accounts/wallets`

## Request

- Base URL: `https://api.tesser.xyz`
- URL: `https://api.tesser.xyz/v1/accounts/wallets`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/tesser/apis/tesser-api/docs/v1/accounts/wallets/post.ts> (a function with typed inputs; its response is checked against the schema)

Create a new stablecoin wallet account.

**Supported Networks:**
- `stablecoin_ethereum` - Ethereum/Polygon stablecoin wallet
- `stablecoin_solana` - Solana stablecoin wallet
- `stablecoin_stellar` - Stellar stablecoin wallet

**Wallet Types:**
- **Managed** (`is_managed=true`) - Tesser-managed wallet, requires `signature`
- **Unmanaged** (`is_managed=false`, default) - External wallet, requires `wallet_address`

**Ownership:** Optionally link to a tenant or counterparty using `tenant_id` or `counterparty_id`.

## Request body

- CreateWalletAccountRequestDto
  - `tenant_id` string, uuid, nullable: Tenant ID (mutually exclusive with counterparty_id). Links this wallet to a specific tenant.
  - `counterparty_id` string, uuid, nullable: Counterparty ID (mutually exclusive with tenant_id). Links this wallet to a specific counterparty.
  - `name` string, required: Human-readable name for the wallet account
  - `type` 'stablecoin_ethereum' | 'stablecoin_solana' | 'stablecoin_stellar', required: Stablecoin network type. Determines which blockchain network the wallet operates on.
  - `signature` string: A cryptographic stamp used to verify the integrity and authenticity of the request. This ensures the request was signed by an authorized key. Required for managed wallets (is_managed=true). See Documentation > Signing for more details.
  - `is_managed` boolean: Whether this is a managed wallet (provisioned by Tesser), or unmanaged (not provisioned by Tesser). Managed wallets (true) require a signature and automatically create USDC/USDT assets. Unmanaged wallets (false) require a wallet_address. Defaults to false.
  - `wallet_address` string: Blockchain wallet address. Required for unmanaged wallets (is_managed=false). Auto-generated for managed wallets.

## Response `201`

Wallet account created successfully

- CreateWalletAccountResponseDto
  - `data` WalletAccountData, required
    - `id` string, required: Unique identifier for the account
    - `workspace_id` string, required: Workspace ID the account belongs to
    - `tenant_id` string, nullable: Tenant ID (if account belongs to a tenant)
    - `counterparty_id` string, nullable: Counterparty ID (if account belongs to a counterparty)
    - `type` string, required: Account type
    - `name` string, required: Account name
    - `created_by` 'CUSTOMER' | 'SYSTEM', required: Whether the customer registered this account (CUSTOMER) or Tesser synthesized it (SYSTEM).
    - `created_at` string, required: Creation timestamp
    - `updated_at` string, required: Last update timestamp
    - `crypto_wallet_address` string, required: Blockchain wallet address
    - `is_managed` boolean, required: Whether this is a managed wallet (provisioned by Tesser), or unmanaged (not provisioned by Tesser)
    - `assets` WalletAssetDto[]: Wallet assets with balances
      - `currency` string, required: Currency symbol
      - `network` string, required: Blockchain network
      - `available_balance` string, required: Available balance as a decimal string in currency units. Precision depends on the currency and network.

## Other responses

- `400`: Invalid request data
- `401`: Authentication required or invalid credentials
- `500`: Internal server error

---

[API](https://skmtc.dev/tesser/apis/tesser-api.md) - [All operations](https://skmtc.dev/tesser/apis/tesser-api/llms.txt) - [OpenAPI document](https://skmtc.dev/tesser/apis/tesser-api/revisions/14f951e986b1?raw)
