API integration flows
Last updated
Last updated
This section provides guidance on VASP-to-VASP and self-hosted wallet integration flows. Please note that these are example flows provided for reference—you may adapt them as needed to align with your specific business processes and regulatory requirements.
This flow outlines the process for initiating a Travel Rule crypto asset transfer from Virtual Asset Service Provider (VASP) A to VASP B. It includes the key steps required to collect and transmit originator and beneficiary information in line with applicable regulatory expectations.
Step 1: The user initiates a withdrawal request .
Reference previously created records using the following parameters (See Steps 3 to 6):
originator_account_reference_id
originator_address
beneficiary_account_reference_id
beneficiary_address
Step 7: VASP A initiates the Travel Rule transfer via Ospree platform.
Step 8: Beneficiary VASP B validates the transfer details.
Step 9: Beneficiary VASP B responds to the transfer inquiry with either an approval or rejection.
Step 11: If the transfer is approved by Beneficiary VASP B, Originating VASP A executes the crypto asset transaction to the beneficiary address.
Step 12: Originating VASP A updates the transfer record with the transaction hash.
This flow outlines the steps involved when a VASP receives a crypto asset transfer initiated by another VASP. It includes how incoming transactions are detected, evaluated against compliance thresholds, and verified in accordance with Travel Rule requirements.
Step 1: VASP B initiates a Travel Rule transfer request to VASP A.
Step 3: VASP A inspects the transfer details and compares the transaction amount against a pre-set threshold rule based on local regulations.
(1) If the transaction exceeds the threshold: Verify whether Travel Rule data from the counterparty entity is included before processing the transfer.
If Travel Rule data is missing or does not match VASP A’s records, flag or block the incoming deposit.
If Travel Rule data is complete, proceed to the next standard compliance verification step, as defined in internal policies.
(2) If the transaction is within the allowed limit: The transfer proceeds without additional Travel Rule-related checks and moves to the next standard compliance verification step, as defined in internal policies.
Step 5: Ospree notifies VASP B of VASP A’s decision.
Step 6: If the transfer is approved by VASP A (the beneficiary), VASP B (the originator) executes the crypto asset transaction to the beneficiary address.
This flow outlines the process for managing crypto asset withdrawals to self-hosted wallets owned by VASP A’s customers. It includes steps for collecting user attestations and gathering relevant information to support internal compliance processes, including Travel Rule data collection when applicable.
Step 1: The user initiates a withdrawal request and inputs an address, indicating that it is a self-hosted wallet.
Step 2: The VASP requests an ownership attestation from the user.
Step 3: The user signs the attestation requested by the VASP.
Step 4: VASP A initiates a Travel Rule transfer to the self-hosted address.
Originating and Beneficiary are the same VASP
Originating and Beneficiary accounts are the same
Originating and beneficiary addresses are different.
Only beneficiary address is self-hosted.
Step 5: Ospree confirms the Travel Rule transfer record.
Step 6: VASP A sends the crypto funds to the self-hosted address.
Step 7: VASP A updates transaction hash record.
This flow outlines the process for handling incoming crypto asset deposits from a customer’s self-hosted wallet. It includes steps for collecting user attestations, verifying whether the wallet has already been labeled as self-hosted, and gathering the necessary data to support the creation of a Travel Rule transfer record, when applicable.
Step 1: The user declares a self-hosted wallet address from which they plan to send funds to the VASP.
Step 2: The VASP requests an ownership attestation from the user.
Step 3: The user signs the attestation as requested by the VASP.
Step 4: The user sends the funds from the declared self-hosted wallet address to the VASP.
Step 5: The VASP recognizes the previously declared self-hosted wallet address and initiates a Travel Rule transfer from that address back to itself for record-keeping purposes.
Originating and Beneficiary are the same VASP
Originating and Beneficiary accounts are the same
Originating and beneficiary addresses are different.
Only originating address is self-hosted.
Step 2: In accordance with the Travel Rule, VASP A must share its customer information with VASP B—similar to the information-sharing process used in traditional banking. This includes details about both the originator and the beneficiary. To fulfill this requirement, VASP A uses the endpoint to initiate a Travel Rule transfer. VASP A has two options when populating the transfer request:
Include full details of the originator and beneficiary directly within the request body, or
Step 3: Create Originator Account — Use the endpoint to create a customer account representing the originator (sender). Include the required Travel Rule information such as name, wallet address, and residential or business address. Use the reference_id
returned from this request as the originator_account_reference_id
in the Create Transfer query.
Step 4: Create and Link Originator Wallet Address — Use the endpoint to register and associate a wallet address with the originator account. This address will be used as the originator_address
in the Create Transfer query.
Step 5: Create a Beneficiary Account — Repeat the account creation process using the endpoint to create an account for the beneficiary (receiver). At a minimum, provide the beneficiary’s name and wallet address. Use the reference_id
from this request as the beneficiary_account_reference_id
in the Create Transfer query.
Step 6: Create and Link Beneficiary Wallet Address — Use the endpoint to register and associate the beneficiary’s wallet address with their account. This address will be used as the beneficiary_address
in the Create Transfer query.
Step 10: Ospree notifies VASP A of VASP B’s decision via a .
Step 2: When an incoming transfer is detected, Ospree’s sends a notification to VASP A.
Step 4: VASP A the transfer.