> 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/interoperability/draft.md).

# DRAFT

## 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.

\
**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.

\
**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>
