Mercuryo On-Ramp & Off-Ramp API solution allows to exchange cryptocurrencies to fiat money directly in your app or on your website.
Before using the Sandbox
environment, prepare these:
The Sandbox
environment works with the following networks:
Testnet | Address | Supported Cryptocurrency |
---|---|---|
BTC Testnet | msBE6aCaAesegu4VzbQW3L5xWBL8vi15Q7 |
Bitcoin |
ETH Sepolia | 0xA14691F9f1F851bd0c20115Ec10B25FC174371DF |
Ethereum (ETH) and USDT |
Contact your integration manager. You will get the sdk-partner-token
to sign up user registration and authorization endpoints.
All the requests must contain:
application
/json
application
/json
{PartnerName}
Recommendations:
All Mercuryo API endpoints accept the B2B-User-Ip
header, and it is strongly recommended that all requests contain the real IP address of end-user in this header. If there is no end-user's IP, Mercuryo reserves the right to reject transactions according to its internal rules.
API URL: https://sandbox-cryptosaas.mrcr.io/v1.6/.
Mercuryo charges fees for:
Fee information must be available to the user at any moment.
You can include additional fees to the list: Mercuryo’s Fees + Your Fees = Total Fee
. Contact your account manager to adjust the fee policy.
The user must accept the Terms of Service before signing up. You have to ask the user to agree to the Terms of Service on your front end. You will send user’s consent in the accept
parameter of POST /b2b/user/sign-up
.
All Mercuryo API endpoints — except for the authorization endpoints — require b2b-bearer-token
header. Mercuryo uses the header to identify the merchant/user context.
The b2b-bearer-token
expires in 24 hours for the Production
environment. You can authorize the user again or refresh the token after that. The b2b-bearer-token
doesn’t expire in the Sandbox
environment.
sdk-partner-token
.sdk-partner-token
to sign authorization endpoints.POST /b2b/user/sign-up
to sign up a user.Use POST /b2b/user/sign-in
to sign in a user, or use GET /b2b/user/refresh-token
to refresh the b2b-bearer-token
.
You can assign an ID to each transaction. Pass your transaction ID in the merchant_transaction_id
field.
Transaction ID format: ^[A-Za-z0-9-_]{1,255}$
. Any lowercase and uppercase letter of the Latin alphabet, digits, underscore, and hyphen. Total length is up to 255 characters.
Know Your Customer (KYC) procedures are indispensable for financial institutions to verify their clients and keep business on the safe side.
KYC procedures help Mercuryo fight financial crime. Therefore, it prevents mixing your users’ funds with illegal funds of bad actors and perpetrators of any sort. Identity verification is a legal obligation to be compliant with AML/CFT laws. Mercuryo is strongly committed to the highest industry standards of clients' security, which requires protecting the integrity of the entire financial system.
SumSub is the major KYC procedure provider of Mercuryo.
Note: Please be aware that there must be only one e-mail address per user. That is, if the existing user (who is already registered and passed the KYC procedure with one e-mail address) registers with another e-mail address and provides the same documents to pass the KYC procedure, this user will receive the KYC refusal under the new e-mail. Thus, e-mail address used in user registration must be wisely chosen.
These documents can be acceptable identity verification:
The document must have:
Meet these requirements:
There are two cases for integrating KYC procedures depending on your user onboarding:
Contact your account manager if you have any questions regarding KYC procedures.
If you don’t implement any KYC procedures, we provide the SumSub interface to do KYC verification directly in Mercuryo.
URL example: https://sandbox-payments.mrcr.io/kyc?access_token=your_token&success_url=url&failure_url=url&scheme=your_scheme&lang=lang_code
.
Parameter | Description | Type |
---|---|---|
access_token | Get the access token using GET /b2b/kyc/access-token . |
Required |
success_url | URL-encoded JSON. Example: https://mercuryo.success.com. | Required |
failure_url | URL-encoded JSON. Example: https://mercuryo.failure.com. | Required |
scheme | Light or Dark appearance. | Optional |
lang | The language is English by default. Supported languages: English, Chinese, Russian, French, Hindi, Indonesian, Japanese, Korean, Portuguese, Spanish, Turkish, Vietnamese. | Optional |
If redirect parameters are missing, the user won’t be redirected. status
and msg
parameters will be appended to failure_url
. status: back
if user clicks the back button. status: fail
if you get an error.
Use GET /b2b/user/contacts
to check user's email verification status.
GET /b2b/user/kyc-status
to get the KYC status. We can identify a user whom you registered by the email if we already have it:features
, feature: crypto
is complete
, then that’s it.GET /b2b/kyc/access-token
to get the KYC access token.Production
environment URL example: https://payments.mercuryo.io/kyc?access_token=your_token8&scheme=your_scheme&lang=lang_code.Sandbox
environment URL example: https://sandbox-payments.mrcr.io/kyc?access_token=your_token8&scheme=your_scheme&lang=lang_code.Sandbox
, upload the documents and contact Mercuryo to approve the documents.GET /b2b/user/kyc-status
to get the status for feature: crypto
.complete
: KYC procedures are successfully complete.incomplete
: SumSub hasn’t started the verification.failed_attempt
: the first attempt to pass the verification failed. Try again.failed
: the verification failed; the user isn’t allowed to create an IBAN. Contact Mercuryo Support.under_review
: SumSub is verifying the documents.GET /b2b/kyc/documents
to fetch details on uploaded KYC documents.If you’re not PCI-DSS certified, you will have to use Mercuryo interface to acquire the payment card data. Mercuryo interface is customizable.
You can enable the EUR 700 limit feature for crypto purchases with a payment card. A user will be able to buy crypto with a payment card until the limit of EUR 700 is reached. Contact your account manager to enable this feature. If the feature is enabled, use GET /b2b/user/card-limits-unverified
to check user limits of the users who haven’t completed the KYC procedures.
Buying crypto with fiat money using a payment card.
The user must be signed in and verified (valid KYC). Mercuryo won’t complete the transaction if the verification is expired. Use GET /b2b/user/kyc-status
to check user’s verification.
Use GET /b2b/user/contacts
to check user's email verification status.
Check user limits before the transaction. Mercuryo won’t complete the transaction when beyond the limit. Use GET /b2b/user/card-limits
to get limit details.
If the price changes 1% or more upon calling the endpoint after acquiring rates, then the endpoint will contain an error with the 403004 code reading "Conversion rate has been changed”: Mercuryo won't create a transaction. Otherwise, Mercuryo will cover the price difference and the trade will have the rate which was acquired.
Acquire rates again if the elapsed time is more than an hour, because trx_token
expires in one hour.
GET /b2b/currencies
to get available currencies.GET /b2b/oor/buy-methods
to get available purchase methods.card
payment method to buy crypto with user’s payment card.GET /b2b/oor/buy-rates
to get rates.trx_token
.GET /b2b/user/cards
to get user’s saved payment cards. All new payment cards are saved automatically.GET /b2b/user/contacts
to ensure that the user's billing address is present.is_billing_address_set
property equals to false
, use POST /b2b/user/billing-address
to submit user's billing address.POST /b2b/oor/buy
to start the transaction.buy_card
transaction.https://payments.mrcr.io/buy?parameters
.POST /b2b/oor/buy
. Get the transaction status using GET /b2b/transactions?merchant_transaction_id={merchant_transaction_id}
.
Buying crypto with fiat money using a payment card.
The user must be signed in and verified (valid KYC). Mercuryo won’t complete the transaction if the verification is expired. Use GET /b2b/user/kyc-status
to check user’s verification.
Use GET /b2b/user/contacts
to check user's email verification status.
Check user limits before the transaction. Mercuryo won’t complete the transaction when beyond the limit. Use GET /b2b/user/card-limits
to get limit details.
GET /b2b/currencies
to get available currencies.GET /b2b/oor/buy-methods
to get available purchase methods.card
payment method to buy crypto with user’s payment card.GET /b2b/oor/buy-rates
to get rates.trx_token
.GET /b2b/user/cards
to get user’s saved payment cards. All new payment cards are saved automatically.GET /b2b/user/contacts
to ensure that the user's billing address is present.is_billing_address_set
property equals to false
, use POST /b2b/user/billing-address
to submit user's billing address.POST /b2b/oor/buy
to start the transaction. For users with Brazil-issued payment cards and Brazilian reals only: pass the tin
parameter in POST b2b/oor/buy/card
. A Taxpayer Identification Number — which is CPF for Brazil — is required.POST b2b/oor/buy/card
returns a 3-D secure redirect. This redirect contains uri_template
. Redirect the user to the URL from uri_template
and pass the parameters of the 3-D secure redirect.src
attribute. Wait till onLoad
is finished and pass the 3-D secure object in the iframe. Process the message at the front end after the 3-D secure form is complete.Get the transaction status using GET /b2b/transactions?merchant_transaction_id={merchant_transaction_id}
.
Buying crypto with fiat money.
The user must be signed in and verified (valid KYC). Mercuryo won’t complete the transaction if the verification is expired. Use GET /b2b/user/kyc-status
to check user’s verification.
Use GET /b2b/user/contacts
to check user's email verification status.
Check user limits before the transaction. Mercuryo won’t complete the transaction when beyond the limit. Use /b2b/user/iban-limits/buy
to get limit details.
If the rate changes more than 1%, the trade will have the new rate. If the rate changes less than 1%, the trade will have the old rate.
Acquire rates again if the elapsed time is more than an hour, because trx_token
expires in one hour.
GET /b2b/currencies
to get available currencies.GET /b2b/oor/buy-methods
to get available purchase methods.iban_invoice
payment method to buy crypto with user’s payment card.GET /b2b/oor/buy-rates
to get rates.trx_token
.POST /b2b/oor/buy/iban-invoice
to start the transaction.invoice_id
.buy_iban_invoice
transaction after receiving the funds of the correct amount with invoice_id
stated in the payment purpose.Get the transaction status using GET /b2b/transactions?merchant_transaction_id={merchant_transaction_id}
.
If you’re not PCI-DSS certified, you will have to use Mercuryo interface to acquire the payment card data. Mercuryo interface is customizable.
Selling crypto for fiat money and withdrawing funds to a payment card.
The user must be signed in and verified (valid KYC). Mercuryo won’t complete the transaction if the verification is expired. Use GET /b2b/user/kyc-status
to check user’s verification.
Use GET /b2b/user/contacts
to check user's email verification status.
Check user limits before the transaction. Mercuryo won’t complete the transaction when beyond the limit. Use GET /b2b/user/card-limits
to get limit details.
Wait for a deposit after successfully using POST /b2b/oor/sell
. If the price changes upon receiving a deposit more than 5%, Mercuryo won't create a transaction. Mercuryo will return the deposit. Otherwise, Mercuryo will cover the slippage and the trade will have the rate which was acquired.
Acquire rates again if the elapsed time is more than an hour, because trx_token
expires in one hour.
GET /b2b/currencies
to get available currencies.GET /b2b/oor/sell-methods
to get available sell methods.card
payment method to sell crypto and withdraw funds to user’s payment card.GET /b2b/oor/sell-rates
to get rates.trx_token
.GET /b2b/user/cards
to get user’s saved payment cards. All new payment cards are saved automatically.POST /b2b/oor/sell
to get a link to redirect the user.https://payments.mrcr.io/sell?parameters
.GET
parameter of the redirect after successfully binding the payment card. Mercuryo will redirect the user to the success URL after confirming the payment card. Please contact your integration specialist to set the URL.sell_card
transaction after receiving crypto. If the sell_card
transaction fails, Mercuryo will return crypto to the specified address within two hours.address
parameter value from the URL — which is a blockchain wallet — to send the crypto.signature
parameter value from the URL. It must be the same as the generated hash made up of address
and merchant_transaction_id
values in JSON, ex. [”address”:”crypto_address”,“merchant_transaction_id”:”123”]
. This is a security measure to prevent the money theft.Get the transaction status using GET /b2b/transactions?merchant_transaction_id={merchant_transaction_id}
.
Selling crypto for fiat money and withdrawing funds to a payment card.
The user must be signed in and verified (valid KYC). Mercuryo won’t complete the transaction if the verification is expired. Use GET /b2b/user/kyc-status
to check user’s verification.
Use GET /b2b/user/contacts
to check user's email verification status.
Check user limits before the transaction. Mercuryo won’t complete the transaction when beyond the limit. Use GET /b2b/user/card-limits
to get limit details.
GET /b2b/currencies
to get available currencies.GET /b2b/oor/sell-methods
to get available sell methods.card
payment method to sell crypto and withdraw funds to user’s payment card.GET /b2b/oor/sell-rates
to get rates.trx_token
.GET /b2b/user/cards
to get user’s saved payment cards. All new payment cards are saved automatically.POST /b2b/oor/sell/card
to get the address for depositing crypto.POST /b2b/oor/sell/card
returns a 3-D secure redirect object. This redirect contains uri_template
. Redirect the user to the URL from uri_template
and pass the parameters of the 3-D secure redirect.sell_card
transaction after receiving crypto.sell_card
transaction fails, Mercuryo will return crypto to the specified address within two hours.Get the transaction status using GET /b2b/transactions?merchant_transaction_id={merchant_transaction_id}
.
Selling crypto and withdraw fiat money to user’s IBAN.
The user must be signed in and verified (valid KYC). Mercuryo won’t complete the transaction if the verification is expired. Use GET /b2b/user/kyc-status
to check user’s verification.
Use GET /b2b/user/contacts
to check user's email verification status.
Check user limits before the transaction. Mercuryo won’t complete the transaction when beyond the limit. Use GET /b2b/user/iban-limits/sell
to get limit details.
Wait for a deposit after successfully using POST /b2b/oor/sell
. If the price changes upon receiving a deposit more than 5%, Mercuryo won't create a transaction. Mercuryo will return the deposit. Otherwise, Mercuryo will cover the slippage and the trade will have the rate which was acquired.
Acquire rates again if the elapsed time is more than an hour, because trx_token
expires in one hour.
GET /b2b/currencies
to get available currencies.GET /b2b/oor/sell-methods
to get available sell methods.iban
method to sell crypto and withdraw funds to user’s IBAN.GET /b2b/oor/sell-rates
to get rates. The rates will be frozen and associated with the sell token.POST /b2b/oor/sell/iban
to get the address for depositing crypto.sell_iban
transaction after receiving crypto.sell_iban
transaction is failed_send
, use POST /b2b/oor/sell/iban/resend
to resend the failed transaction.sell_iban
transaction fails before transferring fiat money, Mercuryo will return crypto to the specified address within two hours.Get the transaction status using GET /b2b/transactions?merchant_transaction_id={merchant_transaction_id}
.
Transaction | Statuses | Scenarios |
---|---|---|
buy_card | Payment Card Crypto Purchase | |
buy_iban_invoice | Bank Transfer Crypto Purchase | |
sell_card | Payment Card Crypto Sell, Crypto Sell for PCI-DSS Certified | |
sell_iban | pending, succeeded, failed, failed_send. | IBAN Crypto Sell |
Сontact your integration manager to set the callback URL.
{
"url": "https:\/\/webhook.site\/#!\/6a4e734e-6c46-4de0-b67e-0166681aa250",
"tries": 15,
"payload": {
"data": {
"type": "buy",
"amount": "0.00239598",
"status": "paid",
"address": null,
"currency": "BTC",
"user_uuid": "447efa32-0afc-4326-b474-21e5a8624ce1",
"created_at": "2022-12-12 09:31:44",
"updated_at": "2022-12-12 09:32:08",
"fiat_amount": "40.00",
"fiat_currency": "EUR",
"merchant_transaction_id": "09516f6c766427412"
},
"eventId": "316e4fba-99bb-4322-8703-35542f477390"
},
"sign_key": "vjuKGL4fxMF6csD-3cr724TWPUPNTa8N",
"widget_id": "406a71aa-cc5f-471b-971b-6047dac6173f"
}
Mercuryo is operational and allows end-users from all countries, except for the following list. The below details are used to identify whether end-user’s country is from non-operational list:
Note that the Off-Ramp operations are available in selected countries.
completed
and another callback that is pending
?We send callbacks asynchronously. The callback delivery according to the status change is not guaranteed.
Yes, there is “retry”. You cannot adjust it. If the callback URL request doesn't return 200, we will be sending more requests asynchronously, but fewer with each day.
sign_key
formed? How do I verify it?We send the X-Signature
header with a callback. This header contains the sha256
hash generated from JSON of the entire POST
request. sign_key
is used as a key. Please contact your integration manager to obtain sign_key
. You can verify a callback by encoding the received callback with the sha256
algorithm and a key from the widget, and comparing the hash with the one from the header.
created_at
and updated_at
?The time zone is UTC.
POST
to send callbacks?Yes, we use POST
to send callbacks.
You receive callbacks upon creating a transaction and a status change.
You server must respond with the 200
http code.
It is assumed that a sell transaction must be completed for 6 hours. If the crypto is not received within this time, the transaction will be marked as failed due to a timeout. If the crypto is received after the 6-hour period, Mercuryo will return the crypto to the user's address.
Get supported currencies filtered for partner
OK
Error codes:
* 403003: Too many requests;
500000: Various reasons, check the message field
{- "data": {
- "config": {
- "base": {
- "BUSD": "BNB",
- "ETH": "ETH",
- "USDT": "ETH"
}, - "crypto_currencies": [
- {
- "currency": "BNB",
- "network": "BINANCESMARTCHAIN",
- "network_label": "BINANCESMARTCHAIN",
- "show_network_icon": false
}, - {
- "currency": "BUSD",
- "network": "BINANCESMARTCHAIN",
- "network_label": "BINANCESMARTCHAIN",
- "network_ud": "BEP20",
- "show_network_icon": false
}, - {
- "currency": "USDT",
- "network": "ETHEREUM",
- "network_label": "ETHEREUM",
- "network_ud": "ERC20",
- "show_network_icon": false
}, - {
- "currency": "BTC",
- "network": "BITCOIN",
- "network_label": "BITCOIN",
- "show_network_icon": false
}
], - "default_networks": {
- "BNB": "BINANCESMARTCHAIN",
- "BTC": "BITCOIN",
- "BUSD": "BINANCESMARTCHAIN",
- "USDT": "ETHEREUM"
}, - "display_options": {
- "BNB": {
- "display_digits": 6,
- "fullname": "Binance Coin",
- "total_digits": 18
}, - "BTC": {
- "display_digits": 5,
- "fullname": "Bitcoin",
- "total_digits": 8
}, - "BUSD": {
- "display_digits": 6,
- "fullname": "Binance USD",
- "total_digits": 18
}, - "EUR": {
- "display_digits": 2,
- "fullname": "Euro",
- "total_digits": 2
}, - "USD": {
- "display_digits": 2,
- "fullname": "United States Dollar",
- "total_digits": 2
}, - "USDT": {
- "display_digits": 6,
- "fullname": "Tether",
- "total_digits": 18
}
}, - "has_withdrawal_fee": {
- "BNB": true,
- "BTC": true,
- "BUSD": false,
- "USDT": true
}, - "icons": {
- "EUR": {
- "relative": {
- "png": "v1.6/img/icons/currencies/eur.png",
- "svg": "v1.6/img/icons/currencies/eur.svg"
},
}, - "USD": {
- "relative": {
- "png": "v1.6/img/icons/currencies/usd.png",
- "svg": "v1.6/img/icons/currencies/usd.svg"
},
}
}, - "networks": {
- "BINANCESMARTCHAIN": {
- "icons": {
- "relative": {
- "png": "v1.6/img/icons/networks/binancesmartchain.png",
- "svg": "v1.6/img/icons/networks/binancesmartchain.svg"
},
}, - "name": "BINANCESMARTCHAIN"
}, - "BITCOIN": {
- "icons": {
- "relative": {
- "png": "v1.6/img/icons/networks/default.png",
- "svg": "v1.6/img/icons/networks/default.svg"
},
}, - "name": "BITCOIN"
}, - "ETHEREUM": {
- "icons": {
- "relative": {
- "png": "v1.6/img/icons/networks/ethereum.png",
- "svg": "v1.6/img/icons/networks/ethereum.svg"
},
}, - "name": "ETHEREUM"
}
}
}, - "crypto": [
- "BNB",
- "BUSD",
- "USDT",
- "BTC"
], - "fiat": [
- "EUR",
- "USD"
]
}, - "status": "200"
}
Get buy and sell rates for multiple cryptocurrencies at once
OK
Error codes:
* 400001: Validation error, check the data field;
401000: Authorization failed
Error codes:
* 403020: IP is blacklisted;
* 403026: Resource is unavailable. Please contact support;
500001: Various reasons, check the message field
{- "data": {
- "buy": {
- "BTC": {
- "EUR": "21911.6609477232",
- "GBP": "19523.0518434642"
}, - "ETH": {
- "EUR": "1536.91999999991420300000",
- "GBP": "1369.36999999998135600000"
}
}, - "sell": [ ]
}, - "status": "200"
}
B2B transactions list
OK
401000: Authorization failed
Error codes:
* 403020: IP is blacklisted;
* 403026: Resource is unavailable. Please contact support;
405000: Method Not Allowed
500001: Various reasons, check the message field
{- "data": [
- {
- "address": "",
- "created_at": "2023-09-10 16:14:26",
- "crypto_amount": "0.00234946",
- "crypto_currency": "BTC",
- "fee": "1.90",
- "fiat_amount": "46.20",
- "fiat_currency": "EUR",
- "merchant_transaction_id": "mti20221207114525769758",
- "status": "succeeded",
- "total_amount": "48.10",
- "type": "caas_buy",
- "updated_at": "2023-09-10 16:14:26",
- "user_uuid": "705003c9-fc18-4b79-9e2e-e4fa074f0add"
}, - {
- "address": "",
- "beneficiary_country": "",
- "beneficiary_iban": "GB93FOUN00992200099100",
- "beneficiary_name": "John Doe",
- "beneficiary_swift": "FOUNGB21XXX",
- "created_at": "2023-09-09 15:43:38",
- "crypto_amount": "0",
- "crypto_currency": "",
- "fee": "0",
- "fiat_amount": "65",
- "fiat_currency": "EUR",
- "merchant_transaction_id": "099cec2addfe55096",
- "purpose": "Refund Tx 099cec04813259678",
- "status": "succeeded",
- "total_amount": "65",
- "type": "fiat_withdraw",
- "updated_at": "2023-09-09 15:43:38",
- "user_uuid": "705003c9-fc18-4b79-9e2e-e4fa074f0add"
}, - {
- "address": "",
- "created_at": "2023-09-08 15:43:38",
- "crypto_amount": "0",
- "crypto_currency": "",
- "fee": "0",
- "fiat_amount": "65.00",
- "fiat_currency": "EUR",
- "merchant_transaction_id": "099cec04813259678",
- "status": "succeeded",
- "total_amount": "65",
- "type": "fiat_deposit",
- "updated_at": "2023-09-08 15:43:38",
- "user_uuid": "705003c9-fc18-4b79-9e2e-e4fa074f0add"
}, - {
- "address": "",
- "created_at": "2023-09-07 15:40:33",
- "crypto_amount": "0",
- "crypto_currency": "",
- "fee": "0",
- "fiat_amount": "5.00",
- "fiat_currency": "EUR",
- "merchant_transaction_id": "099ceb71d12ad9906",
- "related_transaction": "099ceb70a59d23223",
- "status": "succeeded",
- "total_amount": "5.00",
- "type": "iban_charge",
- "updated_at": "2023-09-07 15:40:33",
- "user_uuid": "705003c9-fc18-4b79-9e2e-e4fa074f0add"
}, - {
- "address": "mnwiTEgvn2FXg2jL6NmPmxjjAwPdDpAQGf",
- "blockchain_hash": "9af3534daf791022f535a395df2716be3b08ace94c8867e49074439705ce4e8c",
- "created_at": "2023-09-06 15:40:33",
- "crypto_amount": "0.00115361",
- "crypto_currency": "BTC",
- "fee": "0.24",
- "fiat_amount": "24.76",
- "fiat_currency": "EUR",
- "is_offchain": false,
- "merchant_transaction_id": "099ceb0cd84d60539",
- "network": "BITCOIN",
- "status": "succeeded",
- "total_amount": "25",
- "type": "buy_iban",
- "updated_at": "2023-09-06 15:40:33",
- "user_uuid": "705003c9-fc18-4b79-9e2e-e4fa074f0add"
}, - {
- "address": "tb1qaerat2eyr84retzk0907xasq252u6qnerr4vhx",
- "created_at": "2023-09-05 15:40:33",
- "crypto_amount": "0.00020000",
- "crypto_currency": "BTC",
- "fee": "0.00000266",
- "fiat_amount": "0",
- "fiat_currency": "EUR",
- "is_offchain": false,
- "merchant_transaction_id": "caas_withdraw_2",
- "network": "BITCOIN",
- "network_fee": "00000166",
- "partner_fee": "0.00000100",
- "status": "succeeded",
- "total_amount": "4.24",
- "type": "withdraw",
- "updated_at": "2023-09-05 15:40:33",
- "user_uuid": "17364f38-2b6f-45f0-b8f8-2a4c92f7f37e"
}, - {
- "address": 6.406079589379689e+47,
- "created_at": "2023-09-04 15:40:33",
- "crypto_amount": "53.676867",
- "crypto_currency": "USDT",
- "fee": "0",
- "fiat_amount": "0",
- "fiat_currency": "EUR",
- "is_offchain": true,
- "merchant_transaction_id": "099e1cc6543993063",
- "network": "ETHEREUM",
- "sender_addresses": [
- 6.406079589379689e+47
], - "sender_uuid": "9e50c830-09eb-4faf-b321-f84a99c543ba",
- "status": "succeeded",
- "total_amount": "50.02",
- "type": "deposit",
- "updated_at": "2023-09-04 15:40:33",
- "user_uuid": "17364f38-2b6f-45f0-b8f8-2a4c92f7f37e"
}, - {
- "address": "2MvHamK2gsMtXsrxof5ZXBEqk7a1V5DjRKM",
- "blockchain_hash": "457e1ee9029591057e5256fc3df431199e407bb57032a62ccfbc2c843f392466",
- "created_at": "2023-09-03 15:40:33",
- "crypto_amount": "0.005",
- "crypto_currency": "BTC",
- "fee": "4.46",
- "fiat_amount": "108.26",
- "fiat_currency": "EUR",
- "is_offchain": false,
- "merchant_transaction_id": "08aba2e8d689a5644",
- "network": "BITCOIN",
- "purpose": "TrxID: 08aba8e87cc088958",
- "recipients": [
- {
- "beneficiary_country": "DE",
- "beneficiary_iban": "GB35FOUN00992200066000",
- "beneficiary_name": "John Doe",
- "beneficiary_swift": "FOUNGB21XXX",
- "created_at": "2022-08-08 15:40:24",
- "sender_iban": "GB95FOUN00992200023501",
- "status": "succeeded",
- "updated_at": "2022-08-08 15:40:27"
}
], - "status": "pending",
- "total_amount": "112.72",
- "type": "sell_iban",
- "updated_at": "2023-09-03 15:40:33",
- "user_uuid": "20e464bd-886d-4fe4-bac4-4e2a8f6be8a9"
}, - {
- "address": "",
- "created_at": "2023-09-02 15:40:33",
- "crypto_amount": "0.00236435",
- "crypto_currency": "BTC",
- "failed_reason": {
- "message": "Cancelled by customer",
- "public_message": "Order fail"
}, - "fee": "13.00",
- "fiat_amount": "187.00",
- "fiat_currency": "BRL",
- "merchant_transaction_id": "0a1caae33d0e50973",
- "network": "BITCOIN",
- "status": "failed",
- "total_amount": "200.00",
- "type": "buy_card",
- "updated_at": "2023-09-02 15:40:33",
- "user_uuid": "9e50c830-09eb-4faf-b321-f84a99c543ba"
}
], - "next": "string",
- "prev": "string",
- "status": "200",
- "total": "100"
}
Validate provided IBAN
OK
Error codes:
* 400001: Validation error;
401000: Authorization failed
405000: Method Not Allowed
500000: Various reasons, check the message field
{- "data": { },
- "status": "200"
}
B2B validate wallet
OK
Error codes:
* 400000: Bad request;
* 400001: Validation error, check the data field;
405000: Method Not Allowed
{- "data": {
- "status": "success"
}, - "status": "200"
}
Get KYC access token for iframe
OK
Error codes:
* 400001: Validation error, check the data field;
* 400062: Cannot get KYC access token. Check the message field;
401000: Authorization failed
Error codes:
* 403020: IP is blacklisted;
* 403026: Resource is unavailable. Please contact support;
405000: Method Not Allowed
500001: Various reasons, check the message field
{- "data": {
- "applicant_id": "6315bcb2647ada0001823025",
- "kyc_access_token": "_act-ca4dae41-0ecd-468d-86e2-02d5ca697b8d"
}, - "status": "200"
}
Get user’s previously uploaded KYC documents
OK
Bad request
401000: Authorization failed
Error codes:
* 403020: IP is blacklisted;
* 403026: Resource is unavailable. Please contact support;
405000: Method Not Allowed
500001: Various reasons, check the message field
{- "data": {
- "features": [
- {
- "feature": "crypto",
- "status": "incomplete"
}, - {
- "feature": "iban",
- "status": "incomplete"
}
], - "review_result": {
- "documents": [
- {
- "doc_country_code": "GBR",
- "doc_id": "675996053",
- "doc_state": "red",
- "doc_type": "PASSPORT",
- "partner_message": "Fraudulent patterns detected:\\nleaked image or sample ID from the internet\\n\\nVerification rejected due to excessive file uploads.",
- "reject_labels": [
- "FORGERY",
- "SPAM"
], - "reject_type": "FINAL",
- "user_message": "Test user message in u3-3."
}, - {
- "doc_country_code": "GBR",
- "doc_id": "305359999",
- "doc_state": "red",
- "doc_type": "PASSPORT",
- "partner_message": "- Expired Identity document. A new document has been requested.\\n - The document is either damaged or unreadable. A new document has been requested,",
- "reject_labels": [
- "EXPIRATION_DATE",
- "DOCUMENT_DAMAGED"
], - "reject_type": "RETRY",
- "user_message": "- Your identity document has expired and can't be used for verification. Try a different identity document.\\n - Your document is either damaged or cannot be read. Try another document."
}, - {
- "doc_country_code": "GBR",
- "doc_id": "1983361476",
- "doc_state": "not_started",
- "doc_type": "SELFIE"
}, - {
- "doc_country_code": "GBR",
- "doc_id": "1428927584",
- "doc_state": "green",
- "doc_type": "UTILITY_BILL"
}
]
}
}, - "status": "200"
}
Save user billing address
JSON Body
OK
Error codes:
* 400001: Validation error, check the data field;
401000: Authorization failed
Error codes:
* 403007: There's another active transaction;
* 403020: IP is blacklisted;
* 403099: Collecting billing addresses is forbidden;
405000: Method Not Allowed
500001: Various reasons, check the message field
{- "city": "London",
- "country_code": "GB",
- "state_code": "NY",
- "street_line_1": "Queens Road",
- "street_line_2": "63",
- "zip_code": "EC05"
}
{- "data": { },
- "status": "201"
}
Get card limits
OK
Error codes:
* 400057: Validation error for to
field;
* 400058: Validation error for from
field;
* 400059: Validation error for type
field;
* 400074: Fail to get card limits. Check the message field;
401000: Authorization failed
Error codes:
* 403020: IP is blacklisted;
* 403026: Resource is unavailable. Please contact support;
405000: Method Not Allowed
500001: Various reasons, check the message field
{- "data": {
- "currenciesLimits": {
- "ETH": {
- "day": {
- "remain": "0.277700638711500000",
- "total": "0.277700638711500000"
}, - "max": "2.007223972028780000",
- "min": "0.007223972028780000",
- "month": {
- "remain": "2.404734880366000000",
- "total": "2.404734880366000000"
}
}, - "EUR": {
- "day": {
- "remain": "1000.00",
- "total": "1000.00"
}, - "max": "2000.00",
- "min": "90.00",
- "month": {
- "remain": "10000.00",
- "total": "10000.00"
}
}
}
}, - "status": "200"
}
Get total and remaining card limits for unverified user
OK
Error codes:
* 400001: Validation error, check the data field;
401000: Authorization failed
Error codes:
* 403020: IP is blacklisted;
* 403026: Resource is unavailable. Please contact support;
* 403030: Service is unavailable for you;
405000: Method Not Allowed
500001: Various reasons, check the message field
{- "data": {
- "currenciesLimits": {
- "EUR": {
- "remain": "393.23",
- "total": "699.00"
}
}
}, - "status": "200"
}
Get saved cards
OK
401000: Authorization failed
Error codes:
* 403020: IP is blacklisted;
* 403026: Resource is unavailable. Please contact support;
405000: Method Not Allowed
500001: Various reasons, check the message field
{- "data": [
- {
- "card_id": "00357ec76de855485",
- "card_number": "************1234"
}, - {
- "card_id": "00357ec76de855486",
- "card_number": "************1235"
}
], - "status": "200"
}
Get user contacts
OK
Error codes:
* 400064: User not found by token;
401000: Authorization failed
Error codes:
* 403020: IP is blacklisted;
* 403026: Resource is unavailable. Please contact support;
405000: Method Not Allowed
500001: Various reasons, check the message field
{- "data": {
- "email": "user@email.com",
- "email_status": "confirmed",
- "phone": "+35799339993",
- "phone_status": "confirmed"
}, - "status": "200"
}
B2B user data
OK
Error codes:
* 400064: User not found by token;
401000: Authorization failed
Error codes:
* 403020: IP is blacklisted;
* 403026: Resource is unavailable. Please contact support;
405000: Method Not Allowed
500001: Various reasons, check the message field
{- "data": {
- "country_code": "cy",
- "email": "user@email.com",
- "email_status": "confirmed",
- "first_name": "John",
- "kyc1_status": "complete",
- "kyc2_status": "complete",
- "language_code": "en-GB",
- "last_name": "Smith",
- "phone": "+35799339993",
- "phone_status": "confirmed",
- "user_status": "active"
}, - "status": "200"
}
Get IBAN limits for buy operations
OK
Error codes:
* 400001: Validation error, check the data field;
* 400003: Currency is not supported;
* 400060: Fail to get IBAN limits. Check the message field;
* 400066: Unknown error;
401000: Authorization failed
Error codes:
* 403020: IP is blacklisted;
* 403026: Resource is unavailable. Please contact support;
405000: Method Not Allowed
500001: Various reasons, check the message field
{- "data": {
- "currenciesLimits": {
- "ETH": {
- "day": {
- "remain": "0.277700638711500000",
- "total": "0.277700638711500000"
}, - "max": "2.007223972028780000",
- "min": "0.007223972028780000",
- "month": {
- "remain": "2.404734880366000000",
- "total": "2.404734880366000000"
}
}, - "EUR": {
- "day": {
- "remain": "1000.00",
- "total": "1000.00"
}, - "max": "2000.00",
- "min": "90.00",
- "month": {
- "remain": "10000.00",
- "total": "10000.00"
}
}
}
}, - "status": "200"
}
Get IBAN limits for sell operations
OK
Error codes:
* 400001: Validation error, check the data field;
* 400003: Currency is not supported;
* 400060: Fail to get IBAN limits. Check the message field;
* 400066: Unknown error;
401000: Authorization failed
Error codes:
* 403020: IP is blacklisted;
* 403026: Resource is unavailable. Please contact support;
405000: Method Not Allowed
500001: Various reasons, check the message field
{- "data": {
- "currenciesLimits": {
- "ETH": {
- "day": {
- "remain": "0.277700638711500000",
- "total": "0.277700638711500000"
}, - "max": "2.007223972028780000",
- "min": "0.007223972028780000",
- "month": {
- "remain": "2.404734880366000000",
- "total": "2.404734880366000000"
}
}, - "EUR": {
- "day": {
- "remain": "1000.00",
- "total": "1000.00"
}, - "max": "2000.00",
- "min": "90.00",
- "month": {
- "remain": "10000.00",
- "total": "10000.00"
}
}
}
}, - "status": "200"
}
Get KYC access token for iframe
OK
Error codes:
* 400001: Validation error, check the data field;
* 400062: Cannot get KYC access token. Check the message field;
401000: Authorization failed
Error codes:
* 403020: IP is blacklisted;
* 403026: Resource is unavailable. Please contact support;
405000: Method Not Allowed
500001: Various reasons, check the message field
{- "data": {
- "applicant_id": "6315bcb2647ada0001823025",
- "kyc_access_token": "_act-ca4dae41-0ecd-468d-86e2-02d5ca697b8d"
}, - "status": "200"
}
Get user’s previously uploaded KYC documents
OK
Bad request
401000: Authorization failed
Error codes:
* 403020: IP is blacklisted;
* 403026: Resource is unavailable. Please contact support;
405000: Method Not Allowed
500001: Various reasons, check the message field
{- "data": {
- "kyc1_status": "complete",
- "kyc2_status": "incomplete",
- "review_result": {
- "documents": [
- {
- "doc_country_code": "GBR",
- "doc_id": "675996053",
- "doc_state": "red",
- "doc_type": "PASSPORT",
- "partner_message": "Fraudulent patterns detected:\\nleaked image or sample ID from the internet\\n\\nVerification rejected due to excessive file uploads.",
- "reject_labels": [
- "FORGERY",
- "SPAM"
], - "reject_type": "FINAL",
- "user_message": "Test user message in u3-3."
}, - {
- "doc_country_code": "GBR",
- "doc_id": "305359999",
- "doc_state": "red",
- "doc_type": "PASSPORT",
- "partner_message": "- Expired Identity document. A new document has been requested.\\n - The document is either damaged or unreadable. A new document has been requested,",
- "reject_labels": [
- "EXPIRATION_DATE",
- "DOCUMENT_DAMAGED"
], - "reject_type": "RETRY",
- "user_message": "- Your identity document has expired and can't be used for verification. Try a different identity document.\\n - Your document is either damaged or cannot be read. Try another document."
}, - {
- "doc_country_code": "GBR",
- "doc_id": "1983361476",
- "doc_state": "not_started",
- "doc_type": "SELFIE"
}, - {
- "doc_country_code": "GBR",
- "doc_id": "1428927584",
- "doc_state": "green",
- "doc_type": "UTILITY_BILL"
}
]
}
}, - "status": "200"
}
Send user’s KYC documents
JSON Body
OK
Error codes:
* 400000: Bad request;
* 400001: Validation error, check the data field;
* 400005: Validation error for country_code field;
* 400039: Validation error for document field;
* 400040: Validation error for birthday field;
* 400041: Validation error for first_name field;
* 400042: Validation error for last_name field;
* 400066: Unknown error;
* 400067: User profile save error;
401000: Authorization failed
Error codes:
* 403007: There's another active transaction;
* 403020: IP is blacklisted;
* 403022: KYC already complete;
* 403023: Various reasons, check the message field;
* 403030: This endpoint is disabled for current partner;
405000: Method Not Allowed
500001: Various reasons, check the message field
{- "address_1": "Plaza Dr",
- "address_2": "1609",
- "birthday": "1995-05-25",
- "citizenship_country_code": "us",
- "city": "Woodbridge",
- "correspondence_address_line": "Gebbertstraße, 123",
- "correspondence_city": "Erlangen",
- "correspondence_country_code": "de",
- "correspondence_postal_code": "91058",
- "correspondence_state": "Bayern",
- "country_code": "pl",
- "document": [
- {
- "files": {
- "side-1.jpg": "base64filecontent",
- "side-2.jpg": "base64filecontent"
}, - "type": "id_card"
}
], - "first_name": "Adam",
- "first_name_en": "Adam",
- "id_number": "123456789",
- "kyc_level": "1",
- "last_name": "Smith",
- "last_name_en": "Smith",
- "residence_address_line": "string",
- "residence_city": "string",
- "residence_country_code": "us",
- "residence_postal_code": "91058",
- "residence_state": "string",
- "state": "NJ",
- "zip": "07095"
}
{- "data": {
- "applicant_id": "string",
- "kyc_access_token": "string"
}, - "status": "202"
}
Get user KYC statuses
OK
Error codes:
* 400064: User not found by token;
401000: Authorization failed
Error codes:
* 403020: IP is blacklisted;
* 403026: Resource is unavailable. Please contact support;
405000: Method Not Allowed
500001: Various reasons, check the message field
{- "data": {
- "features": [
- {
- "feature": "crypto",
- "status": "incomplete"
}, - {
- "feature": "iban",
- "status": "incomplete"
}
]
}, - "status": "200"
}
Refresh b2b-bearer-token
OK
Error codes:
* 400014: Empty widget error. Contact your account manager;
* 400064: User not found by token;
401000: Authorization failed
Error codes:
* 403020: IP is blacklisted;
* 403026: Resource is unavailable. Please contact support;
405000: Method Not Allowed
500001: Various reasons, check the message field
{- "data": {
- "timeout": 86400,
- "token": "06c6587c7c4257195crsGTnPPK_9vKoNAU23-u-ja9XJdjjYBc6Vc9c_L0T9R-yq",
- "user_uuid4": "044ef633-d20b-4e4f-a011-7f3378334cd1"
}, - "status": "200"
}
Set user phone
OK
Error codes:
* 400073: Validation error for the phone
field;
401000: Authorization failed
Error codes:
* 403003: Too many requests for phone validation;
* 403007: There's another active transaction;
* 403020: IP is blacklisted;
* 403026: Resource is unavailable. Please contact support;
405000: Method Not Allowed
500001: Various reasons, check the message field
{- "phone": "string"
}
{- "data": [
- {
- "code_length": "4",
- "key": "0f07661ce66774ec87537d47e1db961cf77d450b1c8d230419d8f72fdf98666abG9naW4tdmVyaWZ5LXBob25lBfhShypGUnsFRd5dqhDFPpJoOpbPdsj5",
- "timeout": "20"
}
], - "status": "200"
}
Sign-in user
OK
Error codes:
* 400004: Validation error for user_uuid4 field;
* 400010: Validation error for phone field;
* 400014: Empty widget error. Contact your account manager;
* 400037: Validation error for email field;
* 400063: Requires one of the parameters: phone
, user_uuid4
, email
;
401000: Authorization failed
Error codes:
* 403007: There's another active transaction;
* 403020: IP is blacklisted;
* 403031: User is locked by some reason or not found;
* 403031: User email is not confirmed;
405000: Method Not Allowed
500001: Various reasons, check the message field
{- "email": "someemail@gmail.com",
- "phone": "+35797522499",
- "user_uuid4": "69f63545-9a58-4075-894d-47490eeed55b"
}
{- "data": {
- "bearer_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJkZXYubG9jYWwiLCJpYXQiOjE2NDkxMDAxNjIsImp0aSI6ImZCc2NUYnhlYXBteG9hMzc1WU9pajBtQXNVb045VFRoRWF3ZGFQYWxcL1g0PSIsIm5iZiI6MTY0OTEwMDE2NywiZGF0YSI6eyJ1c2VyX2lkIjoyMywiYWRkaXRpb25hbCI6eyJ3aWRnZXRfaWQiOiJkNWE0OGQ2My1mNWRlLTQ5OGEtYjM4OC02NDE2NjJkYjg2NmMiLCJleGNoYW5nZV9wYXJ0bmVyX2lkIjoxLCJzZGtfcGFydG5lcl9pZCI6MSwicHJvZHVjdCI6ImNvbW1fYXBpIn19fQ.AN8TxPN6tmxfcpTrp_FSWiCXvjqWwRg4oUMgWPFIg08",
- "user_uuid4": "3292c753-6809-492a-9acd-1ccdbf2fa91e"
}, - "status": "200"
}
Sign-up user
OK
Error codes:
* 400006: You need to accept the user agreement to signup;
* 400014: Empty widget error. Contact your account manager;
* 400037: Validation error for email field;
401000: Authorization failed
Error codes:
* 403007: There's another active transaction;
* 403020: IP is blacklisted;
* 403023: Sign-up failed. Check the message field;
405000: Method Not Allowed
500001: Various reasons, check the message field
{- "accept": "true",
- "email": "someemail@gmail.com"
}
{- "data": {
- "bearer_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJkZXYubG9jYWwiLCJpYXQiOjE2NDkxMDAxNjIsImp0aSI6ImZCc2NUYnhlYXBteG9hMzc1WU9pajBtQXNVb045VFRoRWF3ZGFQYWxcL1g0PSIsIm5iZiI6MTY0OTEwMDE2NywiZGF0YSI6eyJ1c2VyX2lkIjoyMywiYWRkaXRpb25hbCI6eyJ3aWRnZXRfaWQiOiJkNWE0OGQ2My1mNWRlLTQ5OGEtYjM4OC02NDE2NjJkYjg2NmMiLCJleGNoYW5nZV9wYXJ0bmVyX2lkIjoxLCJzZGtfcGFydG5lcl9pZCI6MSwicHJvZHVjdCI6ImNvbW1fYXBpIn19fQ.AN8TxPN6tmxfcpTrp_FSWiCXvjqWwRg4oUMgWPFIg08",
- "user_uuid4": "3292c753-6809-492a-9acd-1ccdbf2fa91e"
}, - "status": "200"
}
Create on-ramp transaction using 'card' method
trx_token required | string Buy token returned by |
address required | string The address to which the crypto should be transferred |
merchant_transaction_id | string Custom ID for checking transaction status. If empty, it will be generated |
card_id | string ID of the existing card (Get from |
theme | string Widget display theme |
OK
Error codes:
* 400000: Unable to finish antifraud check of transaction. Try again later
* 400001: Validation error, check the data field;
* 400007: Antifraud check error, amount off limits;
* 400048: Unsupported payment alias;
401000: Authorization failed
Error codes:
* 403007: There's another active transaction;
* 403020: IP is blacklisted;
* 403026: Resource is unavailable. Please contact support;
405000: Method Not Allowed
500001: Various reasons, check the message field
{- "data": {
- "merchant_transaction_id": "00357ec76de855485",
}, - "status": "200"
}
Get methods for on-ramp transaction
OK
Error codes:
* 400064: User not found by token;
401000: Authorization failed
Error codes:
* 403020: IP is blacklisted;
* 403026: Resource is unavailable. Please contact support;
405000: Method Not Allowed
500001: Various reasons, check the message field
{- "data": [
- {
- "currencies": [
- "EUR",
- "USD"
], - "payment_alias": "card",
- "title": "Card"
}, - {
- "currencies": [
- "EUR"
], - "payment_alias": "iban_exchange",
- "title": "IBAN exchange"
}
], - "status": "200"
}
Get rates for on-ramp transaction
OK
Error codes:
* 400001: Validation error, check the data or message fields;
* 400003: Currency is not supported;
* 400007: Antifraud error. Amount off limits;
* 400011: Validation error for from
field;
* 400012: Validation error for to
field;
* 400014: Empty widget error. Contact your account manager;
* 400015: Validation error for payment_alias
field;
* 400048: Unsupported payment type;
* 400070: Validation error for amount_from
field;
* 400071: Validation error for amount_to
field;
401000: Authorization failed
Error codes:
* 403020: IP is blacklisted;
* 403026: Resource is unavailable. Please contact support
* 403034: Country is not supported for this operation;
405000: Method Not Allowed
500001: Various reasons, check the message field
{- "data": {
- "amount": "0.02000000",
- "currency": "BTC",
- "fee": {
- "BTC": "0.00075999",
- "EUR": "17.09"
}, - "fiat_amount": "432.50",
- "fiat_currency": "EUR",
- "rate": "22478.7000000000",
- "subtotal": {
- "BTC": "0.01924001",
- "EUR": "432.50"
}, - "total": {
- "BTC": "0.02000000",
- "EUR": "449.59"
}, - "trx_token": "4ae0bdd7f4ea2f9ac1f54a6ca21685f324d11479f9040305dec90899f4dbe154eyJ0IjoxNj\n * U4OTk4NDI0LCJjIjoiQlRDIiwiYSI6IjAuMDIwMDAwMDAiLCJmYyI6IkVVUiIsImZhIjoiNDMyLjUwIiwiZiI6IjE3LjA5IiwiciI6Ij\n * IyNDc4LjcwMDAwMDAwMDAiLCJjaWQiOiJlZWI5MTVkNDRjNzU0YjdkYzhiNGI1NDkxMTY5ZGU5NiIsIm9wIjoic2VsbCIsInB0IjpudW\n * xsLCJwYSI6ImNhcmQiLCJ0dCI6dHJ1ZSwidGYiOiIwIiwidyI6ImRjMDNmYjUyLWEwNTgtNDhlMS1hMjJmLWMyYjA3NDRkNmU4MiIsIn\n * NmIjoiMTcuMDkifQ=="
}, - "status": "200"
}
On-ramp transaction with card attributes
Request body
address required | string The address to which the crypto should be transferred |
card_cvv required | string CVV Example: |
card_expiration_month | string Card expiration month Example: Required if card_id not filled |
card_expiration_year | string Card expiration year Example: Required if card_id not filled |
card_holder_name | string Cardholder name Example: Required if card_id not filled |
card_id | string Card ID Example: Required if card data not filled |
card_number | string Card number Example: Required if card_id not filled |
merchant_transaction_id | string Unique custom ID to check transaction status. If empty, it will be generated |
tin | string Customer's Taxpayer Identification Number Required for Brazil users. Example: |
trx_token required | string Transaction token returned by |
OK
Error codes:
* 400000: Antifraud error. Cannot check, try again later;
* 400001: Validation error, check the data field;
* 400007: Antifraud error. Amount off limits;
* 400048: Unsupported payment alias;
* 400098: Billing address is not set;
401000: Authorization failed
Error codes:
* 403007: There's another active transaction;
* 403008: Unable to bind card.
* 403010: Buying failed;
* 403017: Card binding limits reached;
* 403020: IP is blacklisted;
* 403025: You need to provide Customer identity;
* 403026: Service is unavailable. Please contact support;
* 403030: This endpoint is disabled for current partner;
* 403038: Blocked as suspicious;
405000: Method Not Allowed
500001: Various reasons, check the message field
{- "address": 7.60053267365776e+47,
- "card_cvv": "123",
- "card_expiration_month": "11",
- "card_expiration_year": "2026",
- "card_holder_name": "John Doe",
- "card_number": "1234567890123456",
- "merchant_transaction_id": "87654321",
- "tin": "123.456.789-10",
- "trx_token": "<from buy-rates request>"
}
{- "data": {
- "merchant_transaction_id": "7654321",
- "redirect": {
- "form": [
- {
- "key": "MD",
- "template": "NjJjZWM0OGM3NTYwNA=="
}, - {
- "key": "PaReq",
- "template": "PaReq"
},
], - "request_type": "BrowserPostRequest",
}, - "status": "pending"
}, - "status": "200"
}
Create on-ramp transaction using 'iban_invoice' method
trx_token required | string Buy token returned by |
address required | string The address to which the crypto should be transferred |
merchant_transaction_id | string Custom ID for checking transaction status. If empty, it will be generated |
OK
Error codes:
* 400000: Unable to finish antifraud check of transaction. Try again later
* 400001: Validation error, check the data field;
* 400007: Antifraud check error, amount off limits;
* 400048: Unsupported payment alias;
* 400052: Cannot create invoice for buying. Check the message
field
401000: Authorization failed
Error codes:
* 403007: There's another active transaction;
* 403020: IP is blacklisted;
* 403026: Resource is unavailable. Please contact support;
405000: Method Not Allowed
500001: Various reasons, check the message field
{- "data": {
- "instructions": "Payment instructions for user",
- "invoice_id": "00357ec76de855485",
- "merchant_transaction_id": "00357ec76de855485"
}, - "status": "200"
}
Create off-ramp transaction using 'card' method
trx_token required | string Sell token returned by |
address | string Address for returning cryptocurrency in case of an error in the transaction |
merchant_transaction_id | string Custom ID for checking transaction status. If empty, it will be generated. |
card_id | string ID of the existing card (Get from |
theme | string Widget display theme |
OK
Error codes:
* 400000: Unable to finish antifraud check of transaction. Try again later
* 400001: Validation error, check the data field;
* 400007: Antifraud check error, amount off limits;
* 400048: Unsupported payment alias;
401000: Authorization failed
Error codes:
* 403001: Kyc verification needed;
* 403007: There's another active transaction;
* 403020: IP is blacklisted;
* 403026: Resource is unavailable. Please contact support;
405000: Method Not Allowed
500001: Various reasons, check the message field
{- "data": {
- "merchant_transaction_id": "00357ec76de855485",
}, - "status": "200"
}
Get methods for off-ramp transaction
OK
Error codes:
* 400064: User not found by token;
401000: Authorization failed
Error codes:
* 403020: IP is blacklisted;
* 403026: Resource is unavailable. Please contact support;
405000: Method Not Allowed
500001: Various reasons, check the message field
{- "data": [
- {
- "currencies": [
- "EUR",
- "USD"
], - "payment_alias": "card",
- "title": "Card"
}, - {
- "currencies": [
- "EUR"
], - "payment_alias": "iban_exchange",
- "title": "IBAN exchange"
}, - {
- "currencies": [
- "EUR"
], - "payment_alias": "iban",
- "title": "Iban Sell"
}
], - "status": "200"
}
Get rates for off-ramp transaction
OK
Error codes:
* 400000: Inner HTTP exception. Please contact support;
* 400001: Validation error, check the data or message fields;
* 400003: Currency is not supported;
* 400007: Antifraud error. Amount off limits;
* 400011: Validation error for from
field;
* 400012: Validation error for to
field;
* 400014: Empty widget error. Contact your account manager;
* 400015: Validation error for payment_alias
field;
* 400048: Unsupported payment type;
* 400070: Validation error for amount_from
field;
* 400071: Validation error for amount_to
field;
401000: Authorization failed
Error codes:
* 403020: IP is blacklisted;
* 403026: Resource is unavailable. Please contact support
* 403034: Country is not supported for this operation;
500001: Various reasons, check the message field
{- "data": {
- "amount": "0.02000000",
- "currency": "BTC",
- "fee": {
- "BTC": "0.00075999",
- "EUR": "17.09"
}, - "fiat_amount": "432.50",
- "fiat_currency": "EUR",
- "rate": "22478.7000000000",
- "subtotal": {
- "BTC": "0.01924001",
- "EUR": "432.50"
}, - "total": {
- "BTC": "0.02000000",
- "EUR": "449.59"
}, - "trx_token": "4ae0bdd7f4ea2f9ac1f54a6ca21685f324d11479f9040305dec90899f4dbe154eyJ0IjoxNj\n * U4OTk4NDI0LCJjIjoiQlRDIiwiYSI6IjAuMDIwMDAwMDAiLCJmYyI6IkVVUiIsImZhIjoiNDMyLjUwIiwiZiI6IjE3LjA5IiwiciI6Ij\n * IyNDc4LjcwMDAwMDAwMDAiLCJjaWQiOiJlZWI5MTVkNDRjNzU0YjdkYzhiNGI1NDkxMTY5ZGU5NiIsIm9wIjoic2VsbCIsInB0IjpudW\n * xsLCJwYSI6ImNhcmQiLCJ0dCI6dHJ1ZSwidGYiOiIwIiwidyI6ImRjMDNmYjUyLWEwNTgtNDhlMS1hMjJmLWMyYjA3NDRkNmU4MiIsIn\n * NmIjoiMTcuMDkifQ=="
}, - "status": "200"
}
Off-ramp transaction with card attributes
Request body
address | string Address for returning cryptocurrency in case of an error in the transaction |
card_expiration_month | string Card expiration month Example: Required if card_id not filled |
card_expiration_year | string Card expiration year Example: Required if card_id not filled |
card_holder_name | string Cardholder name Example: Required if card_id not filled |
card_id | string Card ID Example: Required if card data not filled |
card_number | string Card number Example: Required if card_id not filled |
merchant_transaction_id | string Unique custom ID to check transaction status. If empty, it will be generated |
trx_token required | string Sell token returned by |
OK
Error codes:
* 400000: Antifraud error. Cannot check, try again later;
* 400001: Validation error, check the data field;
* 400004: Token is already used;
* 400007: Antifraud error. Amount off limits;
* 400048: Unsupported payment alias;
401000: Authorization failed
Error codes:
* 403001: Kyc verification needed;
* 403007: There's another active transaction;
* 403020: IP is blacklisted;
* 403026: Resource is unavailable. Please contact support;
405000: Method Not Allowed
500001: Various reasons, check the message field
{- "address": 7.60053267365776e+47,
- "card_expiration_month": "11",
- "card_expiration_year": "2026",
- "card_holder_name": "John Doe",
- "card_id": "018ab9cc29a8a2543",
- "card_number": "4111111111111111",
- "merchant_transaction_id": "87654321",
- "trx_token": "<from sell-rates request>"
}
{- "data": {
- "address": 7.60053267365776e+47,
- "merchant_transaction_id": "08e578d2674026086",
- "status": "pending"
}, - "status": "200"
}
Create off-ramp transaction using 'iban' method
trx_token required | string Sell token returned by |
beneficiary_iban required | string External user's IBAN |
beneficiary_country_code required | string Beneficiary's country code consisting of 2 letters |
beneficiary_city required | string Beneficiary's city name |
beneficiary_address required | string Beneficiary's address line |
beneficiary_full_name required | string Beneficiary's full name |
beneficiary_swift required | string Beneficiary's swift number |
address | string Address for returning cryptocurrency in case of an error in the transaction |
merchant_transaction_id | string Custom ID for checking transaction status. If empty, it will be generated. |
OK
Error codes:
* 400000: Unable to finish antifraud check of transaction. Try again later
* 400001: Validation error, check the data field;
* 400007: Antifraud check error, amount off limits;
* 400048: Unsupported payment alias;
* 400049: IBAN not found;
401000: Authorization failed
Error codes:
* 403007: There's another active transaction;
* 403020: IP is blacklisted;
* 403026: Resource is unavailable. Please contact support;
405000: Method Not Allowed
500001: Various reasons, check the message field
{- "data": {
- "address": "00357ec76de855485",
- "merchant_transaction_id": "00357ec76de855485"
}, - "status": "200"
}
Resend /b2b/oor/sell/iban
OK
Error codes:
* 400001: Validation error, check the data field;
401000: Authorization failed
Error codes:
* 403007: There's another active transaction;
* 403020: IP is blacklisted;
* 403026: Resource is unavailable. Please contact support;
405000: Method Not Allowed
500001: Various reasons, check the message field
{- "data": {
- "status": "sending"
}
}
Return last 5 unique IBAN details from Sell
OK
Error codes:
* 400064: User not found by token;
401000: Authorization failed
Error codes:
* 403020: IP is blacklisted;
* 403026: Resource is unavailable. Please contact support
405000: Method Not Allowed
500001: Various reasons, check the message field
{- "data": [
- {
- "beneficiary_country_code": "FR",
- "beneficiary_iban": "FR7817569000405199517535N92",
- "beneficiary_name": "Marco Polo",
- "beneficiary_swift": "FOUNGB21XXX",
- "created_at": "2023-01-24 12:00:00",
- "sender_iban": "GB07FOUN00992200027801",
- "updated_at": "2023-01-24 12:00:00"
}, - {
- "beneficiary_country_code": "GB",
- "beneficiary_iban": "GB07FOUN00992200027801",
- "beneficiary_name": "Marco Polo",
- "beneficiary_swift": "FOUNGB21XXX",
- "created_at": "2023-01-24 12:00:00",
- "sender_iban": "FR7817569000405199517535N92",
- "updated_at": "2023-01-24 12:00:00"
}
], - "status": "200"
}