Skip to main content

Condensed Flows Overview

The condensed transaction flow combines multiple standard flow steps (Create Transaction + Add Beneficiary + Add Originator + KYC Check) into a single optimized API call, automatically performing KYC checks and holding transactions if matches are found.

Benefits

  • Faster Processing: Combines 4+ API calls into 1
  • Automatic KYC Screening: Built-in sanctions checking
  • Consistent Data: All transaction data provided upfront
  • Error Reduction: Single validation point
  • Developer Efficiency: Simpler integration

Flow Overview

graph TD
A[1. Create Complete Transaction] --> B{KYC Matches Found?}
B -->|No| C[2. Send to Beneficiary VASP]
B -->|Yes| D[Transaction Held for Review]
D --> E[Manual KYC Approve/Reject]
E -->|Approved| C
E -->|Rejected| F[Transaction Rejected]
C --> G[3. Approve Originator]
G --> H[4. Payment Check Approve]
H --> I[5. Submit Transaction Hash]
I --> J[Transaction Complete]

Supported Transaction Types

The condensed flow supports all major transaction patterns:

  1. Natural Person - Individual to individual transactions
  2. Legal Person - Corporate and business entities
  3. Non-Custodial Wallet - Self-hosted wallets
  4. Unregistered VASP - Unknown service providers
  5. Travel Address - Privacy-enhanced transactions

Base API Endpoint

All condensed flows use the same endpoint with different payload structures:

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

Common Response Structure

Success (No KYC Matches)

{
"success": true,
"data": {
"id": "txn_abc123",
"status": "Client Info Pending Send",
"network": "bitcoin",
"amount": "100.50",
"kycCheck": {
"hasMatches": false,
"totalMatches": 0,
"beneficiaryChecked": true,
"originatorChecked": true
},
"createdAt": "2024-08-07T10:00:00Z",
"updatedAt": "2024-08-07T10:00:00Z"
}
}

Success (KYC Matches Found)

{
"success": true,
"data": {
"id": "txn_abc123",
"status": "KYC Beneficiary Pending Review",
"network": "bitcoin",
"amount": "100.50",
"kycCheck": {
"hasMatches": true,
"totalMatches": 3,
"beneficiaryMatches": 2,
"originatorMatches": 1,
"topMatch": {
"score": 0.95,
"name": "Jane Smith",
"riskLevel": "high",
"sources": ["sanctions", "pep"]
}
},
"createdAt": "2024-08-07T10:00:00Z",
"updatedAt": "2024-08-07T10:00:00Z"
}
}

Status Progression

Without KYC Matches

  1. Client Info Pending Send → Ready for beneficiary VASP transmission
  2. Continue with standard flow (Send to Beneficiary → Payment Check → TX Hash)

With KYC Matches

  1. KYC Beneficiary Pending Review → Manual review required
  2. After approval → Client Info Pending Send
  3. Continue with standard flow

Performance Comparison

Traditional FlowCondensed Flow
4+ API calls1 API call
Multiple validationsSingle validation
Step-by-step errorsUpfront validation
Manual KYC timingAutomatic screening
Complex state managementSimplified workflow

Migration Guide

From Standard Flow

Replace this:

// Old: Multiple API calls
const txn = await createTransaction(data);
const beneficiary = await addBeneficiary(txn.id, beneficiaryData);
const originator = await addOriginator(txn.id, originatorData);
const kyc = await approveKyc(txn.id);

With this:

// New: Single API call
const txn = await createCondensedTransaction({
transaction: data,
beneficiary: beneficiaryData,
originator: originatorData
});

Handling KYC Holds

const response = await createCondensedTransaction(data);

if (response.data.kycCheck.hasMatches) {
console.log(`Transaction held for review: ${response.data.kycCheck.totalMatches} matches found`);
// Handle manual review process
} else {
console.log('Transaction approved, proceeding to send to beneficiary');
// Continue with standard workflow
}

Best Practices

  1. Always validate data locally before sending to condensed endpoint
  2. Handle KYC holds gracefully with appropriate user messaging
  3. Use appropriate transaction types (registered VASP vs non-custodial)
  4. Never use forceApproveKyc in production without proper safeguards
  5. Implement proper error handling for validation failures
  6. Monitor KYC match rates to optimize data quality

Error Handling

Common validation errors:

  • Missing Required Fields: Ensure all mandatory fields are present
  • Invalid VASP ID: Verify beneficiaryVaspId exists and is active
  • Network/Address Mismatch: Wallet address must match specified network
  • Travel Address Invalid: Travel address format or resolution fails
  • KYC Data Incomplete: Insufficient information for sanctions screening