Skip to main content

Non-Custodial Wallet Flow

The non-custodial wallet flow is used for transactions to self-hosted wallets where the beneficiary controls their own private keys without a custodial VASP intermediary.

Flow Overview

graph TD
A[1. Create Transaction] --> B[2. Mark as Non-Custodial]
B --> C[3. KYC Approval for Beneficiary]
C --> D[4. Add Originator Details]
D --> E[5. Send to Beneficiary - Auto Skip]
E --> F[6. Submit Transaction Hash]
F --> G[Transaction Complete]

Key Differences from Standard Flow

  1. No Beneficiary VASP: Transaction goes directly to a self-hosted wallet
  2. Simplified Flow: No beneficiary VASP approval needed
  3. Enhanced KYC: May require additional verification for non-custodial transfers
  4. Auto-Skip Steps: System automatically skips VASP-to-VASP communication steps
  5. Direct Settlement: Funds sent directly to beneficiary's wallet address

Complete Step-by-Step Guide

Step 1: Create Transaction

Create a transaction destined for a non-custodial wallet.

Endpoint: POST https://api.trpcontinuum.com/trp/transactions

{
"network": "bitcoin",
"virtualAsset": "Bitcoin (BTC)",
"amount": "50.25",
"beneficiaryWalletAddress": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
"originatorWalletAddress": "bc1qabc123def456ghi789jkl012mno345pqr678stu",
"memo": "Payment to non-custodial wallet",
"transactionType": "non_custodial"
}

Response:

{
"success": true,
"data": {
"id": "txn_noncustodial_789",
"status": "Pending Beneficiary Details",
"network": "bitcoin",
"amount": "50.25",
"transactionType": "non_custodial",
"beneficiaryWalletAddress": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
"createdAt": "2024-08-07T11:00:00Z"
}
}

Step 2: Mark as Non-Custodial

Identify the transaction as going to a non-custodial wallet and add beneficiary details.

Endpoint: POST https://api.trpcontinuum.com/trp/transactions/{transactionId}/add-beneficiary

{
"isNonCustodialWallet": true,
"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",
"walletOwnershipProof": {
"method": "signature",
"signedMessage": "I own wallet bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
"signature": "H1234567890abcdef..."
}
}

Important: The isNonCustodialWallet: true flag triggers the non-custodial flow.

Response:

{
"success": true,
"data": {
"transactionId": "txn_noncustodial_789",
"status": "Non-Custodial Wallet Identified",
"beneficiaryType": "non_custodial",
"walletVerificationStatus": "pending",
"enhancedDueDiligenceRequired": true
}
}

Status Change: Pending Beneficiary DetailsNon-Custodial Wallet Identified

Step 3: KYC Approval for Beneficiary

Approve KYC for the non-custodial wallet beneficiary with enhanced due diligence.

Endpoint: POST https://api.trpcontinuum.com/trp/transactions/{transactionId}/kyc-check/approve

{
"note": "Non-custodial wallet KYC approved with enhanced verification",
"verificationLevel": "enhanced",
"walletOwnershipVerified": true,
"riskAssessment": {
"overallRisk": "medium",
"factors": [
"non_custodial_wallet",
"enhanced_verification_completed",
"wallet_ownership_verified"
]
},
"additionalVerifications": {
"addressOwnershipConfirmed": true,
"signatureVerified": true,
"identityDocumentsReviewed": true,
"sourceOfFundsDocumented": true
}
}

Response:

{
"success": true,
"data": {
"transactionId": "txn_noncustodial_789",
"status": "KYC Approved - Enhanced",
"approvalDetails": {
"approvedBy": "compliance_officer_002",
"approvalTime": "2024-08-07T11:15:00Z",
"verificationLevel": "enhanced",
"validUntil": "2024-08-07T23:59:59Z"
}
}
}

Status Change: Non-Custodial Wallet IdentifiedKYC Approved - Enhanced

Step 4: Add Originator Details

Add originator information.

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",
"relationship": "business_partner",
"transactionPurpose": "payment_for_services"
}

Status Change: KYC Approved - EnhancedOriginator Details Added

Step 5: Send to Beneficiary (Auto-Skip)

This step automatically handles non-custodial logic.

Endpoint: POST https://api.trpcontinuum.com/trp/transactions/{transactionId}/send-to-beneficiary

{}

Automatic Behavior:

  • System recognizes non-custodial flag
  • Skips VASP-to-VASP communication
  • Creates direct payment authorization
  • Updates status to ready for blockchain transaction

Response:

{
"success": true,
"data": {
"transactionId": "txn_noncustodial_789",
"status": "Ready for Transaction",
"paymentAuthorization": {
"authorized": true,
"authorizationId": "auth_noncustodial_456",
"validUntil": "2024-08-07T23:59:59Z"
},
"skipReasons": [
"non_custodial_wallet_detected",
"no_beneficiary_vasp_communication_required"
]
}
}

Status Change: Originator Details AddedReady for Transaction

Step 6: Submit Transaction Hash

Submit the blockchain transaction hash after on-chain transfer.

Endpoint: POST https://api.trpcontinuum.com/trp/transactions/{transactionId}/tx-hash-submit

{
"txHash": "0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890",
"note": "Transaction sent to non-custodial wallet",
"blockNumber": 18456791,
"gasUsed": 21000,
"transactionFee": "0.0001",
"confirmations": 1,
"networkFee": "0.00005",
"actualAmount": "50.24995"
}

Response:

{
"success": true,
"data": {
"transactionId": "txn_noncustodial_789",
"status": "Completed",
"blockchainInfo": {
"txHash": "0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890",
"blockNumber": 18456791,
"confirmations": 1,
"networkFee": "0.00005"
},
"completedAt": "2024-08-07T11:45:00Z",
"transactionType": "non_custodial"
}
}

Status Change: Ready for TransactionCompleted

Status Progression

  1. Pending Beneficiary Details
  2. Non-Custodial Wallet Identified
  3. KYC Approved - Enhanced
  4. Originator Details Added
  5. Ready for Transaction
  6. Completed

Enhanced Due Diligence Requirements

Wallet Ownership Verification

Before approving transactions to non-custodial wallets:

  1. Signature Verification

    • Beneficiary signs a message with their private key
    • Message includes wallet address and timestamp
    • Signature verified against wallet's public key
  2. Address Validation

    • Confirm address format matches specified network
    • Verify address hasn't been flagged for illicit activity
    • Check against sanctions and blocked address lists
  3. Identity Confirmation

    • Enhanced document verification
    • Video call verification for high-value transactions
    • Proof of residence documentation

Risk Assessment Factors

Low Risk Indicators:

  • Verified wallet ownership
  • Clear transaction purpose
  • Regular business relationship
  • Small transaction amounts (under $1,000)

Medium Risk Indicators:

  • New business relationship
  • Moderate amounts ($1,000-$10,000)
  • Cross-border transactions
  • First-time non-custodial transaction

High Risk Indicators:

  • Large amounts (over $10,000)
  • High-risk jurisdictions
  • Suspicious transaction patterns
  • Unable to verify wallet ownership

Documentation Requirements

Maintain records of:

  • Wallet ownership proofs (signatures, screenshots)
  • Identity verification documents
  • Risk assessment results
  • Transaction monitoring alerts
  • Compliance officer approvals

Compliance Considerations

Regulatory Requirements

Travel Rule Compliance:

  • Collect required beneficiary information
  • Maintain transaction records for 5+ years
  • Report suspicious activities to authorities
  • Implement ongoing monitoring

Enhanced Monitoring:

  • Real-time sanctions screening
  • Pattern detection for structuring
  • Velocity checks for frequent transactions
  • Cross-reference with law enforcement databases

Record Keeping

Essential records for non-custodial transactions:

  • Beneficiary identification documents
  • Wallet ownership verification proofs
  • Risk assessment documentation
  • Compliance approval records
  • Transaction monitoring results

Common Use Cases

1. Personal Wallets

Users withdrawing to their own hardware or software wallets

  • Verification: Signature-based ownership proof
  • Risk Level: Low to medium
  • Monitoring: Standard velocity checks

2. DeFi Interactions

Sending funds to DeFi protocols or smart contracts

  • Verification: Contract address validation
  • Risk Level: Medium to high
  • Monitoring: Enhanced due to smart contract risks

3. Cold Storage

Moving funds to cold storage solutions

  • Verification: Multi-signature proof may be required
  • Risk Level: Low
  • Monitoring: Standard compliance checks

4. P2P Transactions

Direct peer-to-peer transfers

  • Verification: Enhanced identity verification
  • Risk Level: Medium to high
  • Monitoring: Enhanced monitoring for suspicious patterns

Risk Mitigation Strategies

Transaction Limits

Implement graduated limits based on verification level:

Verification LevelDaily LimitMonthly LimitSingle Transaction
Basic$1,000$10,000$500
Enhanced$10,000$100,000$5,000
Premium$50,000$500,000$25,000

Enhanced Monitoring

Real-time Checks:

  • Sanctions screening for wallet addresses
  • Blockchain analytics for address history
  • Pattern detection for suspicious behavior
  • Cross-referencing with law enforcement databases

Post-Transaction Monitoring:

  • Confirmation tracking on blockchain
  • Destination address monitoring
  • Follow-up verification for large amounts
  • Periodic review of transaction patterns

Best Practices

1. Wallet Ownership Verification

  • Always require cryptographic proof of ownership
  • Implement time-limited challenges to prevent replay attacks
  • Verify signatures against multiple message formats
  • Maintain audit trail of all verification attempts

2. Risk-Based Approach

  • Implement graduated verification levels
  • Adjust limits based on customer risk profile
  • Consider transaction history and patterns
  • Regular review and update of risk parameters

3. Documentation Standards

  • Standardize verification procedures
  • Maintain comprehensive audit trails
  • Document all compliance decisions
  • Regular training for compliance staff

4. Technology Integration

  • Automated signature verification systems
  • Integration with blockchain analytics tools
  • Real-time sanctions screening capabilities
  • Automated suspicious activity detection

5. Customer Communication

  • Clear explanation of verification requirements
  • Transparent fee structures for non-custodial transfers
  • Educational resources about wallet security
  • Prompt notification of transaction status updates