Custodial vs Non-Custodial interaction
TRP supports two beneficiary models, indicated by the isSelfHosted flag on the applicant.
| Field | Custodial | Non-Custodial (self-hosted) |
|---|---|---|
isSelfHosted | false | true |
| Counterparty | Another VASP | An individual / wallet owner |
| Routing | Travel Address → VASP | Email confirmation (EMAIL flow) |
| IVMS101 source | Counterparty VASP | Self-attestation form |
| Wallet ownership proof | VASP attestation | Optional signature challenge |
Custodial flow
- Beneficiary VASP issues a Travel Address.
- Originator initiates with
travelAddress. - TRP forwards an inquiry to the beneficiary VASP endpoint.
- Beneficiary VASP replies with its wallet address via
inquiryResolution.
Non-Custodial (self-hosted) flow
- Originator initiates with
beneficiary.email(no Travel Address). - TRP emails the beneficiary a self-attestation form.
- 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.