Deposit wallets

Create customer wallet

Register a crypto wallet address for customer USDC deposits.

POST
/api/v2/customers/{customerId}/deposit/wallets

Creates a crypto wallet address for the customer to receive USDC during deposits.

Wallet Requirements

  • Must be a valid Ethereum address
  • Must support USDC on Base network
  • Wallet address must be unique within your organization
  • walletType (SELF_CUSTODY or CUSTODIAL) and ownershipAttested: true are optional for now, and will become required in a future release
  • When walletType is supplied, ownershipAttested: true is required, and custodial wallets also require vaspName
  • Omitting them leaves the wallet without an ownership declaration; on update, an existing declaration is kept unless the address changes, which clears it

Licensing

  • Licensed organizations: Wallet is optional. If no wallet is configured, funds will be forwarded to your organization's wallet.
  • Unlicensed organizations: A wallet must be configured for each customer before deposits can be processed.

Authorization

bearerAuth
AuthorizationBearer <token>

Organization API key obtained on Settings > API Keys page in Compose UI.

In: header

Path Parameters

customerId*string

Unique identifier of the customer

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST 'https://compose.finance/api/v2/customers/{customerId}/deposit/wallets' \  -H 'Authorization: Bearer YOUR_API_KEY' \  -H 'Content-Type: application/json' \  -d '{    "address": "0x1234567890abcdef1234567890abcdef12345678",    "currency": "usdc",    "chain": "base",    "walletType": "SELF_CUSTODY",    "ownershipAttested": true  }'
{
  "id": "wallet_abc123",
  "customerId": "550e8400-e29b-41d4-a716-446655440001",
  "address": "0x1234567890AbcdEF1234567890aBcdef12345678",
  "currency": "usdc",
  "chain": "base",
  "enabled": true,
  "walletType": "SELF_CUSTODY",
  "vaspName": "Coinbase",
  "vaspAccountRef": "[email protected]",
  "ownershipAttestedAt": "2026-08-12T10:30:00.000Z",
  "createdAt": "2024-01-15T10:30:00.000Z",
  "updatedAt": "2024-01-15T10:30:00.000Z"
}

{
  "error": "address: Invalid Ethereum address format"
}

{
  "error": "Unauthorized - Invalid or missing API key or session"
}
{
  "error": "Customer wallets feature is not enabled for your organization"
}
{
  "error": "Customer not found"
}

{
  "error": "This wallet address is already registered for another customer in your organization"
}