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 a Compliance Engine for Travel Rule (FATF) in Custody

A technical implementation guide for building an automated compliance engine to meet FATF Travel Rule requirements for virtual asset transfers in custody services.
Chainscore © 2026
introduction
FATF RECOMMENDATION 16

Introduction to Travel Rule Compliance for Custodians

A technical guide for digital asset custodians implementing the Travel Rule, covering core concepts, data requirements, and system architecture.

The Financial Action Task Force's (FATF) Recommendation 16, commonly called the Travel Rule, mandates that Virtual Asset Service Providers (VASPs) share specific customer data during transactions. For custodians, this means collecting, verifying, and transmitting Personally Identifiable Information (PII) for both the originator and beneficiary when transferring assets on-chain. Non-compliance can result in severe penalties, loss of licensing, and reputational damage. The rule applies to transfers exceeding a threshold, typically $/€1,000, and covers all major blockchains.

A compliance engine must handle the full transaction lifecycle. For an outgoing transfer, the system must: 1) Trigger on a withdrawal request, 2) Validate if the beneficiary address belongs to another regulated VASP or a self-hosted wallet, 3) Collect required originator PII (name, account number, physical address) and beneficiary data, 4) Transmit this data securely to the counterparty VASP before or concurrently with the asset transfer, and 5) Log the entire process for audit. For incoming transfers, the engine must receive, validate, and screen the accompanying data against sanctions lists.

The core technical challenge is VASP discovery—determining if a blockchain address is controlled by another compliant entity. This is typically done by querying a Travel Rule protocol like IVMS 101 or the Travel Rule Universal Solution Technology (TRUST) directory. These protocols provide standardized data formats and APIs for secure data exchange. Custodians often integrate with specialized providers such as Notabene, Sygnum, or CipherTrace to handle discovery, encryption, and secure messaging, rather than building the complex infrastructure from scratch.

Data security and privacy are paramount. PII must be encrypted end-to-end, often using asymmetric cryptography where the receiving VASP's public key encrypts the data payload. The actual asset transfer and data transmission are separate processes; the data is sent via an off-chain secure channel (API), while the crypto transaction occurs on-chain. Engine logic must include reconciliation mechanisms to ensure a data transfer is confirmed for every applicable on-chain transaction, creating an immutable audit trail.

Implementation requires integrating the compliance engine with existing custody systems: the wallet management platform for transaction initiation, KYC/AML databases for customer data, and sanctions screening tools. A typical architecture uses microservices for the rule engine, VASP directory lookup, and secure messaging. Here's a simplified conceptual flow in pseudocode:

python
if transfer.amount > THRESHOLD:
    vasp_info = directory_lookup(recipient_address)
    if vasp_info.is_vasp:
        data_payload = create_ivms101_data(sender, recipient)
        encrypted_payload = encrypt(vasp_info.public_key, data_payload)
        send_secure_message(vasp_info.endpoint, encrypted_payload)
        log_compliance_event(tx_hash, payload_id)
    else:
        apply_enhanced_due_diligence()

Ongoing obligations include monitoring for regulatory updates across different jurisdictions, maintaining the accuracy of the VASP directory, and conducting regular audits. Testing with other VASPs via interoperability testnets is crucial before go-live. As regulations evolve towards covering DeFi and unhosted wallets, custodians must design engines that are adaptable to new rulesets and broader address identification techniques, ensuring long-term compliance as the digital asset landscape matures.

prerequisites
TRAVEL RULE IMPLEMENTATION

Prerequisites and System Requirements

Before deploying a compliance engine for the Travel Rule (FATF Recommendation 16), you must establish a secure technical foundation. This guide outlines the core infrastructure, software dependencies, and security protocols required for a production-ready custody solution.

The Travel Rule mandates that Virtual Asset Service Providers (VASPs) share originator and beneficiary information for transactions above a threshold (e.g., $/€1000). A compliance engine automates this data collection, validation, and secure exchange. Your system must be built to handle PII (Personally Identifiable Information) with bank-grade security, integrate with multiple blockchain networks, and connect to Travel Rule protocol networks like the Travel Rule Universal Solution Technology (TRUST) or OpenVASP. The core technical stack typically involves a secure backend service, a dedicated database for sensitive data, and interfaces for both blockchain monitoring and VASP-to-VASP communication.

Your primary system requirements focus on isolation and security. The compliance engine should run in its own hardened environment, separate from your main trading or wallet application servers. Essential components include: a secure, air-gapped signing server for generating and signing compliance messages, a relational database (e.g., PostgreSQL) with column-level encryption for PII, and a redis or similar in-memory store for managing API rate limits and nonce values. All infrastructure must support HSM (Hardware Security Module) or KMS (Key Management Service) integration for managing the cryptographic keys used to sign Travel Rule messages, which is a critical requirement for establishing trust in protocols like TRUST.

Software prerequisites involve specific libraries and service integrations. Your development environment will need SDKs or APIs for your chosen Travel Rule protocol. For example, implementing the IVMS 101 (InterVASP Messaging Standard) data model is non-negotiable. You will need libraries to serialize and deserialize IVMS 101 JSON messages. Furthermore, integration with a blockchain analytics provider (e.g., Chainalysis, Elliptic) is often required to screen wallet addresses against sanctions lists and assess risk scores before sharing data. Your codebase must also handle asynchronous, encrypted communication, typically via REST APIs over HTTPS with mutual TLS (mTLS) authentication, to other VASPs' compliance endpoints.

A robust network and API configuration is crucial. You must provision and whitelist static IP addresses for your compliance server to meet the inbound connection requirements of other VASPs. Setting up dedicated API endpoints for receiving TR-request and TR-answer payloads is standard. Your system should implement rigorous input validation, message signing verification, and proof-of-delivery mechanisms. Logging must be comprehensive but must never include raw PII in plaintext logs. All data in transit should be encrypted using TLS 1.3, and data at rest must be encrypted using standards like AES-256-GCM.

Finally, establish a pre-production testing pipeline. Before going live, you must test interoperability with other VASPs. This often involves joining a testnet or sandbox environment provided by your chosen protocol (e.g., TRUST's sandbox). Use test blockchain networks (e.g., Goerli, Sepolia) to simulate transactions. Develop unit and integration tests that validate the entire flow: from detecting a qualifying on-chain transaction, constructing a valid IVMS 101 payload, signing it with your private key, sending it via the protocol, and processing the response. This stage validates both your technical implementation and your operational procedures.

architecture-overview
SYSTEM ARCHITECTURE AND DATA FLOW

Setting Up a Compliance Engine for the Travel Rule

A technical guide to architecting a Travel Rule (FATF Recommendation 16) compliance system for a digital asset custodian, focusing on data flow, component design, and integration.

The Financial Action Task Force's (FATF) Travel Rule (Recommendation 16) mandates that Virtual Asset Service Providers (VASPs) like custodians share sender and beneficiary information for transactions above a threshold (typically $/€1000). A compliance engine automates this data collection, validation, and secure exchange. The core architectural challenge is designing a system that integrates with your existing transaction processing pipeline, interfaces with external VASP directories and secure messaging protocols, and maintains an immutable audit trail without compromising user privacy or transaction speed.

A robust architecture consists of several key components. The Transaction Monitor hooks into your internal systems to identify qualifying outbound and inbound transfers. The Data Enrichment Service validates wallet addresses against known VASP lists, such as the Travel Rule Universal Solution Technology (TRUST) directory or proprietary APIs, to determine if the counterparty is another obligated entity. The Rule Engine applies jurisdictional logic, checking thresholds, sanctioned addresses, and data completeness. Finally, the Secure Messaging Layer handles the actual encrypted data exchange using protocols like the InterVASP Messaging Standard (IVMS 101) over channels such as the OpenVASP Protocol, TRP API, or Notabene.

The data flow for an outbound transfer begins when a withdrawal request is initiated. The Transaction Monitor intercepts this event and passes the destination address and amount to the Rule Engine. If the transaction triggers the Travel Rule, the Data Enrichment Service queries a VASP directory. Upon confirming the beneficiary is a VASP, the engine compiles the required Originator and Beneficiary Information into an IVMS 101 data model. This payload is then encrypted and sent via the Secure Messaging Layer to the beneficiary VASP, while a record is stored in an immutable Compliance Ledger. For inbound transfers, the system must be able to receive, decrypt, validate, and log incoming data packets, and potentially halt transactions if required information is missing.

Implementation requires careful integration. The Transaction Monitor can be implemented as a microservice listening to blockchain event emitters or database triggers. The Rule Engine should be configurable via a dashboard to adapt to changing regulations in different jurisdictions. Key technical considerations include key management for message encryption (e.g., using PGP or AES), implementing retry logic with exponential backoff for failed message delivery, and designing a sanctions screening module that checks addresses against lists from providers like Chainalysis or Elliptic before any data is shared.

Testing and monitoring are critical. Develop a staging environment that mimics the production transaction flow and integrates with testnets of Travel Rule solutions like Sygna Bridge or Notabene's sandbox. Monitor key metrics: message delivery success rate, false positive/negative rates in VASP identification, and system latency impact on transaction processing. Log all actions—data requests, sends, receives, and rule evaluations—to a secure, tamper-evident log to satisfy regulatory audits. This architecture ensures your custody platform can scale compliantly while maintaining the security and privacy fundamentals of digital asset operations.

key-concepts
TRAVEL RULE COMPLIANCE

Core Technical Concepts

Technical foundations for implementing the FATF Travel Rule (Recommendation 16) in a digital asset custody service. These concepts cover the core protocols, data standards, and architectural decisions required for a compliant system.

01

Understanding the Travel Rule (FATF R.16)

The Financial Action Task Force (FATF) Recommendation 16 mandates that Virtual Asset Service Providers (VASPs) share originator and beneficiary information for transactions above a threshold (typically $/€1,000). For custody, this means you must securely collect, verify, and transmit PII like name, wallet address, and national ID number for both sending and receiving parties. Non-compliance risks regulatory penalties and loss of banking partnerships. The rule applies to transfers between VASPs and, in some jurisdictions, to unhosted wallets.

03

VASP Discovery & Due Diligence

Before sending Travel Rule data, you must identify if the counterparty is a regulated VASP. This involves:

  • VASP Discovery: Using a directory service (e.g., TRISA, Shyft, Veriscope) to look up a blockchain address and retrieve the counterparty VASP's public key and endpoint.
  • VASP Due Diligence: Verifying the VASP's regulatory status and jurisdiction. Systems often maintain an internal Approved VASP List based on ongoing screening against sanctions lists and regulatory databases.
04

Secure Message Exchange & Encryption

Travel Rule data (PII) must be encrypted in transit and at rest. The standard approach uses asymmetric encryption:

  1. Fetch the beneficiary VASP's public key from a directory.
  2. Encrypt the IVMS101 payload with a symmetric key.
  3. Encrypt that symmetric key with the beneficiary VASP's public key.
  4. Transmit the encrypted payload and key via a secure channel (often HTTPS). This ensures only the intended recipient VASP, holding the private key, can decrypt the sensitive data.
05

Architecture: Integrated vs. Gateway Solutions

You have two primary architectural choices:

  • Integrated Solution: Embed a compliance SDK (e.g., from Notabene, Sygna, ComplyAdvantage) directly into your custody platform's transaction flow. Offers tight control but requires more engineering.
  • Gateway Solution: Route outgoing transactions through a third-party compliance gateway service. Simpler to implement but adds a dependency and potential latency. The choice depends on your transaction volume, in-house expertise, and desired level of custody over the compliance data.
06

Data Storage, Privacy & Audit Trail

Compliance requires maintaining a secure, tamper-evident audit trail of all Travel Rule data shared and received. Key considerations:

  • Data Retention: Store encrypted PII for 5+ years as per AML regulations.
  • Privacy: Implement strict access controls and data minimization; only collect fields mandated by jurisdiction.
  • Audit Logs: Log all actions (data sent, received, viewed) for regulatory examination. Consider using immutable storage or hashing logs to a blockchain for integrity verification.
VASP-TO-VASP (V2V) SOLUTIONS

Travel Rule Solution Provider Comparison

Comparison of leading technology providers for automated Travel Rule compliance, focusing on integration with crypto custody platforms.

Feature / MetricNotabeneShyftTRP LabsVerifyVASP

Protocol Support

TRISA, IVMS101, OpenVASP

TRISA, IVMS101, Travel Rule Protocol

TRISA, IVMS101

IVMS101, proprietary API

Jurisdictional Rule Sets

FATF, EU AMLR, US, Singapore

FATF, EU AMLR, UK, Canada

FATF, US, UAE

FATF, EU AMLR

API Latency (P95)

< 2 sec

< 1.5 sec

< 3 sec

< 5 sec

Automated Screening

Custody Platform SDKs

Fireblocks, Copper, Ledger Vault

Qredo, GK8, BitGo

Copper, Cobo

Message Encryption

PGP, P2P

PGP, Travel Rule Protocol

PGP

Proprietary

Pricing Model (per tx)

$10-50 flat

0.15% of tx value

Enterprise quote

$5-20 flat

On-chain Proof of Compliance

implementation-steps
IMPLEMENTATION GUIDE

Setting Up a Compliance Engine for the Travel Rule (FATF) in Custody

A technical guide for implementing a Travel Rule compliance engine, covering data collection, VASP discovery, secure messaging, and transaction screening for digital asset custodians.

The Financial Action Task Force (FATF) Travel Rule (Recommendation 16) mandates that Virtual Asset Service Providers (VASPs) share originator and beneficiary information for transactions above a threshold (often $/€1000). For a custody platform, this requires a dedicated compliance engine. The core components are: a data collection layer to capture required sender/receiver fields from transaction requests, a VASP directory service to identify counterparties, a secure communication channel for data exchange, and a screening module to check parties against sanctions lists. Non-compliance risks severe regulatory penalties and loss of licensing.

The first implementation step is integrating data collection at the transaction initiation point. Your custody API or UI must capture and validate the Required Originator Information: originator name, account number (wallet address), and either physical address, national ID number, or customer ID. For the beneficiary, you need the name and account number. This data must be structured, typically following the IVMS 101 data standard. Implement server-side validation to ensure these fields are populated for relevant transactions. Store this PII securely, encrypted at rest, with strict access controls aligned with data protection regulations like GDPR.

Next, you must determine if the counterparty is another obligated VASP. This VASP Discovery process involves checking the beneficiary's wallet address against a directory. Use services like TRISA, Shyft, or VerifyVASP that maintain lists of VASP-owned addresses. If a match is found, you must send the Travel Rule data package to that VASP. If no match is found (a unhosted wallet), your compliance policy must dictate the next steps, which may include collecting additional beneficiary information, performing enhanced due diligence, or blocking the transaction based on risk assessment.

For VASP-to-VASP communication, you need a secure, encrypted messaging protocol. The dominant standard is the Travel Rule Protocol using the IVMS 101 data format. Implementation involves: 1) Generating a signed Travel Rule Information (TRI) payload. 2) Establishing a secure connection with the counterparty VASP, often via mutual TLS certificates obtained from a trust framework like TRISA. 3) Sending the payload and awaiting an acknowledgment. You must also be able to receive, decrypt, validate, and process incoming TRI payloads from other VASPs, logging all interactions for audit trails. Open-source libraries for specific protocols can accelerate this development.

Finally, integrate transaction screening. Before releasing funds, screen the originator and beneficiary details against real-time sanctions lists (e.g., OFAC SDN), politically exposed persons (PEP) lists, and internal watchlists. This is often done via an API integration with a specialized provider like Chainalysis KYT, Elliptic, or ComplyAdvantage. The engine should automatically flag high-risk transactions for manual review by your compliance team. Log all screening results, decisions, and the rationale for any overrides. The entire process—from data capture to screening and secure sharing—must be automated to handle custody-scale transaction volumes while providing a clear audit log for regulators.

TRAVEL RULE COMPLIANCE

Code Implementation Examples

Integrating a Travel Rule Solution API

Integrating a specialized Travel Rule provider like Notabene, Sygnum, or Shyft is the most common approach for custodians. The core workflow involves calling their API to screen transactions and exchange required VASP data.

Key API Endpoints:

  • Transaction Screening: POST /v1/transactions/screen - Submit transaction details (sender, receiver, amount, asset) for risk assessment and to trigger the Travel Rule flow if applicable.
  • VASP Lookup: GET /v1/vasps?address={address} - Resolve a blockchain address to a verified VASP to determine if the counterparty is also obligated.
  • Secure Data Exchange: POST /v1/transactions/{id}/payload - Securely transmit the required PII (Personal Identifiable Information) to the beneficiary VASP, typically using encryption.

Example Flow (Pseudocode):

javascript
// 1. Screen an outgoing withdrawal
try {
  const screeningResult = await travelRuleAPI.screenTransaction({
    originator: userKYCData,
    beneficiary: { blockchainAddress: '0x...' },
    asset: 'ETH',
    amount: '1.5'
  });

  // 2. Check if Travel Rule applies (e.g., > $/€1000 threshold)
  if (screeningResult.triggersTravelRule) {
    // 3. Fetch beneficiary VASP info
    const beneficiaryVASP = await travelRuleAPI.lookupVASP(screeningResult.beneficiary.address);
    
    // 4. If VASP found, initiate secure data transfer
    if (beneficiaryVASP.verified) {
      await travelRuleAPI.sendTravelRuleData({
        transactionId: screeningResult.id,
        payload: encryptedUserPII,
        beneficiaryVASPId: beneficiaryVASP.id
      });
    } else {
      // Handle non-VASP (unhosted wallet) protocol
    }
  }
} catch (error) {
  // Handle compliance holds or errors
}
audit-logging
TRAVEL RULE IMPLEMENTATION

Designing the Compliance Audit Log

A detailed guide to architecting an immutable, queryable audit log for FATF Travel Rule compliance in digital asset custody.

The Financial Action Task Force (FATF) Travel Rule (Recommendation 16) mandates that Virtual Asset Service Providers (VASPs) share originator and beneficiary information for transactions above a threshold (e.g., $/€1000). A compliance audit log is the foundational system that records every action, data point, and state change related to this rule. Its primary purpose is to provide an immutable, timestamped, and tamper-evident record for regulatory audits, internal reviews, and dispute resolution. Unlike standard application logs, a compliance log must be designed with data integrity, long-term retention, and granular queryability as first principles.

The log's schema must capture the full lifecycle of a Travel Rule transaction. Essential data points include: transaction_id, originator_vasp_id, beneficiary_vasp_id, asset_type, amount, and timestamp. Crucially, it must also log the compliance status (e.g., PENDING_VALIDATION, INFORMATION_SENT, INFORMATION_RECEIVED, COMPLIANCE_CHECK_FAILED) and all PII data hashes (using SHA-256 or similar) for originator/beneficiary names and wallet addresses. Each entry should be signed cryptographically by the custody platform to prove authenticity. A common pattern is to store this data in a dedicated, append-only database table or a immutable ledger like Amazon QLDB or a permissioned blockchain node.

For actionable monitoring, the audit log must be queryable in real-time. Implement an indexing layer (e.g., using Elasticsearch or a time-series database) on top of the immutable store to enable fast searches by wallet_address, vasp_id, date_range, or compliance_status. This allows compliance officers to quickly generate reports or investigate suspicious transaction patterns. The system should also integrate with alerting engines to flag anomalies, such as repeated failed validation attempts from a specific VASP or transactions just below the reporting threshold ("structuring").

Code integration is critical. Every service handling transactions must write to the audit log via a dedicated, versioned API. Here is a simplified example of a log entry creation in a Node.js service using a Winston logger configured for a structured JSON output:

javascript
const complianceLogger = require('./compliance-logger');

async function logTravelRuleEvent(txData, status, action) {
  const auditEntry = {
    eventId: crypto.randomUUID(),
    timestamp: new Date().toISOString(),
    rule: "FATF_TRV16",
    transactionHash: txData.hash,
    originator: {
      vaspId: txData.originatorVASP,
      walletHash: sha256(txData.originatorWallet)
    },
    beneficiary: {
      vaspId: txData.beneficiaryVASP,
      walletHash: sha256(txData.beneficiaryWallet)
    },
    amount: txData.amount,
    asset: txData.asset,
    complianceStatus: status,
    actionPerformed: action,
    signingPublicKey: process.env.VASP_SIGNING_KEY_ID
  };
  // Sign the entry's core fields
  auditEntry.signature = signPayload(auditEntry);
  await complianceLogger.info('TRAVEL_RULE_AUDIT', auditEntry);
}

Finally, consider data residency and privacy laws like GDPR. While the Travel Rule requires sharing PII, your audit log should store only hashed or encrypted versions of sensitive data. The raw PII should be kept in a separate, access-controlled datastore. Regularly test your log's integrity through hash chain verification and ensure backups are geographically redundant. The system should produce standardized reports (e.g., in CSV or PDF format) for scheduled regulatory submissions to bodies like FinCEN or local financial intelligence units.

TRAVEL RULE COMPLIANCE

Frequently Asked Questions (FAQ)

Common technical questions and troubleshooting steps for developers implementing the FATF Travel Rule (Recommendation 16) in a digital asset custody solution.

The Financial Action Task Force (FATF) Recommendation 16 mandates that Virtual Asset Service Providers (VASPs) share specific Personally Identifiable Information (PII) for transactions exceeding a threshold (e.g., $1,000/€1,000). This is not just a blockchain address. The required Travel Rule data includes:

  • Originator Information: Sender's name, account number (wallet address), and physical address or national ID number.
  • Beneficiary Information: Recipient's name and account number (wallet address).
  • Transaction Details: The exact amount and type of virtual asset transferred.

For developers, this means building systems that can securely extract, validate, encrypt, and transmit this structured data to the counterparty VASP before or simultaneously with the on-chain settlement of the transaction. The data format is typically defined by protocols like the InterVASP Messaging Standard (IVMS 101).

conclusion
IMPLEMENTATION SUMMARY

Conclusion and Next Steps

You have configured the core components for a Travel Rule compliance engine. This section outlines the final integration steps and how to evolve your system.

Your compliance engine is now a functional system capable of receiving, validating, and securely transmitting Travel Rule Information (TRI) and Travel Rule Address (TRA). The key implemented components are: a secure API gateway for VASP communication, a Rule Engine for jurisdiction and threshold checks, a PII Vault for encrypted data storage, and integration with a Travel Rule Solution Provider (TRSP) like Notabene, Sygna Bridge, or TRP. The next critical phase is end-to-end testing in a sandbox environment before connecting to production networks.

Begin testing by simulating transactions with other VASPs in a testnet compliance network. Use the IVMS 101 data standard to structure your payloads and verify that your system correctly triggers compliance checks based on configurable thresholds (e.g., the 1,000 USD/EUR threshold). Monitor logs to ensure encrypted data flows correctly to your chosen TRSP and that you can successfully receive and process incoming requests. This stage is crucial for identifying gaps in data handling or logic before regulatory scrutiny.

For ongoing maintenance, establish automated monitoring for SLA compliance with your TRSP and API uptime. Implement a regular audit schedule to review stored PII data, ensuring adherence to data minimization and retention policies. Subscribe to updates from your TRSP and regulatory bodies like the FATF or local Financial Intelligence Units (FIUs), as Travel Rule technical standards and jurisdictional requirements are frequently updated. Your rule engine's logic must be adaptable to these changes.

Consider these advanced steps to enhance your system: 1) Integrate risk scoring from providers like Chainalysis or Elliptic to screen wallet addresses before initiating a transfer. 2) Automate the sanction list screening of both originator and beneficiary data against real-time lists. 3) Develop internal dashboards for compliance officers to visualize transaction flows, pending requests, and exception reports. These features transform your engine from a compliance checkbox into a proactive risk management tool.

Finally, document your architecture, data flows, and incident response procedures. Clear documentation is essential for internal training and external audits. The landscape of virtual asset regulation is evolving rapidly; building a modular, well-documented compliance engine positions your custody service to adapt efficiently to new requirements, such as those emerging from the EU's MiCA regulation or similar frameworks globally, ensuring long-term operational resilience.