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
- No Beneficiary VASP: Transaction goes directly to a self-hosted wallet
- Simplified Flow: No beneficiary VASP approval needed
- Enhanced KYC: May require additional verification for non-custodial transfers
- Auto-Skip Steps: System automatically skips VASP-to-VASP communication steps
- 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 Details → Non-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 Identified → KYC 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 - Enhanced → Originator 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 Added → Ready 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 Transaction → Completed
Status Progression
Pending Beneficiary DetailsNon-Custodial Wallet IdentifiedKYC Approved - EnhancedOriginator Details AddedReady for TransactionCompleted
Enhanced Due Diligence Requirements
Wallet Ownership Verification
Before approving transactions to non-custodial wallets:
-
Signature Verification
- Beneficiary signs a message with their private key
- Message includes wallet address and timestamp
- Signature verified against wallet's public key
-
Address Validation
- Confirm address format matches specified network
- Verify address hasn't been flagged for illicit activity
- Check against sanctions and blocked address lists
-
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 Level | Daily Limit | Monthly Limit | Single 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