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 DetailsPending 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 ApprovalKYC 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 ApprovedOriginator 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 AddedSent 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 BeneficiaryOriginator 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 ApprovedPayment 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 ApprovedCompleted

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