List customer wallets
List all crypto wallets configured for a customer.
Returns all crypto wallets configured for the customer. Optionally filter by currency and chain (both required together; case-insensitive).
Authorization
bearerAuth Organization API key obtained on Settings > API Keys page in Compose UI.
In: header
Path Parameters
Unique identifier of the customer
Query Parameters
Filter by currency (e.g., "usdc"). Must be provided together with chain.
Filter by blockchain network (e.g., "base"). Must be provided together with currency.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET 'https://compose.finance/api/v2/customers/{customerId}/deposit/wallets' \ -H 'Authorization: Bearer YOUR_API_KEY'{
"wallets": [
{
"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": "Both currency and chain must be provided together when filtering wallets"
}{
"error": "Unauthorized - Invalid or missing API key or session"
}{
"error": "Customers feature is not enabled for your organization"
}{
"error": "Invalid request data"
}{
"error": "Rate limit exceeded. Please try again later."
}{
"error": "Internal server error"
}Get customer wallet GET
Returns details of a specific customer wallet by ID.
Update customer wallet PATCH
Updates a customer deposit wallet. `walletType` 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`. Omit them when updating other fields and the wallet's existing declaration is kept unchanged. Changing the address without supplying a declaration clears the wallet's current declaration, because the previous declaration was made about the previous address — send the declaration alongside the new address to keep the wallet declared. Earlier declarations are retained against the address they were made about.

