Travel Address Flow
The Travel Address flow provides enhanced privacy by using encoded addresses that contain VASP and transaction information. This flow is ideal when the beneficiary wants to share a single address that automatically routes to the correct VASP.
Flow Overview
graph TD
A[1. Beneficiary: Generate Travel Address] --> B[2. Originator: Create Transaction with Travel Address]
B --> C[3. Add Beneficiary Details]
C --> D[4. Add Originator Details]
D --> E[5. Send to Beneficiary VASP]
E --> F[6. Approve Originator - Beneficiary VASP]
F --> G[7. Payment Check Approve]
G --> H[8. Submit Transaction Hash]
H --> I[Transaction Complete]
Key Differences from Standard Flow
- Travel Address Generation: Beneficiary generates a travel address first
- Automatic VASP Resolution: System automatically resolves the beneficiary VASP from the travel address
- Privacy Enhancement: Actual wallet address is not exposed until necessary
- Simplified KYC: KYC approval step is automatically handled when using travel addresses
Complete Step-by-Step Guide
Step 1: Generate Travel Address (Beneficiary)
The beneficiary generates a travel address to receive funds.
Endpoint: POST https://api.trpcontinuum.com/trp/travel-address
{
"userId": "user_123",
"label": "Travel Address for Transaction",
"email": "beneficiary@example.com"
}
Response:
{
"success": true,
"data": {
"id": "ta_456789",
"travelAddress": "ta1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
"label": "Travel Address for Transaction",
"createdAt": "2024-08-07T10:00:00Z",
"expiresAt": "2024-09-07T10:00:00Z",
"inquiryUrl": "https://api.beneficiary-vasp.com/trp/inquiry",
"vaspInfo": {
"id": "vasp_beneficiary_123",
"name": "Beneficiary VASP Exchange"
}
}
}
Step 2: Create Transaction with Travel Address (Originator)
The originator creates a transaction using the travel address.
Endpoint: POST https://api.trpcontinuum.com/trp/transactions
{
"network": "bitcoin",
"virtualAsset": "Bitcoin (BTC)",
"amount": "100.50",
"beneficiaryWalletAddress": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
"travelAddress": "ta1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
"originatorWalletAddress": "bc1qabc123def456ghi789jkl012mno345pqr678stu",
"memo": "Payment via travel address"
}
Response:
{
"success": true,
"data": {
"id": "txn_travel_456",
"status": "Pending Beneficiary Details",
"network": "bitcoin",
"amount": "100.50",
"travelAddress": "ta1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
"beneficiaryVaspId": "vasp_beneficiary_123",
"createdAt": "2024-08-07T10:15:00Z"
}
}
Note: The beneficiaryVaspId is automatically populated from the travel address.
Step 3: Add Beneficiary Details (Required)
Even with a travel address, beneficiary details are required for compliance.
Endpoint: POST https://api.trpcontinuum.com/trp/transactions/{transactionId}/add-beneficiary
{
"isLegalPerson": false,
"beneficiaryFirstName": "Jane",
"beneficiaryLastName": "Smith",
"dateOfBirth": "1990-05-15",
"placeOfBirth": "New York, NY",
"buildingNumber": "123",
"streetName": "Main Street",
"townName": "New York",
"postCode": "10001",
"country": "US",
"beneficiaryIdNumber": "123456789",
"beneficiaryIdType": "PASSPORT",
"beneficiaryIdCountryOfIssue": "US"
}
Status Change: Pending Beneficiary Details → Travel Address Resolved
Step 4: Add Originator Details
Add originator information as in the standard flow.
Endpoint: POST https://api.trpcontinuum.com/trp/transactions/{transactionId}/originator-details
{
"isLegalPerson": false,
"originatorFirstName": "John",
"originatorLastName": "Doe",
"originatorDob": "1985-03-20",
"originatorPlaceOfBirth": "Chicago, IL",
"originatorIdNumber": "987654321",
"originatorIdType": "PASSPORT",
"originatorIdCountryOfIssue": "US",
"originatorAddressLine1": "456 Oak Street",
"originatorCity": "San Francisco",
"originatorState": "CA",
"originatorPostalCode": "94102",
"originatorCountry": "US"
}
Status Change: Travel Address Resolved → Originator Details Added
Step 5: Send to Beneficiary VASP
Send transaction to the beneficiary VASP (automatically resolved).
Endpoint: POST https://api.trpcontinuum.com/trp/transactions/{transactionId}/send-to-beneficiary
{}
Automatic Behavior:
- System uses travel address to identify beneficiary VASP
- Transaction information is sent to the resolved inquiry URL
- Privacy metadata is maintained throughout the process
Status Change: Originator Details Added → Sent to Beneficiary
Step 6: Approve Originator (Beneficiary VASP)
Beneficiary VASP approves the originator.
Endpoint: POST https://api.trpcontinuum.com/trp/transactions/{transactionId}/approve-originator
{
"note": "Originator approved via travel address flow",
"travelAddressVerified": true,
"privacyPreferencesRespected": true
}
Status Change: Sent to Beneficiary → Originator Approved
Step 7: Payment Check Approve
Approve payment address verification.
Endpoint: POST https://api.trpcontinuum.com/trp/transactions/{transactionId}/payment-check/approve
{
"note": "Payment address verified successfully via travel address",
"addressOwnershipConfirmed": true,
"travelAddressIntegrityVerified": true
}
Status Change: Originator Approved → Payment Check Approved
Step 8: Submit Transaction Hash
Submit the blockchain transaction hash.
Endpoint: POST https://api.trpcontinuum.com/trp/transactions/{transactionId}/tx-hash-submit
{
"txHash": "0x9876543210fedcba9876543210fedcba9876543210fedcba9876543210fedcba",
"note": "Transaction completed via travel address flow",
"blockNumber": 18456790,
"gasUsed": 21000,
"transactionFee": "0.0001",
"travelAddressUsed": "ta1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh"
}
Status Change: Payment Check Approved → Completed
Travel Address Utilities
Validate Travel Address
Check if a travel address is valid and active.
Endpoint: POST https://api.trpcontinuum.com/trp/validate-travel-address
{
"travelAddress": "ta1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh"
}
Response:
{
"success": true,
"data": {
"valid": true,
"active": true,
"vaspId": "vasp_beneficiary_123",
"vaspName": "Beneficiary VASP Exchange",
"expiresAt": "2024-09-07T10:00:00Z",
"supportedNetworks": ["bitcoin", "ethereum", "polygon"],
"inquiryUrl": "https://api.beneficiary-vasp.com/trp/inquiry"
}
}
Decode Travel Address
Extract information from a travel address.
Endpoint: POST https://api.trpcontinuum.com/trp/decode-travel-address
{
"travelAddress": "ta1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh"
}
Response:
{
"success": true,
"data": {
"vaspId": "vasp_beneficiary_123",
"inquiryUrl": "https://api.beneficiary-vasp.com/trp/inquiry",
"confirmationUrl": "https://api.beneficiary-vasp.com/trp/confirmation",
"networkSupport": ["bitcoin", "ethereum", "polygon"],
"metadata": {
"label": "Travel Address for Transaction",
"createdAt": "2024-08-07T10:00:00Z",
"version": "1.0"
},
"privacyFeatures": {
"addressMasking": true,
"metadataEncryption": true,
"selectiveDisclosure": true
}
}
}
Status Progression
Pending Beneficiary DetailsTravel Address ResolvedOriginator Details AddedSent to BeneficiaryOriginator ApprovedPayment Check ApprovedCompleted
Benefits of Travel Address Flow
1. Enhanced Privacy
- Beneficiary's actual wallet address not exposed initially
- Selective disclosure of transaction metadata
- End-to-end encryption for sensitive information
2. Simplified User Experience
- Single address works across multiple transactions
- Automatic VASP routing eliminates manual selection
- Reduced setup time for recurring payments
3. Improved Security
- Travel addresses can have expiration dates
- Built-in fraud detection and monitoring
- Cryptographic integrity verification
4. Regulatory Compliance
- Full Travel Rule compliance maintained
- Enhanced audit trail with privacy preservation
- Automatic sanctions screening with privacy protection
Travel Address Format
Travel addresses follow this format:
ta1[version][vasp_id][metadata][checksum]
Components:
- Prefix:
ta1identifies Travel Rule addresses - Version: Protocol version (currently
1) - VASP ID: Encoded beneficiary VASP identifier
- Metadata: Encrypted inquiry URL and preferences
- Checksum: Error detection for address integrity
Implementation Considerations
1. Address Generation
- Travel addresses should be generated on-demand
- Include appropriate expiration times (30-90 days)
- Support address labeling for user organization
2. Privacy Controls
- Implement user-configurable privacy levels
- Support selective disclosure preferences
- Maintain audit trails without exposing sensitive data
3. Network Compatibility
- Verify travel address supports transaction network
- Handle cross-network compatibility checks
- Provide clear network support indicators
4. Error Handling
- Handle expired travel addresses gracefully
- Provide clear error messages for invalid addresses
- Support address renewal workflows
Common Use Cases
- Recurring Payments: Generate travel address for regular transactions
- Invoice Payments: Include travel address in invoices for automatic routing
- Cross-Border Transfers: Enhanced privacy for international transactions
- High-Value Transactions: Additional privacy layer for large amounts
- Merchant Payments: Simplified checkout with automatic VASP detection
Security Best Practices
- Validate travel addresses before transaction creation
- Verify VASP identity through independent channels
- Monitor for suspicious travel address usage patterns
- Maintain secure key management for address decryption