Last updated

Custodial vs Non-Custodial interaction

TRP supports two beneficiary models, indicated by the isSelfHosted flag on the applicant.

FieldCustodialNon-Custodial (self-hosted)
isSelfHostedfalsetrue
CounterpartyAnother VASPAn individual / wallet owner
RoutingTravel Address → VASPEmail confirmation (EMAIL flow)
IVMS101 sourceCounterparty VASPSelf-attestation form
Wallet ownership proofVASP attestationOptional signature challenge

Custodial flow

  1. Beneficiary VASP issues a Travel Address.
  2. Originator initiates with travelAddress.
  3. TRP forwards an inquiry to the beneficiary VASP endpoint.
  4. Beneficiary VASP replies with its wallet address via inquiryResolution.

Non-Custodial (self-hosted) flow

  1. Originator initiates with beneficiary.email (no Travel Address).
  2. TRP emails the beneficiary a self-attestation form.
  3. Once the beneficiary confirms, TRP fires the same callback chain as the custodial flow.

You can mix the two: a beneficiary VASP may declare the recipient as self-hosted when responding to an inquiry by setting the IVMS101 customerIdentification accordingly. The /travel-address/generate endpoint accepts isSelfHosted to record this hint at onboarding.