Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
LABS
Guides

Setting Up Compliance with Travel Rule Solutions

A developer-focused guide to integrating Travel Rule protocols like TRP or Sygna Bridge into a digital asset custody platform. Covers API integration, secure data exchange, and transaction screening.
Chainscore © 2026
introduction
COMPLIANCE

Introduction to Travel Rule Compliance for Custody

A technical guide for developers implementing the Travel Rule, a critical anti-money laundering regulation for cryptocurrency custodians and VASPs.

The Financial Action Task Force (FATF) Travel Rule (Recommendation 16) mandates that Virtual Asset Service Providers (VASPs), including custodians, share specific sender and beneficiary information for cryptocurrency transactions exceeding a threshold (typically $/€1,000). This regulation, now enacted in jurisdictions like the EU's Transfer of Funds Regulation (TFR) and various US state laws, is designed to prevent money laundering and terrorist financing by bringing transparency to crypto transfers. For a custodian, non-compliance risks severe penalties, license revocation, and loss of banking partnerships.

Technically, compliance involves two core functions: information sharing and screening. When a user initiates a withdrawal, your custody platform must securely collect and transmit required data points—such as the originator's name, wallet address, and national ID number—to the beneficiary's VASP before or simultaneously with the asset transfer. You must also screen incoming transactions against sanctions lists and verify that the sending VASP has provided the necessary data. This requires integrating with specialized Travel Rule solution providers or building a direct peer-to-peer protocol.

The ecosystem relies on interoperable protocols. The most widely adopted is the InterVASP Messaging Standard (IVMS 101), a universal data model for beneficiary and originator information. For message transmission, solutions typically use the Travel Rule Universal Solution Technology (TRUST) in the US, OpenVASP in Europe, or proprietary APIs from vendors like Notabene, Sygna, and Sumsub. Your technical implementation must serialize user data into the IVMS 101 format and dispatch it via one of these channels, ensuring end-to-end encryption and maintaining a verifiable audit log.

Implementing this starts with a risk assessment and vendor selection. Key technical steps include: 1) Integrating a solution provider's API to handle message routing and encryption, 2) Augmenting your transaction engine to trigger data collection and hold funds pending compliance checks, 3) Building secure data storage for PII that meets GDPR and other privacy laws, and 4) Establishing a VASP directory or using your provider's to identify counterparties. For developers, this means new backend services for compliance workflows, enhanced KYC data models, and asynchronous job queues to manage the message lifecycle.

A basic code flow for an outgoing transfer might look like this pseudocode:

python
# 1. User initiates withdrawal
if withdrawal.amount > COMPLIANCE_THRESHOLD:
    # 2. Collect & validate Travel Rule data
    originator_info = build_ivms101_data(user_kyc, wallet_address)
    # 3. Identify beneficiary VASP via directory
    beneficiary_vasp = travel_rule_directory.lookup(withdrawal.address)
    # 4. Transmit data via chosen protocol (e.g., TRUST API)
    message_id = trust_api.send_message(originator_info, beneficiary_vasp)
    # 5. Hold transaction until acknowledgement or timeout
    await compliance_acknowledgement(message_id)
    # 6. Proceed with on-chain transaction
    execute_blockchain_transfer(withdrawal)

Ongoing challenges include managing unhosted wallet (private wallet) transfers, where there is no counterparty VASP to receive data. Jurisdictions may require enhanced due diligence or declining such transactions. Furthermore, protocol fragmentation means you may need to support multiple messaging systems. The future points toward greater standardization and possibly native blockchain solutions, but for now, integrating a robust Travel Rule solution is a non-negotiable operational and technical requirement for any licensed digital asset custodian serving institutional or retail clients.

prerequisites
SETUP

Prerequisites for Integration

Before integrating a Travel Rule solution, ensure your infrastructure and data are prepared for secure, compliant data exchange.

The foundation of a successful Travel Rule integration is a robust Know Your Customer (KYC) and Customer Due Diligence (CDD) program. Your Virtual Asset Service Provider (VASP) must already be collecting and verifying the required originator and beneficiary information for each transaction. This includes full legal name, account number (e.g., wallet address), and, for certain jurisdictions, national identity number, date of birth, or place of birth. Without this verified data readily available in a structured format, your system cannot generate a compliant Travel Rule message. This step is non-negotiable and is often the most time-consuming part of the preparation process.

Next, you must select a Travel Rule Information Sharing Architecture. The two primary standards are the InterVASP Messaging Standard (IVMS101) data model and a compatible communication protocol. The dominant protocol is the Travel Rule Universal Solution Technology (TRUST) solution, developed by U.S. crypto exchanges, which uses a decentralized, peer-to-peer model. Alternatively, you may integrate with a solution like Sygna Bridge, Notabene, or Shyft that often provides API-based messaging. Your choice will dictate the technical specifications for your integration, including data formatting, encryption standards (like PGP), and the endpoint URLs you will need to communicate with.

Your technical setup must include a secure method for private key management and message encryption. Travel Rule messages containing sensitive Personal Identifiable Information (PII) must be encrypted before transmission. This typically involves generating PGP key pairs, where the beneficiary VASP's public key is used to encrypt the message payload. You are responsible for safeguarding your private key, which is used to decrypt incoming messages. Many integrated solutions offer key management services, but self-hosting requires implementing secure, audited practices for key generation, storage, and rotation to prevent data breaches.

Finally, establish a clear process for sanctions screening and handling counterparty due diligence. Before sending a Travel Rule message, your compliance team or automated system should screen the beneficiary VASP against relevant sanctions lists (e.g., OFAC). Furthermore, you need a method to verify that the receiving VASP is a legitimate, regulated entity. Solutions like TRUST provide a public directory of member VASPs, while others may require manual verification. You must also define procedures for handling message failures, such as an invalid address, an unresponsive VASP, or a sanctioned counterparty, which may involve freezing the transaction and filing a Suspicious Activity Report (SAR).

architecture-overview
SYSTEM ARCHITECTURE AND DATA FLOW

Setting Up Compliance with Travel Rule Solutions

A technical guide to implementing Travel Rule compliance, covering system architecture, data flow, and integration with VASPs and blockchain analytics.

The Travel Rule (FATF Recommendation 16) mandates that Virtual Asset Service Providers (VASPs) share originator and beneficiary information for transactions above a threshold. Architecting a compliant system requires integrating several core components: a Travel Rule Solution Provider (TRSP) API, an internal Compliance Engine, secure PII storage, and connections to blockchain nodes. The primary data flow begins when a user initiates a withdrawal. Your system must intercept this transaction, enrich it with customer data from your KYC system, and package it into a standardized format like the InterVASP Messaging Standard (IVMS 101) before sending it to the counterparty VASP via a TRSP.

The technical implementation involves creating a secure service, often a microservice, that listens for outgoing transaction events. For an Ethereum-based withdrawal, your service would monitor for pending transactions from user-controlled addresses. Upon detection, it must pause the transaction and query your user database to map the blockchain address to a Verified Identity. This service then constructs a Travel Rule Information Sharing (TRIS) message. Key fields include the originator's name, account number (wallet address), and geographic address, and the beneficiary's data received from the user. This message is encrypted and sent via a TRSP like Sygna Bridge, Notabene, or TRP to the receiving VASP's TRSP endpoint.

Handling incoming transactions is equally critical. Your architecture must have an endpoint to receive TRIS messages from other VASP's TRSPs. Upon receipt, your compliance engine should automatically screen the provided beneficiary address against your user database. If a match is found, the transaction can be approved and the funds credited. If not, the data must be held in a secure, access-controlled Pending Transactions queue for manual review by your compliance team. This process often requires integrating with blockchain analytics tools like Chainalysis or Elliptic to perform risk scoring on the originator's address and transaction history before clearing the funds.

A robust architecture must also plan for data privacy and retention. Personally Identifiable Information (PII) should never be stored on-chain. Use encrypted databases with strict access controls, adhering to regulations like GDPR. The system should log all TRIS message send/receive events, screening results, and compliance officer actions for audit trails. Furthermore, consider fallback mechanisms for when a counterparty VASP is not integrated with a TRSP. Procedures may involve using a designated intermediary or relying on secure alternative channels, though these increase operational risk and require enhanced due diligence.

Finally, testing and maintenance are ongoing requirements. Implement a sandbox environment with your chosen TRSP to simulate message flows with test VASPs. Regularly update your integration to accommodate new TRSP API versions and evolving standards like updates to IVMS 101. Automate monitoring for message delivery failures and screening alerts. By treating Travel Rule compliance as a core, integrated system component rather than a manual overlay, VASPs can achieve scalable, secure, and efficient operations that meet global regulatory standards.

key-concepts
DEVELOPER GUIDE

Core Travel Rule Concepts

Essential technical concepts and practical steps for implementing Travel Rule compliance in cryptocurrency transactions.

01

Understanding the Travel Rule (FATF Recommendation 16)

The Travel Rule is a global anti-money laundering (AML) standard requiring Virtual Asset Service Providers (VASPs) to share originator and beneficiary information for transactions above a threshold (e.g., $1,000/€1,000). It applies to transfers of virtual assets between VASPs, not peer-to-peer wallets. Key data elements include:

  • Originator's name and wallet address
  • Beneficiary's name and wallet address
  • Transaction amount and date Failure to comply can result in significant regulatory penalties and loss of licensing.
02

VASP Identification & the IVMS 101 Data Standard

Before sharing data, you must correctly identify the counterparty as a licensed Virtual Asset Service Provider (VASP). The InterVASP Messaging Standard (IVMS 101) provides a universal data model for compliance information, ensuring interoperability between different solutions. It defines structured fields for:

  • Natural and Legal Person identifiers
  • Address information
  • National Identity numbers Adopting IVMS 101 is critical for avoiding data format mismatches and failed transactions.
04

Technical Implementation Flow

A standard implementation involves a sequenced API flow:

  1. Transaction Screening: Check sender/receiver addresses against sanctions lists before initiating transfer.
  2. VASP Lookup: Query a directory using the beneficiary's blockchain address to identify their VASP.
  3. Data Submission: Package required PII using the IVMS 101 format and send to the beneficiary VASP via your chosen protocol.
  4. Acknowledgement Wait: Halt the on-chain transaction until a valid acknowledgement of receipt is received from the counterparty VASP.
  5. Transaction Execution: Broadcast the on-chain transaction only after compliance steps are complete.
05

Handling Non-Custodial Wallets (Unhosted Wallets)

Transfers to unhosted wallets (user-controlled addresses) present a compliance challenge. Regulatory guidance varies, but common requirements include:

  • Conducting enhanced due diligence on your own customer.
  • Collecting and verifying beneficiary information from your customer where possible.
  • Recording a "declaration" from the originator confirming the beneficiary's ownership.
  • Some jurisdictions may require filing a report with a financial intelligence unit (FIU) for such transactions.
06

Privacy, Security & Data Handling

Transmitting sensitive PII requires robust security measures. Key considerations are:

  • Encryption: All data must be encrypted in transit (TLS) and at rest.
  • Data Minimization: Share only the data fields mandated by the applicable regulation.
  • Retention Policies: Define clear policies for how long compliance data is stored, adhering to local data protection laws (e.g., GDPR).
  • Audit Trails: Maintain immutable logs of all compliance-related messages sent and received for regulatory examination.
TECHNICAL ARCHITECTURE

Travel Rule Protocol Comparison: TRP vs. Sygna Bridge

A technical comparison of two leading protocols for implementing the FATF Travel Rule in cryptocurrency transactions.

Feature / MetricTravel Rule Protocol (TRP)Sygna Bridge

Protocol Standard

OpenVASP Technical Standard

IVMS 101 (interVASP) Data Model

Primary Architecture

Decentralized P2P Network

Centralized API Gateway

Data Transfer Method

Direct, encrypted peer-to-peer

Via Sygna Bridge API servers

Identity Verification (IV) Integration

Modular, supports external providers

Built-in with Sygna IV service

Message Encryption

Asymmetric (PGP/GPG)

Symmetric (AES-256-GCM)

Transaction Validity Proof

Requires cryptographic proof of address control

Relies on attestation from originating VASP

On-chain Component

Optional for proof-of-address registration

None. Purely off-chain messaging

Typical Message Latency

< 2 seconds

< 5 seconds

Annual Protocol License Cost

Open source / $0

Commercial license required

integration-steps
GUIDE

Setting Up Compliance with Travel Rule Solutions

A technical walkthrough for developers integrating Travel Rule compliance into cryptocurrency services, covering protocol selection, data handling, and secure implementation.

The Travel Rule, enforced by regulators like FinCEN and FATF, requires Virtual Asset Service Providers (VASPs) to collect and share originator and beneficiary information for cryptocurrency transactions above a threshold (e.g., $3,000/€1,000). Non-compliance risks severe penalties. For developers, this means integrating a specialized protocol to exchange this Personally Identifiable Information (PII) securely between VASPs. The core challenge is selecting and implementing a solution that is interoperable, secure, and minimizes operational friction. This guide outlines the steps for a robust integration using the InterVASP Messaging Standard (IVMS101) data model and a protocol like the Travel Rule Universal Solution Technology (TRUST) or OpenVASP.

Step 1: Protocol and Provider Selection

Your first decision is choosing a compliance protocol and a solution provider. Major protocols include the Travel Rule Universal Solution Technology (TRUST)—a collaborative solution used by many U.S. exchanges—and the decentralized OpenVASP protocol. You may also integrate via a Software Development Kit (SDK) from a specialized provider like Notabene, Sygna Bridge, or Sumsub. Evaluate providers based on their supported protocol networks, jurisdictional coverage, API reliability, and fee structure. For a self-hosted, open-source approach, consider deploying the OpenVASP protocol server, though this requires significant in-house infrastructure.

Step 2: Data Model Implementation

All major Travel Rule solutions use the IVMS101 data model to structure beneficiary and originator data. You must map your user's KYC data (name, address, wallet address) to this standardized JSON schema. Here is a minimal example of an IVMS101 NaturalPerson object for the originator:

json
{
  "naturalPerson": {
    "name": [
      {
        "nameIdentifier": [
          {
            "primaryIdentifier": "DOE",
            "secondaryIdentifier": "JOHN",
            "nameIdentifierType": "LEGL"
          }
        ]
      }
    ],
    "geographicAddress": [
      { "addressLine": ["123 Main St"], "country": "US" }
    ]
  }
}

Your system must generate, parse, and validate these payloads, ensuring data like the transaction.originatorVASPdid (a Decentralized Identifier for the sending VASP) is correctly included.

Step 3: Secure Message Exchange Workflow

Integration involves automating a secure request-response flow. When a user initiates a transfer to an external wallet, your system must: 1) Screen the beneficiary address against your provider's VASP directory to determine if it's hosted by another compliant VASP. 2) If a VASP is found, create an IVMS101 payload, encrypt it using the beneficiary VASP's public key (obtained from their .well-known endpoint or a directory), and send the travel rule message via your chosen protocol's API before broadcasting the on-chain transaction. 3) Await and validate a response (acknowledgment or request for info) from the receiving VASP. For non-VASP wallets ("unhosted wallets"), you are typically required to collect enhanced due diligence information from your customer.

Step 4: Privacy, Security, and Logging

Handling PII demands stringent security. Always use end-to-end encryption (E2EE) for message payloads; protocols like TRUST use the Double Ratchet Algorithm. Never store encrypted PII on-chain. Implement secure key management for your VASP's signing keys. Maintain detailed, immutable audit logs of all travel rule requests, responses, and data sent for regulatory examination. Your privacy policy must clearly disclose this data sharing. Finally, conduct thorough testing in the provider's sandbox environment, simulating various scenarios—successful VASP-to-VASP transfers, transfers to unhosted wallets, and error conditions like timeouts or invalid data—before going live.

code-examples
TRAVEL RULE PROTOCOL

Code Examples: TRP Client Implementation

A practical guide to implementing a Travel Rule Protocol (TRP) client for sending and receiving compliance data between Virtual Asset Service Providers (VASPs).

The Travel Rule Protocol (TRP) is an open-source standard for secure, interoperable communication of Travel Rule compliance data, such as originator and beneficiary information for cryptocurrency transactions. Implementing a TRP client involves integrating with its RESTful API, which uses JSON Web Tokens (JWT) for authentication and JSON Web Encryption (JWE) for payload confidentiality. This guide provides foundational code examples for core client operations, including establishing a session, sending a TransferPayload, and querying for pending transfers. The official TRP specification and API documentation are the definitive sources for implementation details.

Before making any API calls, your client must authenticate with the counterparty VASP's TRP server to obtain a session token. This typically involves a POST request to the /sessions endpoint with your VASP's credentials. The response contains a JWT, which must be included in the Authorization header of all subsequent requests. Here is a conceptual example in Python using the requests library:

python
import requests
# Base URL of the counterparty VASP's TRP server
BASE_URL = 'https://vasp-b.example/trp'
# Your VASP's API credentials
auth_payload = {'api_key': 'your_key', 'api_secret': 'your_secret'}
# Request a session token
response = requests.post(f'{BASE_URL}/sessions', json=auth_payload)
session_token = response.json().get('token')
# Use this token for authenticated requests
headers = {'Authorization': f'Bearer {session_token}'}

The core function of a TRP client is to send a secure TransferPayload. This payload contains the required PII data, encrypted so that only the receiving VASP can decrypt it. You construct a JSON object per the TRP schema, then encrypt it into a JWE using the recipient VASP's public key. A POST request to the /transfers endpoint delivers the payload. The code below outlines the process:

python
import json
from jwcrypto import jwe, jwk
# 1. Create the transfer data payload
transfer_data = {
    "transfer": {
        "originator": { "name": "Alice" },
        "beneficiary": { "name": "Bob" }
    }
}
# 2. Load the recipient VASP's public key from their DID document
recipient_public_jwk = jwk.JWK.from_json(recipient_public_key_json)
# 3. Create and encrypt the JWE
protected_header = {
    "alg": "RSA-OAEP-256",
    "enc": "A256GCM",
    "kid": recipient_public_jwk.key_id
}
jwetoken = jwe.JWE(
    json.dumps(transfer_data).encode('utf-8'),
    recipient=recipient_public_jwk,
    protected=protected_header
)
encrypted_payload = jwetoken.serialize(compact=True)
# 4. Send the encrypted payload
send_response = requests.post(
    f'{BASE_URL}/transfers',
    json={"payload": encrypted_payload},
    headers=headers
)

A VASP must also be able to receive and process incoming transfer requests. Your server implementation will expose the /transfers endpoint to accept POST requests. Upon receipt, your server must decrypt the JWE payload using its private key, validate the data structure, and store it for compliance review. The TRP server should also implement the /transfers/{id} endpoint to allow counterparties to query the status of transfers they sent. For development and testing, you can use the TRP Demo Server as a reference implementation or as a sandbox counterparty.

Error handling and logging are critical for a production TRP client. The API uses standard HTTP status codes: 200 for success, 400 for bad requests, 401 for authentication failures, and 500 for server errors. Your client should gracefully handle network timeouts, invalid JWTs, and malformed responses. Implement retry logic with exponential backoff for transient failures. Always log all sent and received payloads (with PII redacted or encrypted at rest) for audit trails. Security best practices mandate keeping your private keys in a secure key management system and never hardcoding credentials.

TRAVEL RULE SOLUTIONS

Common Integration Issues and Troubleshooting

Resolve common technical challenges when integrating Travel Rule solutions like TRUST, Sygna Bridge, or Notabene. This guide covers API errors, data formatting, and compliance logic.

VASP (Virtual Asset Service Provider) lookup failures typically stem from incorrect identifiers or network issues. The primary identifier is the Beneficiary VASP's blockchain address or a registered Travel Rule ID.

Common causes:

  • Using an exchange's deposit address instead of their official Travel Rule endpoint address.
  • The beneficiary VASP is not registered in the solution's directory (e.g., TRUST Directory).
  • Network timeouts or incorrect API base URL configuration.

Troubleshooting steps:

  1. Verify the beneficiary's address with their compliance documentation.
  2. Check the solution's VASP directory via its API or UI to confirm registration.
  3. Ensure your API client has proper error handling and logs the full HTTP response for debugging.
  4. For TRUST, confirm you are using the correct /.well-known endpoint path.
FATF TRAVEL RULE VASP-TO-VASP

Required PII Data Fields and Formats

Standardized data fields required for compliance when sending cryptoasset transfers between Virtual Asset Service Providers (VASPs).

Data FieldFormat / StandardRequired for Sender (Originator)Required for Beneficiary

Originator's Full Name

Free text, as per official ID

Originator's Account Number

Unique wallet address or VASP-specific ID

Originator's Physical Address

Street, City, Country, Postal Code

Originator's National ID Number

e.g., SSN, Passport Number, Tax ID

Beneficiary's Full Name

Free text, as per official ID

Beneficiary's Account Number

Unique wallet address or VASP-specific ID

Transaction Value & Asset

e.g., "1.5 BTC", "10000 USDC"

Transaction Hash / TXID

On-chain transaction identifier

TRAVEL RULE IMPLEMENTATION

Frequently Asked Questions (FAQ)

Common technical questions and troubleshooting for developers integrating Travel Rule solutions like TRUST, Sygna Bridge, and Notabene.

The Travel Rule is a regulatory requirement for Virtual Asset Service Providers (VASPs) to share originator and beneficiary information during cryptocurrency transactions. It's mandated by the Financial Action Task Force (FATF) Recommendation 16. The primary technical standards are:

  • IVMS 101: The InterVASP Messaging Standard defines the data format for sender (Originator) and receiver (Beneficiary) information.
  • TRUST: A decentralized, open-source solution developed by leading exchanges like Coinbase and Kraken. It uses a peer-to-peer, SSL-encrypted channel for secure data exchange without a central database.
  • Sygna Bridge & Notabene: Commercial, API-based solutions that often provide additional compliance screening and a centralized directory of verified VASPs.

Transactions exceeding a threshold (e.g., $3,000 in the EU under TFR, $1,000 in Singapore) typically trigger the rule. As a developer, you must integrate with one or more of these protocols to facilitate compliant cross-border transfers.

conclusion
IMPLEMENTATION SUMMARY

Conclusion and Next Steps

You have now configured the core components for Travel Rule compliance, from VASP discovery to secure data exchange.

Implementing a Travel Rule solution is a foundational step for operating a compliant virtual asset service provider (VASP). The core workflow you've established—triggering checks on outbound transfers, performing VASP verification via the Travel Rule Universal Protocol (TRUP) or similar standards, and securely exchanging required sender and beneficiary information—addresses the primary requirements of regulations like the FATF's Recommendation 16. This setup helps mitigate the risk of facilitating illicit financial flows by ensuring you know your counterparty.

Your next steps should focus on operational robustness and testing. First, integrate your compliance solution's alerting and case management dashboard into your daily operations. Establish clear procedures for handling false positives, unhosted wallet transfers, and transactions with non-compliant VASPs. Second, conduct end-to-end tests with partner VASPs using the IVMS 101 data standard to ensure payloads are correctly formatted and parsed. Tools like the Travel Rule compliance test suite from the OpenVASP Association can validate your implementation.

Finally, consider advanced integrations to enhance your program. Explore automated sanction screening of counterparty VASP addresses and beneficiary details against real-time watchlists. For developers, implementing the TRISA protocol for certificate-based authenticated channels can provide an additional layer of security for data exchange beyond basic REST APIs. Continuously monitor regulatory updates from bodies like the Financial Action Task Force (FATF) and local regulators, as technical standards and threshold amounts are subject to change. A proactive, well-tested compliance infrastructure is not just a regulatory requirement—it's a critical component of institutional trust in the digital asset ecosystem.

How to Integrate Travel Rule Solutions for Crypto Custody | ChainScore Guides