Skip to main content
POST
/
customers
/
{customerId}
/
wallets
Create a wallet
curl --request POST \
  --url https://api.conduit.financial/v2/customers/{customerId}/wallets \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: <idempotency-key>' \
  --header 'x-api-key: <api-key>' \
  --data '
{
  "chain": "<string>",
  "clientReferenceId": "<string>"
}
'
{
  "id": "wlt_2xKjF9mQb7vN4hL1pR3w8t",
  "chain": "ethereum",
  "address": "0x742d35Cc6634C0532925a3b844Bc9e7595f2bD18",
  "status": "active",
  "balances": [
    {
      "available": {
        "code": "USD",
        "amount": "1000.00"
      },
      "pending": {
        "code": "USD",
        "amount": "0.00"
      },
      "frozen": {
        "code": "USD",
        "amount": "0.00"
      }
    }
  ],
  "createdAt": "2026-01-15T09:30:00.000Z",
  "updatedAt": "2026-01-15T09:30:00.000Z",
  "custodyModel": "custodial",
  "rotatedAt": "2026-01-15T09:30:00.000Z",
  "replacedByWalletId": "<string>",
  "clientReferenceId": "<string>"
}

Authorizations

x-api-key
string
header
required

Headers

Idempotency-Key
string
required

Caller-generated unique key that lets the server safely replay this request. The cached response is returned for 5 minutes on any retry with the same key from the same API principal. Required on every state-changing money-moving or resource-creating POST.

Required string length: 1 - 128
Pattern: ^[A-Za-z0-9_.:-]{1,128}$

Path Parameters

customerId
string
required

Body

application/json
chain
string
required

Blockchain network for the new wallet

clientReferenceId
string
Pattern: ^[A-Za-z0-9_\-:.]{1,255}$

Response

id
string
required

Unique wallet identifier

Pattern: ^wlt_[0-9A-Za-z]{22}$
Example:

"wlt_2xKjF9mQb7vN4hL1pR3w8t"

chain
enum<string>
required

Blockchain network of the wallet

Available options:
ethereum,
base,
polygon,
solana,
tron
Example:

"ethereum"

address
string | null
required

On-chain wallet address, null while provisioning

Example:

"0x742d35Cc6634C0532925a3b844Bc9e7595f2bD18"

status
enum<string>
required

Current wallet lifecycle status

Available options:
pending,
active,
disabled
Example:

"active"

balances
object[]
required

Wallet balances by asset

createdAt
string<date-time>
required

Timestamp when the wallet was created

Example:

"2026-01-15T09:30:00.000Z"

updatedAt
string<date-time>
required

Timestamp when the wallet was last updated

Example:

"2026-01-15T09:30:00.000Z"

custodyModel
enum<string>

Which side holds the signing key. custodial — Conduit signs on the customer's behalf. non_custodial — the customer co-signs each payout via the verify URL (see requiresUserSignature on payouts). Omitted when the custody model has not yet been determined.

Available options:
custodial,
non_custodial
Example:

"custodial"

rotatedAt
string<date-time>

Timestamp of the last key rotation, omitted until rotated

Example:

"2026-01-15T09:30:00.000Z"

replacedByWalletId
string

ID of the wallet that replaced this one after rotation, omitted until rotated

Pattern: ^wlt_[0-9A-Za-z]{22}$
clientReferenceId
string
Pattern: ^[A-Za-z0-9_\-:.]{1,255}$