Overview
Self-custody wallets are currently in beta and available to eligible BVNK customers. Some features may change as we continue to improve it. Please review the documentation and endpoints carefully, test everything in the sandbox, and reach out to the Solutions team if you need help.
Self-custody wallets are non-custodial crypto wallets where customers control their own keys. Unlike standard BVNK wallets (where BVNK holds the keys on behalf of the customer), a self-custody wallet is derived from an HD master key
(a BIP39 seed phrase) stored inside a hardware vault enclave. There is exactly one master key per customer, and every self-custody wallet for that customer is derived from that key via a BIP44 derivation path.Self-custody wallets let your customers receive crypto on-chain and send stablecoin payouts across supported networks. BVNK manages the key infrastructure and blockchain operations, so you can offer self-custody wallets without developing this infrastructure.
BVNK cannot move customer funds independently. Every payout requires an authenticated instruction from your platform.
The table below compares wallet types:
| Feature | Custodial wallets | Self-custody wallets |
|---|---|---|
| Asset safeguarding | BVNK safeguards assets per applicable regulations | Customer is responsible for their own assets |
| Key management | BVNK manages wallet keys as custodian | BVNK protects the customer’s master key inside a secure enclave; the customer can export their key material |
| Wallet structure | One wallet per currency | One wallet per currency and network |
| Onboarding | Customer onboarding and KYC requirements apply | Customer accepts the Self-Custody Agreement |
What you can build
-
Embedded crypto wallets.
Create self-custody wallets for your customers within your product. Customers can receive and hold supported crypto assets without a separate wallet application.
-
Stablecoin payouts.
Send same-currency payouts from a customer’s self-custody wallet using BVNK’s payment APIs.
For example, send USDC from a USDC wallet to an external address on a supported network.
-
Built on BVNK’s existing APIs.
Self-custody uses BVNK’s core wallet and payment endpoints, with additional configuration and key-management features specific to self-custody.
Supported currencies and networks
Self-custody wallets support the following assets and networks:
| Network | Supported assets | Network fee token |
|---|---|---|
| Ethereum | USDC, USDT, ETH | ETH |
| Arbitrum | USDC | ETH |
| Base | USDC | ETH |
| Polygon | USDC, USDT, POL | POL |
| Binance | USDC, USDT, BNB | BNB |
| Solana | USDC, USDT, SOL | SOL |
| TRON | USDT, TRX | TRX |
Each self-custody wallet is created for a specific currency and network combination. For example, USDC on Ethereum and USDC on Polygon are separate wallets for the same customer.
Network fees
Outgoing blockchain transactions require the wallet to hold enough of the network’s native token to cover network fees. For example, sending USDC on Ethereum requires sufficient ETH in the wallet.
To estimate the network fee for a payout, send the POST /api/v1/pay/estimate request. The fee appears in the networkFeePredictedAmount value of the response.
Security
BVNK generates and protects customer key material inside a secure enclave. Private key operations, including transaction signing, occur within this environment in response to authenticated instructions from your platform.
Key import and export use additional encryption and operational safeguards for enhanced security.
See Security architecture for details on key generation, transaction signing, encryption, key management, IP allowlisting, and deletion safeguards.
Current limitations
Self-custody wallets currently support:
- Receiving funds directly to the wallet's blockchain address.
- Sending funds as same-currency payouts on supported networks, such as USDC to USDC.
Self-custody wallets do not currently support:
- Payment Links or Channels
- Currency conversions
- Internal transfers between wallets
- Payment webhooks for individual transactions
Self-custody requires customers to be created specifically for this use case. Existing customers using other BVNK products cannot yet be activated for self-custody.
How it works
-
Activate self-custody.
Your customer accepts the BVNK Self-Custody Agreement.
-
Create a wallet for a supported currency and network.
When you create a customer’s first self-custody wallet, BVNK provisions their master key. Additional self-custody wallets for the same customer are derived from this key.
-
Receive funds.
Anyone can send supported assets directly to the wallet’s blockchain address.
-
Send funds.
Create a same-currency payout through the BVNK payment API.
BVNK processes the authenticated instruction, signs the blockchain transaction, and broadcasts it to the network.
See Set up self-custody wallets for the complete implementation flow.
What's next
- Activate self-custody wallets for a customer and create their wallets for each currency and network.
- Learn how BVNK protects key material with envelope encryption and operation safeguards.
- Manage a customer's key pair: list, export, import, and delete it.
- Review the partner and customer responsibilities for handling key material.