Skip to main content

Standard Transaction Flow

The standard transaction flow is the most common workflow for transfers between two registered VASPs with full KYC/AML compliance.

Flow Overview​

graph TD
A[1. Create Transaction] --> B[2. Add Beneficiary Details]
B --> C[3. KYC Approve Beneficiary]
C --> D[4. Add Originator Details]
D --> E[5. Send to Beneficiary VASP]
E --> F[6. Approve Originator]
F --> G[7. Payment Check Approve]
G --> H[8. Submit Transaction Hash]
H --> I[Transaction Complete]

Complete Step-by-Step Guide​

Step 1: Create Transaction​

Create the initial transaction with basic transfer information.

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

{
"network": "bitcoin",
"virtualAsset": "Bitcoin (BTC)",
"amount": "100.50",
"beneficiaryWalletAddress": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
"originatorWalletAddress": "bc1qabc123def456ghi789jkl012mno345pqr678stu",
"memo": "Payment for invoice #123",
"purpose": "Commercial payment"
}

Response:

{
"success": true,
"data": {
"id": "txn_abc123",
"status": "Pending Beneficiary Details",
"network": "bitcoin",
"amount": "100.50",
"createdAt": "2024-08-07T10:00:00Z"
}
}

Step 2: Add Beneficiary Details​

Add comprehensive beneficiary information including VASP association.

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

Natural Person Example:

{
"beneficiaryVaspId": "vasp_123456",
"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"
}

Legal Person Example:

{
"beneficiaryVaspId": "vasp_123456",
"isLegalPerson": true,
"beneficiaryLegalName": "Global Finance Corp",
"beneficiaryOrganization": "Global Finance Corp",
"dateOfIncorporation": "2015-08-20",
"placeOfIncorporation": "London, UK",
"buildingNumber": "456",
"streetName": "Corporate Avenue",
"townName": "London",
"postCode": "SW1A 1AA",
"country": "GB",
"beneficiaryIdNumber": "GB987654321",
"beneficiaryIdType": "LEIX",
"beneficiaryIdCountryOfIssue": "GB",
"beneficiaryRegistrationAuthority": "Companies House"
}

Status Change: Pending Beneficiary Details → Pending KYC Approval

Step 3: KYC Approve Beneficiary​

Approve the beneficiary's KYC information after verification.

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

{
"note": "KYC documentation verified successfully",
"riskScore": "low",
"verificationMethod": "document_review",
"approvedBy": "compliance_officer_001"
}

Status Change: Pending KYC Approval → KYC Approved

Step 4: Add Originator Details​

Provide complete originator information.

Endpoint: POST https://api.trpcontinuum.com/trp/transactions/{transactionId}/originator-details

Natural Person Example:

{
"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: KYC Approved → Originator Details Added

Step 5: Send to Beneficiary VASP​

Transmit transaction information to the beneficiary VASP.

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

{}

Status Change: Originator Details Added → Sent to Beneficiary

Step 6: Approve Originator (Beneficiary VASP)​

Beneficiary VASP approves the originator's KYC information.

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

{
"note": "Originator KYC approved by beneficiary VASP",
"approvedBy": "beneficiary_compliance_team",
"approvalDate": "2024-08-07T10:30:00Z"
}

Status Change: Sent to Beneficiary → Originator Approved

Step 7: Payment Check Approve​

Verify and approve the payment address and transaction details.

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

{
"note": "Payment address verified successfully",
"verificationMethod": "address_ownership_proof",
"addressValid": true,
"networkConfirmed": true
}

Status Change: Originator Approved → Payment Check Approved

Step 8: Submit Transaction Hash​

Submit the blockchain transaction hash after executing the on-chain transfer.

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

{
"txHash": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
"note": "Transaction completed on blockchain",
"blockNumber": 18456789,
"gasUsed": 21000,
"transactionFee": "0.0001"
}

Status Change: Payment Check Approved → Completed

Status Progression​

  1. Pending Beneficiary Details
  2. Pending KYC Approval
  3. KYC Approved
  4. Originator Details Added
  5. Sent to Beneficiary
  6. Originator Approved
  7. Payment Check Approved
  8. Completed

Required Fields Summary​

Transaction Creation (Minimum)​

  • network
  • virtualAsset
  • amount
  • beneficiaryWalletAddress

Beneficiary Details (Natural Person)​

  • beneficiaryVaspId
  • beneficiaryFirstName
  • beneficiaryLastName
  • dateOfBirth
  • country

Originator Details (Natural Person)​

  • originatorFirstName
  • originatorLastName
  • originatorDob
  • originatorCountry

Error Handling​

At any step, transactions can be rejected:

  • KYC Rejection: Use /kyc-check/reject endpoint
  • Payment Rejection: Use /payment-check/reject endpoint
  • General Rejection: Use /reject endpoint

Rejected transactions move to Rejected status with detailed reason codes.

Common Issues​

  1. Invalid VASP ID: Ensure beneficiaryVaspId exists and is verified
  2. Missing Required Fields: Check field requirements for each step
  3. Sanctions Hit: Resolve through compliance team before proceeding
  4. Network Mismatch: Ensure wallet address matches specified network
  5. Amount Limits: Verify transaction amount within VASP limits