Skip to content

Custodial vs self-hosted wallets

Set policy expectations before you build

Wallet type influences which compliance actions are required. Custodial wallets belong to VASPs, while self-hosted wallets are controlled directly by the customer. This page explains the differences and how to identify them in practice.

How to differentiate wallet types

Because blockchain addresses do not reveal ownership, you must determine wallet type through customer input and internal checks:

  • Ask the customer during withdrawal setup (select "exchange/VASP" vs "self-hosted").
  • 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) - You must send a Travel Rule message to the beneficiary VASP and track delivery and response statuses.
  • Self-hosted (non-custodial) - There is no beneficiary VASP to contact, but you must verify ownership based on your policy (signature proof, micro-transaction, or other evidence). We still advise you to also send an additonal Travel Rule message using CryptoSwift API for transactions involving self-hosted wallets (and marking the wallet type as NON_CUSTODIAL) for record-keeping purposes.

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