Venly API

Custodial vs Non-Custodial

This page describes how to set up custodial or non-custodial wallets.
If you are looking for a custodial solution, where Venly takes on the custodial role and responsibility: please have a look at our Widget solution.


With the Wallet-API solution, Venly is considered the technology provider. As a client, you have the option to create custodial (where you become custodian) or non-custodial wallets.
The difference is explained below.
Custodial Wallet
As custodial you take custody of the private key needed to access the user's wallet. Note that from a technical viewpoint, Venly provides all the services and security needed to store and manage the private keys of your users. You will not need to store the keys yourself.
Usability In the custody solution, users can be assisted when they lose access to their wallet (e.g. they forgot their PIN code). Venly can recover the private keys in this case and reset the PIN codes for the user. Full control As you are considered the owner of the created wallets, you have full control over them. The custody solution allows for flows and use cases where you need to access the user's-wallets, without their interaction.
Compliance You are considered the custodian of the wallets and are therefore required to comply with the necessary AML/KYC regulations (if applicable).
Non-custodial Wallet
In a non-custodial solution, the end-user has sole responsibility for protecting their holdings. The user's wallets are not accessible by Venly or you, without user interaction. Note that from a technical point of view, Venly will still be in charge of storing and managing the private keys. Venly is however never able to access these keys.
Faster go-to-market Compliance regulations are lighter, therefore allowing you to setup a solution faster.
Wallets are unrecoverable If a user would lose access to their wallet, you, nor Venly, is able to recover these wallets. Wallet access will become the sole responsibility of the end-user. User interaction needed For each wallet-interaction (e.g. initiating a transfer), user interaction is needed. The user is required to enter their PIN code / sign for the request, before it can be executed. The raw PIN Code can therefore never be stored in your system, it should always be provided by the user.


Custodial wallet creation

To create a Custodial wallet, use the type WHITE_LABEL when creating a wallet.
POST /api/wallets
"pincode" : "1234",
"description" : "My first custodial wallet",
"secretType" : "MATIC",
"walletType" : "WHITE_LABEL"

Non-Custodial wallet creation

To create a Non-Custodial wallet, use the type UNRECOVERABLE_WHITE_LABEL when creating a wallet.
POST /api/wallets
"pincode" : "1234",
"description" : "My first non-custodial wallet",
"secretType" : "MATIC",