Deposits
Contains deposits description and provides common workflow for that feature
Last updated
Contains deposits description and provides common workflow for that feature
Last updated
Crypto deposits are similar to bank transfers. If the recipient’s bank account number is known, the funds can be sent at any time. This approach differs from classic payment methods because the transaction cannot be created before the funds have appeared in the bank account. The same way web-services cannot expect that crypto deposit transactions will be initiated from the "payment form" every time because, in general, there is no such term for cryptocurrencies. Unlike the classical approach, web-services should handle callbacks from payment providers with information about received deposits. When web-services receive the first callback, they then create the transaction. After the transaction is confirmed by the payment provider, the second callback will inform the web-services about the status of the transaction. Then, web-services can provide the user with a specific service.
When a user gets an address for the first time they are able to save it into their crypto wallet application. It is more comfortable for the user because they don’t need to go to the "Cashier" section every time when they want to make a deposit. That is why many users save the address in their crypto wallet application after the first deposit and then they don't need to go to the payment form every time.
As cryptocurrencies are based on the blockchain technology, you cannot delete the address if it has already been created and has been written into the blockchain.
If the user knows this address they can always send the funds there, because it is not necessary for the user to interact with the payment form when they would like to send the funds.
Even if you show the users new addresses every time, they can always make the deposit to the older one, and they expect that they will be able to see their funds on your website.
The most common scenario for receiving cryptocurrency is "deposit with exchange". Coinspaid provides web-services with on-the-fly exchange solution. It means that all funds that were received from the users can be automatically converted into fiat currencies in order to avoid cryptocurrency fluctuations and exchange rate inconsistencies.
For exchanges between the USDT tokens (USDTB, USDTE, USDTT) or between the USDC tokens (USDC, USDCS), the exchange rate is always 1:1 — for example, 1 USDTT is always equivalent to 1 USDTE. Standard fees for “deposits with exchange” still apply.
In case of regular deposits without exchange the workflow there will be the same but the conversion option will be skipped.
Algorithm
User has EUR balance on your site
User uses some kind of “deposit” option on your site and chooses BTC as a payment method to use for the payment
Website shows a deposit BTC address to the user
User scans QR code or copies the address and goes to their crypto wallet application
When user sends BTC to this address our system makes an automatic exchange of received funds from BTC to EUR and your system gets the callback with the information about the deposit, including transaction's status, currency pairs, amount, fees and so on
You add the amount from the callback to user’s EUR balance
When you show a deposit address to a user, it is important to notify the user about exchange rates, deposit limits and the chosen cryptocurrency. Besides this you may want to warn the user that:
all deposits below the limits or sent to incorrect addresses will be lost
Here you can find information about deposit and withdrawal limits:
Sometimes users make mistakes and send the funds using a specific cryptocurrency to the address from a different blockchain. These funds will be lost in most cases.
In order to increase the conversion rate for crypto payments we have a special guide for how you can develop your payment form and provide the user with the best experience of crypto payments. There are good recommendations on how to build friendly and comfortable interactions with your interface for the user. Here you can find out how it can be implemented:
What is crypto payment form?Usually our merchants generate all the needed crypto addresses at the time when a new user is created. In order to do this you should use the "/v2/addresses/take" method from our API. You can define what currency should be used for receiving the funds from the user and, if necessary, into what fiat currency received funds should be converted.
A request to the endpoint needs to include two additional identifiers: end_user_reference
and foreign_id
. The end_user_reference
value must be a persistent identifier of the end user in your system that does not change between operations. The foreign_id
value may be an identifier of the end user or the operation or any additional information needed for your flow. Both values will be included in the response and in all the callbacks for the deposits to this address.
Some cryptocurrencies require additional parameters to be defined when a user makes a deposit. For example, users have to input a value into the "Memo" field when they make a deposit from their wallet application using XRP, BNB or another cryptocurrency as the payment method.
If it is necessary for a specific currency, we send the parameter "tag" in the response on "/v2/addresses/take" API call. If your system gets this parameter it has to show it's value to the user. In other cases received funds will be lost.