Crypto transfers


Introduction

Crypto Transfers is a solution provided by Verestro that enables comprehensive management of FIAT funds originating from cryptocurrencies for both Partners and endusers. The system allows for the generation of crypto addresses in the context of specified symbols and networks. Crypto Transfers also supports incoming transfers in FIAT to the valid balance of the Partner and enduser, ensuring flexible and transparent management of financial resources.

As part of the integration, it is also possible to create an Admin Panel instance for you which allows you to track transfers made using the Crypto Transfers service.

Important! The service is still under development. Functionalities will be made available and added to the documentation on an ongoing basis.

Note: The solution is available to Partners integrated with Antaca. For more information about Antaca service, please open this link

Note: Verestro itself does not support cryptocurrencies. Cryptocurrency operations are orchestrated by our partner Financial Institution, which is responsible for converting cryptocurrencies into FIAT currencies.

Key Capabilities:

Important! Please remember that if you want to initiate a top-up using a cryptocurrency such as USDT or USDC, the top-up must be sent to the crypto address associated with a USD balance. Otherwise, the transfer will not be successful. The same applies to EURC: it must be sent to the crypto address associated with an EUR balance.

How to connect with us?

Verestro provides access to the solution through REST API implementation model. The REST API integration model involves connecting directly via a server to server path. In this case we do not provide any application view - each process is performed using the API methods according with the REST protocol. In this integration model, authorization is performed using  x509 certificate authentication. More detailed information about integration with Crypto Transfers service is provided in the technical documentation. Verestro actively supports the Partner throughout the integration process.

Overview

This chapter provides description of the terminology and components used in the functionalities offered by the Crypto Transfers service. The service enables top upping your (and your endusers including corporations) balanaces with the FIAT funds originated from cryptocurrencies. Within the service, it is possible to generate crypto addresses with a context of a balance, a network and a symbol.

Important! The service is still under development. New functionalities will be made available and added to the documentation on an ongoing basis.

Abbreviations

This section shortly describes abbreviations and acronyms used in the document.

Abbreviation

Description

SDK

Software Development Kit

API

Application Programming Interface

OS

Operative System

Terminology

This section explains a meaning of key terms and concepts used in this document.

Name

Description

Network

Network is a specific blockchain infrastructure (e.g., Ethereum, Tron) through which cryptocurrencies are transferred. It dictates the transaction standards, required network fees (gas), and processing speeds for incoming deposits. Selecting the correct network is essential for the user to ensure funds arrive at the intended destination address and are properly processed. Selecting network is required to create a new crypto address.

Symbol

Symbol is a 3-5 letters code used to identify a specific cryptocurrency (e.g., USDT, EURC, ETH). It designates the digital asset within the system and defines its corresponding conversion rate to FIAT currency. Selecting symbol is required to create a new crypto address.

Crypto address

Crypto address is a unique alphanumeric identifier that functions like a digital account number for receiving funds on a blockchain. It is associated with a specific network and ensures user deposits are directed to the correct destination wallet. Providing an incorrect address or using an unsupported network may result in a permanent loss of funds. To create a crypto address you need to specify network and symbol which should be assigned to it. Our service allow you and your endusers to get details of your crypto address and to create new crypto address in the context of an existing balance, after selecting network and symbol.

Blockchain

Blockchain is a decentralized, digital ledger that records all transactions on the network without intermediaries. Transaction data is grouped into cryptographically secured blocks, forming an unbreakable chain protected from modification.

Balance

The current amount in the Antaca that is available for use in the current currency. For example to handle top up originated from EURC the balance has to be in EUR currency. Each debit reduces the balance amount, and each top-up increases the balance amount.
A balance can be created in a single currency (one balance per currency). If multiple currencies need to be supported, several dedicated balances must be created.

Master balance

Also referred to as the partner balance - it is shared with the Partner and the Financial Institution. Master balance can be created in a single currency (one balance per currency). If multiple currencies need to be supported, several dedicated balances must be created. Both credit and deposit types are available.

Partner credit and deposit balances are used to process transactions of Partner especially in cases where User Balance is hold by Verestro.

Partner

Customer using Verestro products. Essentially, a Partner can be referred to as a Tenant. They are assigned to one or more financial institutions within the Verestro system. In turn, entities such as endusers are assigned to the Partner. A Partner can request to issue crypto addresses and manage transfers using the Crypto Transfers service.

Enduser

This is an individual end-user utilizing the Crypto Transfers solution through the Partner's application. They are registered in the Verestro system and hold one or more balances in a specific currency.

Financial Institution

The institution to which a given partner is assigned. It creates master balances per partner, per currency within its own system. It is responsible for converting cryptocurrencies into FIAT currency, ensuring that requested transfers are properly processed, and maintaining reconciliation so that the partner's master balance remains identical across both their and Verestro's side.

Application components

This chapter describes Crypto Transfers service as a complete solution, divided into all the components that support and are required for managing the crypto transfer's domain. The individual functionalities for which these services are responsible reduce the additional work on your part as a Partner. Processes such as transaction validation, debiting and topping up balances, and saving transaction history per enduser are handled on our side.

Crypton API

A backend component that, by communicating with internal and external services, enables the crypto address creation and management, assigns crypto address to the provided balance and handles ordered top-ups in FIAT. Crypton API endpoints are exposed and described in Technical documentation.

Note: The blockchain networks supported by our partner Financial Institution are Ethereum and Tron.

Supporting services

The following services are not a direct part of the Crypton API implementation. However, they are involved in the processes of creating and crypto addresses and balances. Additionally, they enable the balances (including master balance) management and the storage of transaction history.

Component

Description

Antaca API

A backend component responsible for creating and managing balances. Each crypto address must be assigned to a balance in order to receive transfers. Crypton API communicates with Antaca API to get details of a specific balance or top up it.

Transaction History Core API

A backend component responsible for storing the history of performed transactions using Crypton API. All changes on the balance's state are reported by Antaca API. The history is available in the Admin Panel as well as directly through the API.

AML

A tool that helps to detect and prevent suspicious or fraudulent transactions while maintaining full AML compliance.

The system provides real-time transaction monitoring based on configurable rulesets and can use KYC data, end user transaction history, and transaction details to support effective risk management.

Admin Panel

A tool for Partners to work with Verestro services. The main purpose of Admin Panel is to provide a web-based environment with the ability to manage Partner service actions. 


Use cases

This chapter provides information about use cases available in the Crypto Transfers service. Crypto Transfers service enables a range of processes related to transferring funds using cryptocurrencies. In order to use the processes provided by the Crypto Transfers service, the Partner must have a master balance set up in the Verestro system.

Important! The service is still under development. Functionalities will be made available and added to the documentation on an ongoing basis.

Note: The blockchain networks supported by our partner Financial Institution are Ethereum and Tron.

Account management

This chapter provides information on creating and managing crypto addresses, as well as retrieving the information required to initiate transfers of funds originating from cryptocurrencies.

Note: Verestro itself does not support cryptocurrencies. Cryptocurrency operations are orchestrated by our partner Financial Institution, which is responsible for converting cryptocurrencies into FIAT currencies.

Our partner Financial Institution currently supports three cryptocurrency symbols, which are listed in the table below.

Crypto currency supported by Financial Institution (symbol)

Corresponding FIAT currency

USDT

USD

USDC

USD

EURC

EUR

Crypto address creation

This section describes the process of creating a crypto deposit address. To create a crypto deposit address referencing an end user’s balance, the end user must be registered in the Verestro system and have a balance in the corresponding FIAT currency. For example, to create a crypto deposit address for USDC or USDT, the end user must have a balance in USD. A user with multiple balances will have a separate crypto deposit address for each balance, even when the same cryptocurrency symbol and blockchain network are used. The diagram below describes the crypto address creation process step by step.

Important! Please remember that if you want to initiate a top-up using a cryptocurrency such as USDT or USDC, the top-up must be sent to the crypto address associated with a USD balance. Otherwise, the transfer will not be successful. The same applies to EURC: it must be sent to the crypto address associated with an EUR balance.

Expand to see sequence diagram describing crypto address creation process step by step

@startuml
skinparam ParticipantPadding 30
skinparam BoxPadding 30
skinparam noteFontColor #FFFFFF
skinparam noteBackgroundColor #1C1E3F
skinparam noteBorderColor #1C1E3F
skinparam noteBorderThickness 1
skinparam sequence {
ArrowColor #1C1E3F
ArrowFontColor #1C1E3F
ActorBorderColor #1C1E3F
ActorBackgroundColor #FFFFFF
ActorFontStyle bold
ParticipantBorderColor #1C1E3F
ParticipantBackgroundColor #1C1E3F
ParticipantFontColor #FFFFFF
ParticipantFontStyle bold
LifeLineBackgroundColor #1C1E3F
LifeLineBorderColor #1C1E3F
}
actor "End user" as user
participant "Customer application" as issuer
participant "Verestro Crypton" as cry
participant "Verestro Antaca" as ant
note right of user: End user wants to create\nnew balance (KYC success)
user->issuer: Create new balance
issuer->ant: Create new balance (userId)
note left of ant: Create balance for user
issuer<-ant: Return created balance data
user<-issuer: Display balance
note right of user: End user wants\nto see all their balances
user->issuer: Show balances
issuer->ant: Get end user balances (userId)
ant->issuer: Return list of balances of end user
user<-issuer: Show end user balances
note right of user: End user chooses to top up\nselected balance with crypto
user->issuer: Top up my balance
issuer->cry: Get symbols for selected balance (balanceId)
cry->issuer: Return list of supported symbols (e.g. EURC)
issuer->user: Show the list of supported symbols
note right of user: End user selects in which symbol\nbalance should be top upped
user->issuer: Select symbol
issuer->cry: Get supported networks for the selected symbol (symbol)
issuer<-cry: Return supported networks (e.g. Ethereum)
user<-issuer: Show supported networks for the selected symbol
note right of user: End user chooses to create crypto address\nin selected network
user->issuer: Create new crypto address
issuer->cry: Create crypto address in the context\nof the selected network (balanceId, symbol, network)
note left of cry: Create crypto address
cry->issuer: Return created crypto address
user<-issuer: Display crypto address
@enduml

Technical documentation

This chapter provides technical information about the integration with Crypto Transfers service. Description of the each API methods provided by the Crypto Transfers is listed below. The service supports a server-to-server integration model.

Tip: This API requires Mutual TLS authentication. You can use the same certificate for all mTLS-secured APIs exposed by Verestro. If you don't have one, follow this instruction: Connecting to server-to-server APIs

Note: In a server-to-server connection, the authentication of the end user is your responsibility. Our system exclusively authenticates the Partner Instance (tenant).

@swagger="https://crypton.verestro.dev/doc/server.yaml"

Onboarding

This chapter is intended to present you the requirements that will allow you to use the Crypto Transfers solution in your application. We have presented here all actions necessary to be done so that you can join the Crypto Transfers program and so that we can properly create the required Partner account for you in our system.

Tip: Crypto Transfers service offers two environments: TEST and PROD. For more information about application environments please visit Technical documentation.

To start using Crypto Transfers service you need to go through a few on-boarding steps:

1. Please contact our sales - sales@verestro.com 

2. Please respond to some introduction question that will let us prepare proposal for you.

3. You will receive offer for transaction in FIAT originating from cryptocurrencies.

4. If you accept the offer you will be asked to provide some company documents required for the AML verification process.

5. After succesful AML process you will receive contract with Verestro along with our Financial Institution partner.

6.  You will be asked to provide account numbers for settlements.

7.  And finally you will enable Crypto Transfers service within your application.