Skip to main content

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

  1. Travel Address Generation: Beneficiary generates a travel address first
  2. Automatic VASP Resolution: System automatically resolves the beneficiary VASP from the travel address
  3. Privacy Enhancement: Actual wallet address is not exposed until necessary
  4. 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 DetailsTravel 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 ResolvedOriginator 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 AddedSent 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 BeneficiaryOriginator 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 ApprovedPayment 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 ApprovedCompleted

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

  1. Pending Beneficiary Details
  2. Travel Address Resolved
  3. Originator Details Added
  4. Sent to Beneficiary
  5. Originator Approved
  6. Payment Check Approved
  7. Completed

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: ta1 identifies 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

  1. Recurring Payments: Generate travel address for regular transactions
  2. Invoice Payments: Include travel address in invoices for automatic routing
  3. Cross-Border Transfers: Enhanced privacy for international transactions
  4. High-Value Transactions: Additional privacy layer for large amounts
  5. 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