> For the complete documentation index, see [llms.txt](https://docs.ospree.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ospree.io/developers/travel-rule/protocols.md).

# Protocols

## Overview

Travel Rule protocols define how Virtual Asset Service Providers (VASPs) securely exchange originator and beneficiary information required under global Travel Rule regulations. While multiple protocols exist, each with different architectures and technical requirements, Ospree provides a protocol-agnostic integration layer that allows customers to interact with multiple protocols through a single, unified API and console.

This approach reduces integration complexity, future-proofs compliance, and ensures interoperability across counterparties and jurisdictions.

### Travel Rule Protocol (TRP)&#x20;

What is TRP? The Travel Rule Protocol (TRP) is an open, decentralized protocol designed to enable VASPs to exchange Travel Rule data directly with one another. It focuses on minimizing centralized dependencies by allowing parties to discover endpoints and exchange information in a peer-to-peer manner. TRP is maintained by the OpenVASP initiative and is commonly adopted by infrastructure-focused and protocol-native ecosystems.

\
**Technical Overview (High Level)**

* Peer-to-peer data exchange between VASPs
* Endpoint discovery using standardized identifiers - Secure transmission of Travel Rule payloads
* No central directory or operator dependency

\
**How Ospree Helps with TRP Integration - Ospree abstracts TRP complexity by:**

* Handling TRP message formatting and lifecycle management
* Abstracting mTLS and protocol-specific requirements
* Managing counterparty discovery and protocol routing
* Providing unified monitoring, logging, and audit trails
* Allowing customers to interact with TRP via Ospree’s API and Console without building protocol-specific logic

**TRP Workflows Using Ospree Travel Rule API:**

When interacting with counterparties through TRP, a [travel address](https://gitlab.com/OpenVASP/travel-rule-protocol/-/blob/master/core/specification.md?ref_type=heads#travel-address) is used to resolve the transfer request to the correct counterparty VASP.&#x20;

* **Transfer Request** - for initiating a transfer request through TRP, use [Create Transfer](/developers/travel-rule/api-endpoints/create-transfer.md) endpoint, specifying `"trp"` as the protocol and passing the travel address received from the counterparty. \
  \
  The example below assumes that the originator\_account and beneficiary\_account already exists. Refer to [Create Transfer](/developers/travel-rule/api-endpoints/create-transfer.md) page for more details.&#x20;

```json
curl -X POST https://sandbox.ospree.io/api/v2/travelrule/transfers

-h 'Content-Type: application/json' \
-h 'Accept: application/json' \
-h 'Authorization: ••••••' \
-d '{
    "amount": 1.21,
    "dti": "4H95J0R2X",
    "protocol": "trp",
    "reference_id": "reference-transfer-01",
    "travel_address": "ta3J3bcpjsAEtGt9M5Q7GkD166VE22iDX6odePdJee1aBb5dX",
    "originator_address": "3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy",
    "originator_account_reference_id": "random-ref-id-101",
    "beneficiary_address": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa",
    "beneficiary_account_reference_id": "random-ref-id-102"
}' 
```

* **Transfer Inquiry Resolution** - for approving or rejecting an incoming TRP transfer request, use [Action Transfer](/developers/travel-rule/api-endpoints/action-transfer.md) endpoint.&#x20;

Approve transfer example:

```json
curl -X PATCH https://sandbox.ospree.io/api/v2/travelrule/transfers/{transfer_id}/accept

-h 'Content-Type: application/json' \
-h 'Accept: application/json' \
-h 'Authorization: ••••••' 
```

Reject transfer example:

```json
curl -X PATCH https://sandbox.ospree.io/api/v2/travelrule/transfers/{transfer_id}/reject

-h 'Content-Type: application/json' \
-h 'Accept: application/json' \
-h 'Authorization: ••••••' \
-d '{
  "reject_error": "REJECTED",
  "message": "Rejected without reason",
  "retry": false
}'
```

* **Transfer Confirmation** - for confirming or canceling the crypto transfer, use [Action Transfer](/developers/travel-rule/api-endpoints/action-transfer.md) endpoint.

Confirm transfer example:

```json
curl -X PATCH https://sandbox.ospree.io/api/v2/travelrule/transfers/{transfer_id}/complete
-h 'Content-Type: application/json' \
-h 'Accept: application/json' \
-h 'Authorization: ••••••' 
-d '{
  "transaction_hash": "80003fee6bcbb2726b4d6466d690fce6caaa03771aada747eb0651637514b893"
}'
```

Cancel transfer example:

```json
curl -X PATCH https://sandbox.ospree.io/api/v2/travelrule/transfers/{transfer_id}/cancel

-h 'Content-Type: application/json' \
-h 'Accept: application/json' \
-h 'Authorization: ••••••'
```

\
**References**&#x20;

* <https://www.openvasp.org/trp>
* <https://gitlab.com/OpenVASP/travel-rule-protocol>

### TRISA&#x20;

What is TRISA? The Travel Rule Information Sharing Alliance (TRISA) is a framework and protocol designed to enable compliant and secure information sharing between VASPs. TRISA emphasizes identity verification, mutual authentication, and trust frameworks to support regulated financial institutions. TRISA is commonly adopted by regulated entities seeking strong identity assurances and structured governance.

\
**Technical Overview (High Level)**

* Mutual TLS (mTLS) for secure communications
* Certificate-based identity verification
* Defined trust framework and governance model
* Structured message exchange for Travel Rule data

\
**How Ospree Helps with TRISA Integration - Ospree simplifies TRISA adoption by:**

* Managing certificate handling and identity verification flows
* Abstracting mTLS and protocol-specific requirements
* Unifying TRISA interactions with other Travel Rule protocols
* Providing centralized reporting, auditability, and operational visibility
* Customers integrate once with Ospree and gain TRISA support without building or maintaining protocol-specific infrastructure.

**TRISA Workflows Using Ospree Travel Rule API:**

* **Transfer Request** - for initiating a transfer request through TRISA, use [Create Transfer](/developers/travel-rule/api-endpoints/create-transfer.md) endpoint, specifying `"trisa"` as the protocol.&#x20;

```json
curl -X POST https://sandbox.ospree.io/api/v2/travelrule/transfers

-h 'Content-Type: application/json' \
-h 'Accept: application/json' \
-h 'Authorization: ••••••' \
-d '{
    "amount": 1.21,
    "dti": "4H95J0R2X",
    "protocol": "trisa",
    "reference_id": "reference-transfer-01",
    "beneficiary_vasp_id": "MLESJF",
    "originator_address": "3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy",
    "originator_account_reference_id": "random-ref-id-101",
    "beneficiary_address": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa",
    "beneficiary_account_reference_id": "random-ref-id-102"
}' 
```

* **Transfer Accepted** - for accepting an incoming TRISA transfer request, use [Action Transfer](/developers/travel-rule/api-endpoints/action-transfer.md) endpoint.&#x20;

```json
curl -X PATCH https://sandbox.ospree.io/api/v2/travelrule/transfers/{transfer_id}/accept

-h 'Content-Type: application/json' \
-h 'Accept: application/json' \
-h 'Authorization: ••••••' 
```

* **Transfer Completed**  - for completing the crypto transfer, use [Action Transfer](/developers/travel-rule/api-endpoints/action-transfer.md) endpoint.

```json
curl -X PATCH https://sandbox.ospree.io/api/v2/travelrule/transfers/{transfer_id}/complete
-h 'Content-Type: application/json' \
-h 'Accept: application/json' \
-h 'Authorization: ••••••' 
-d '{
  "transaction_hash": "80003fee6bcbb2726b4d6466d690fce6caaa03771aada747eb0651637514b893"
}'
```

* **Transfer Rejected** - for rejecting the transfer, use [Action Transfer](/developers/travel-rule/api-endpoints/action-transfer.md) endpoint.

```json
curl -X PATCH https://sandbox.ospree.io/api/v2/travelrule/transfers/{transfer_id}/reject

-h 'Content-Type: application/json' \
-h 'Accept: application/json' \
-h 'Authorization: ••••••' \
-d '{
  "reject_error": "REJECTED",
  "message": "Rejected without reason",
  "retry": false
}'
```

\
**References**

* <https://travelrule.io/&#x20>;
* <https://github.com/trisacrypto/trisa>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.ospree.io/developers/travel-rule/protocols.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
