Cryptocurrency exchange and digital transaction verification

Enabling the purchase and sale of digital assets and Fiat currencies. Streamlining the transaction verification process in accordance with the AML/CTF policy.

Node.js (TypeScript)
Event Driven Architecture
Scalable Modular Monolith
Grafana Stack (Loki)
Event Driven Architecture, Scalable Modular Monolith
PostgreSQL, RabbitMQ, Redis

Our Client is a FinTech developing payment infrastructure for applications using cryptocurrencies and other digital assets. Thanks to their solutions, a two-way exchange of cryptocurrencies and Fiat currencies is possible. The solution easily integrates with basic payment methods such as bank transfers, debit and credit cards, Apple Pay, Google Pay, etc. The company's goal is to open up the cryptocurrency and digital asset market to more companies and users around the world.


Buying and selling digital assets (cryptocurrencies, NFT) is a little backbreaking. In many cases, this can only be done through cryptocurrency exchanges. In practice, this means that the user leaves the application or website and makes a transaction on the exchange. Such a gap in the purchasing and sales process limits the mass adoption of the crypto world by both companies and ordinary users.

The cryptographic market is still quite an uncertain place in many aspects. From time to time there are speculative attacks. Many applications are also used to launder money from an illegal source.

Therefore, it is necessary to ensure the highest possible security for users and their transactions. However, when offering a global service, many different legal requirements must be met at the local level. This constitutes quite a challenge.


Our programmers combined two teams in the Client’s start-up: Risk and Compliance and Off-Ramp.

The aim of the Risk and Compliance department is to ensure transaction security and thus meet the AML and CFT requirements. The challenge is to guarantee the right User Experience due to:
• differences in national (or State law in the case of the US market), • the increasing level of complexity (resulting, for example, from the transaction amount),
• a huge number of daily verifications.

Our programmers in the Risk and Compliance department were responsible for organizing, developing and automating transaction verification methods. Our developers participated in the integration of the Client’s application with solutions for KYT (Know-Your-Transaction), Name Screening, Antifraud offered by external suppliers, as well as the internal functionality of Customer Risk Rating.

In turn, the Off-Ramp department deals with enabling users to exchange cryptocurrencies for Fiat currencies. This is both in the Client’s application itself and in decentralized applications (DApps) operating on the blockchain.

Our programmers joined the Off-Ramp team in the proof of concept phase. With their work, they supported the process of integrating the Client’s application with external operators who, in legal terms, enable the withdrawal of funds to a bank account or to a user's card.

What's more, they designed and then implemented the function of the calculating margin for withdrawal.

Project result
Project results

Risk and Compliance area:

Increasing the number of tools, thus enabling faster and more accurate verification of transactions.

Streamlining the work of people from the Compliance Department whose task is to re-verify suspicious transactions manually. This was possible by providing the system with the analyzed transaction information along with the event log, and also thanks to the addition of a mass recheck function for held transactions.

Off-Ramp area:

Enabling the withdrawal of Fiat currencies. In accordance with KYC procedures (withdrawal limits depend on the level of user identification), but also liquidity management.

Providing a convenient API with Off-Ramp functionality for decentralized applications.