Withdraw funds

Updated on 21 Nov 2023

Users are able to withdraw money from wallets through the methods activated for their types of Contract.

Some of the available withdrawal methods:
• via external provider (to the card, to third-party provider, directly to bank account etc.)
• to bank account via bank transfer
• via cash desk

Currently the system allows manual top-up of Users wallets through bank transfer or through cash desk.


Withdraw funds via bank transfer

In this type of withdrawal required bank transfers are made manually by the Accountant in the appropriate banking software.
From the bank point of view, wallet withdrawal to a bank account is just a transfer from the appropriate bank account to specified bank requisites.
Withdrawal is available only to banks which are created in the system.
Withdraw funds


Success flow:
• User creates withdrawal request in the system and provides the following information:
a. wallet to withdraw from
b. withdrawal amount
c. bank requisites for withdrawal (BIC is required)
• User with Accountant role or with a relevant permission checks specified requisites and accepts withdrawal request in the system.
• User with Accountant role creates bank transfer in the banking software.
• The funds on User’s wallet are on hold and the transaction is pending until the Accountant doesn’t confirm the transaction.


APIs for this Use case:

GET /bank-catalogView list of created banks
POST​/bank-withdrawals​/calculateCalculate commission for withdrawal via bank
POST​/bank-withdrawals​/with-bankPerform withdrawal via bank with bank
POST​/bank-withdrawals​/viewView requests to withdraw via bank
POST​/bank-withdrawals​/create-request​/with-bankCreate a request to withdraw via bank with bank
POST​/bank-withdrawals​/{requestIdentifier}​/acceptAccept request to withdraw via bank
POST​/bank-withdrawals​/{requestIdentifier}​/declineDecline request to withdraw via bank
POST​/bank-withdrawals​/{requestIdentifier}​/lift-limitLift limit for request to withdraw via bank
POST​/bank-withdrawals​/{requestIdentifier}​/rejectReject limited request to withdraw via bank


Withdraw funds via Cash Desk

Users can make withdrawal requests via Cash Desk. The operation of withdrawal of funds from the wallet is possible only after reinforcement / deposit of capital into the Cash Desk (system operation).

This functionality is not available on UI but there’s an implemented flow and logic covered by a list of APIs.

One of the possible flows:
1. User makes a request to withdraw funds through the Cash Desk
2. Accountant confirms the request
3. Cashier has enough funds in cash and the Cash Desk is open.
4. User visits Cash Desk and provides the request ID number
5. Cashier validates the request
6. Cashier gives money to the User
7. User’s wallet balance is decreased for the amount of withdrawal (and commission if applicable)


APIs for this Use case:

GET​/cash-desk-withdrawals​/details​/{requestIdentifier}View withdrawal request details
GET​/cash-desk-withdrawals​/{cashDeskId}View withdrawal requests for specified cash desk
POST​/cash-desk-withdrawals​/{cashDeskId}Execute withdrawal via specified cash desk
POST​/cash-desk-withdrawals​/{cashDeskId}​/calculateCalculate commission to withdraw via specified cash desk
POST​/cash-desk-withdrawals​/{requestIdentifier}​/acceptAccept withdrawal request
POST​/cash-desk-withdrawals​/{requestIdentifier}​/approveApprove withdraw request
POST​/cash-desk-withdrawals​/{requestIdentifier}​/declineDecline request to withdraw via cash desk


Additional Cash Desk APIs:

Cash Desk InvestmentPOST​/investmentsTop up of authorized capital via cash desk
Cash Desk InvestmentGET​/investments​/{requestIdentifier}View cash desk investment details
Cash Desk InvestmentPOST​/investments​/{requestIdentifier}​/acceptAccept cash desk investment request
Input to cash desk operationsPOST​/inputsInput collected cash to cash desk
Input to cash desk operationsGET​/inputs​/{requestIdentifier}View cash desk input request details
Input to cash desk operationsPOST​/inputs​/{requestIdentifier}​/acceptAccept input cash desk request
Gate InvestmentGET​/gate-investments​/{requestIdentifier}View cash investment details
Cash desk collectPOST​/collectsCash collect request
Cash desk collectGET​/collects​/{requestIdentifier}View transaction details
Cash desk collectPOST​/collects​/{requestIdentifier}​/acceptAccept collect request
Cash desk operationsPOST​/cash-desks​/viewGet cash desks for specified coin

Withdraw funds via Third-Party Provider

To allow withdrawals via other services of Third Party Providers the integration with a relevant Third Party is required. 
After the integration a service will be available for configuration in the Contract’s gate commission profiles. 
It can be a withdrawal to the payment card, withdrawal direct to the bank account, withdrawal to a third-party provider, etc.


Block Wallet

Users can block their wallet. This will not allow out-going operations from this wallet, but the wallet will be operational for incoming transactions. 
This functionality is available on the UI provided. 
To block the wallet User should click the “Block wallet” and “Update” in the Wallet settings menu.

APIs for this Use case: 

PATCH​/coins​/{serial}Update coin (change status)


Delete Wallet

Users can delete wallets only with zero balance. In the event when the User initiates closing of the wallet with the funds on it, the System proposes to transfer funds to another wallet. In this case, if the other wallet is in a different currency, the System will perform the internal currency exchange operation and will transfer funds in the currency of the target wallet.
When User doesn’t have another wallet to transfer funds to, he will not be able to close the current wallet which has a positive balance.

This functionality is available on UI, in the Wallet – Settings menu.


APIs for this Use case:

DELETE​/coins​/{serial}Delete coin