Withdrawal Restrictions

Withdrawal Restriction System Technical Documentation

1. Overview

The system implements multiple levels of daily (24-hour) withdrawal volume restrictions.

Withdrawal volumes are set in the key platform currency, then recalculated to any other currency at the withdrawal request submission, according to leftover per user.

2. Recalculation Process

  • Withdrawal volume is recalculated in any currency, according to the current rate with the key platform currency (key platform currency is set during deployment of WithdrawalRestriction service)

  • Recalculation occurs at the exchange rate prevailing at the withdrawal request submitted by the User

  • WARNING! The Administrator has to make sure each currency has a market or rate source with the key platform currency

3. Market Availability

  • Restrictions are applied during the withdrawal of any currency in case the market is available and has the last trading price or the rate source.

4. Calculation Period

  • Withdrawal volume is valid from 0:00 to 23:59 server time

  • Includes all completed or in-progress withdrawal requests during this period

  • Completed withdrawals of the previous day no longer affect new calculation periods

5. User Levels and Names

  • Default Levels:

    • Level 0: Unverified

    • Level 1: Verified

  • An Administrator can create additional levels, set and edit their names, set and edit withdrawal limits, and set up the image per level

  • Every User automatically receives Level 1 after successful identity verification

  • An Administrator can manually increase/decrease the User’s level beyond Level 1

6. Implementation Details

  • WithdrawalRestriction service manages 24-hour withdrawal volume per user restriction logic

  • The exchange rate retrieval mechanism is essential for accurate recalculations

  • User verification levels determine applicable restrictions

7. Example Scenario

  • The withdrawal limit for Level 1 users is 200 EUR, as EUR is the key platform currency

  • User A (Level 1) requests a withdrawal of 100 USD

  • If 1 USD = 0.8 EUR, the withdrawal volume is recalculated as 80 EUR

  • The withdrawal volume left for this User will be 120 EUR after that withdrawal is complete

  • Users will be able to withdraw up to 120 EUR equivalent in any currency till 23:59 server time

  • Stating 0:00 the 24h withdrawal limit will become 200 EUR again

8. Admin Panel

8.1 Admin can review:
- Level
- Level Name
- Limits by levels in the key platform currency
- Users amount for each level

Screenshot from 2024-02-14 13-12-24.png

8.2 Admin can create a New Withdrawal Restriction Level
- Add level. The new Level number should be with +1 number of the previously existing level number
- Edit name for the Level.
- Key platform currency is without an option to be changed.
- Edit amount for withdrawal restriction level in key platform currency.

Screenshot from 2024-02-14 13-17-26.png

8.3 Admin can review Details and options for existing levels:
- Icon with the option to upload the file that would be displayed for USer on UI
- Name of the Level
- Amount for withdrawal restriction level in key platform currency
- The Rates section displays details for existing markets and their respective rates. If the enabled currency does not have a market with the key platform currency, it will show a 'No market' status. Similarly, if the existing market with the key platform currency has no rate, it will display a 'No rate' status.

8.4. Admin can make edits for existing levels:
- Change the name of a level
- Change the amount for withdrawal restriction level in key platform currency

8.5. Admin can review Users of the existing level:
- User email
- User’s current step of the KYC verification
- Option to visit User`s directory using ‘3 dots’ button
- Option to search Users by email or pagination features

8.6. Admin can review and edit verified User`s Withdrawal Restriction Level in the ‘User Profile’

A. If the users are at Level 0, the admin has no option to top up their level. The users must verify their identity first.
B. The admin has no option to lower the user's level to 0.
C. Admin can top-up verified user’s level
D. Admin can lower verified user’s level

9. User App queries

9.1 The front end receives information about daily limits and the already selected amount of limits upon receiving the request.

type Query { currency(id: String): Currency }

Example:

query GetWithdrawWalletPaymentInterface($id: String!) { currency(id: $id) { withdrawPaymentInterfaces { type paymentInterface { id title logoUrl subtitle } currency { id name icon_url } recipients { id data description } recipientSchema minWithdrawAmount maxWithdrawAmount withdrawFee minWithdrawFee maxWithdrawFee maxWithdrawAmount24h restWithdrawAmount24h } } }

 

Response Parameters:

  • maxWithdrawAmount24h: This parameter represents the withdrawal limit for the user group in the requested currency relative to the key platform currency. The value is calculated using the current exchange rate. If the exchange rate is unavailable, the rate is considered as 0, resulting in a recalculation of 0 as well.

  • restWithdrawAmount24h: This parameter indicates the amount of withdrawal already utilized by the user in the requested currency. The rate for each transaction is fixed at the time of its creation. If no exchange rate is available at the time of submitting the withdrawal request, the rate is considered as 0, and such withdrawals are excluded from the total withdrawal amount.

 

9.2. To display the user's withdrawal limit level, the following query is utilized:

type Query { withdrawalLevel: WithdrawRestriction }

Example:

 

9.3. To display the all withdrawal limit levels, the following query is utilized:

Example: