Custodial vs self-hosted wallets
Set policy expectations before you build
Wallet type is the first routing decision for an incoming or outgoing transaction. A custodial wallet is controlled by a provider; a self-hosted wallet is controlled by the customer. Your VASP decides how to classify the wallet and what evidence its policy requires. CryptoSwift can support that decision with Wallet Intelligence (KYW), then provide the relevant messaging or verification flow.
How to differentiate wallet types
Blockchain addresses alone do not reliably identify who controls a wallet. Your VASP can use its existing customer information, tools, and procedures; KYW is optional:
- Ask the customer during withdrawal setup (select "exchange/VASP" vs "self-hosted").
- Use Wallet Intelligence (KYW) when an additional classification signal would help. It returns custodial, non-custodial, or unknown. See Wallet Intelligence (KYW).
- Validate against your own wallet registry if the destination is an address you control.
- Use beneficiary VASP selection or entity lookup tools to confirm custodial destinations.
- Store the declared type with the transaction so it remains available for audits and investigations.
Compliance impact under the Travel Rule
- Custodial (VASP-to-VASP) - Follow the outgoing or incoming Travel Rule message flow, identify the counterparty, and handle delivery and response statuses.
- Self-hosted (non-custodial) - There is no counterparty VASP behind the wallet. Apply your policy for wallet ownership evidence and use self-hosted wallet verification when needed. For an outgoing transfer to a self-hosted wallet, your VASP may still choose to create a Travel Rule message, even when one is not required for that transfer. If you do, set
blockchainInfo.destinationTypeto"NON_CUSTODIAL". This tells CryptoSwift that the destination is self-hosted, so it will not search for a beneficiary VASP behind the address. - Unknown - Use your fallback policy: collect more context, review the case, or use KYW as an additional signal before choosing a path.
Your VASP's own custodial wallet inventory is different from a transaction counterparty's wallet. Register the addresses you control so incoming messages can be matched to your VASP.
Recommended policy approach
- Require wallet type selection for every outgoing transfer.
- Apply stricter verification to higher-risk self-hosted withdrawals.
- Maintain evidence of how wallet type was determined.
Next steps
- Self-hosted wallet verification
- Outgoing transactions overview
- Improving data quality
- Register your custodial wallets