# Introduction

### ​:question:What is Axom <a href="#what-is-finrax" id="what-is-finrax"></a>

Axom Payment Gateway is a solution that enables merchants to accept cryptocurrency payments and initiate withdrawals to customers, providing a seamless experience for both sides. The following API documentation comprises of all currently supported public endpoints. Each separate endpoint is accompanied by a small description together with a few example requests, responses, and code snippets.

### :up: Key Features

* **Multiple Deposit Currencies**: Accept payments via the most used crypto currencies and automatically distribute them into one of the supported settlement currencies.
* **FIAT Deposits and Withdrawals**: Using our services you can easily decide when you need a quick fiat top-up to any of your business or request a fiat withdrawal.
* **Global Reach**: Support for multiple currencies and international payments, helping you reach customers around the world.
* **Extensive Reporting**: Access detailed transaction reports in real-time to track your business's performance.
* **Easy Integration**: Our API is designed with simplicity in mind, allowing you to integrate quickly and with minimal coding.

### :star: Getting Started with our API

To start using the {{COMPANY\_POSSESIVE\_FORM}} API follow these steps:

1. **Get Your API Keys**: After signing up, you will be able to create your API keys, which are necessary for authentication.
2. **Review the Documentation**: Familiarize yourself with the API endpoints, request/response formats, and error codes.
3. **Start Testing**: We will help you test your integration without processing real payments.
4. **Go Live**: Once you’re ready, switch to the live environment and start processing real transactions.

### :blue\_book: Support and Resources

If you need help, we're here for you:

* **Documentation**: In our API references and guide pages you will find additional information to help you navigate our platform.
* **Support Team**: Contact our support team for personalized assistance
* Check out our [**Changelog** ](/changelog)to see the newest features released.

As you explore the documents and guides, don’t hesitate to reach out if questions arise or assistance is needed. Our dedicated support team are here to ensure your integration is smooth and successful.


# Authorization

The Axom API's authorization scheme

When authorizing against the Axom REST API, one must provide a standard HTTP `Authorization` header in the following format:

```aspnet
'Authorization: FRX-API api-key=<your_api_key>,
                        signature=<signature>,
                        timestamp=<unix_timestamp>'
```

[API credentials](/authorization/management) consist of an **API key** and an **API secret,** forming a pair together. The key must be passed with each request in the Authorization header’s API-Key component and the **API secret** is used for the generation of the [Signature](/authorization/signature) component.\
The **Timestamp** component must be an integer value representing the current [UNIX epoch time](https://www.unixtimestamp.com/) in milliseconds.

{% hint style="info" %}
**All requests that require authorization are labelled with this icon 🔒**
{% endhint %}


# API Keys Management

How to create, edit and update API secret/key pairs

API credentials can be managed directly from the [Axom Dashboard](https://dashboard.axom.money) by users with the Manager or Admin or custom roles with the relevant permission. To create API credentials go to **"Settings -> API keys"** and click on the **“New Key”** button. Here you can provide a name (alias) for the key/secret pair and select the permissions that are relevant to your use-case. Your 2FA code will also be required as a step of the key creation process.\
\
Due to security concerns, we also require IPs to be whitelisted. If we receive a request from an IP that was not listed for the API pair, we will reject it returning a 403 (Forbidden) HTTP status code.

![](https://3564521227-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FayvBVHqhLmJiaoA9GyTQ%2Fuploads%2Fgit-blob-4f4dbcf383c5f488c5b7103c628abaf781ecd1bb%2Fapi-key.gif?alt=media)

Upon successful API credentials creation, you will be provided with the values for the **API key** and **API secret**. At this stage, you **must store the API secret securely**, e.g. by writing it down or copying it in a trusted store as this is the only time the API secret will be displayed.\
\
Once created the API key and secret are immutable, however, the IP white-list and permissions can be edited at any time.

{% hint style="danger" %}
**If you lose your API secret or it becomes compromised you must delete the API credentials pair immediately and generate a new one. If you find out that the access to the dashboard has been compromised, please contact us immediately.**
{% endhint %}


# Signature

How to generate the authorization signature

The Signature component of the Authorization header is an **HMAC-SHA256** digest of the elements described below.

| Element      | Description                                                                                                                                                                       |
| ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Request URI  | Everything after the base URL, including query parameters if present.                                                                                                             |
| Timestamp    | Current [UNIX epoch time ](https://www.unixtimestamp.com/)in milliseconds                                                                                                         |
| Request body | A [minified ](https://codebeautify.org/jsonminifier)**JSON**-serialized string of the request body. If a body is not required (e.g. request is of type GET), use an empty string. |


# Code snippets

Example code snippets fo signing and sending requests

{% tabs %}
{% tab title="PHP" %}

```php
class Axom
{
    private $apiKey;
    private $apiSecret;
    private $baseUrl = 'https://payments.axom.money';


    public function __construct(string $apiKey, string $apiSecret)
    {
        $this->apiKey = $apiKey;
        $this->apiSecret = $apiSecret;
    }

    public function makeRequest($method, $endpoint, array $body = [], array $query = [])
    {
        $method = strtoupper($method);
        $qs = http_build_query($query, '', '&');
        $path = ($qs == '') ? $endpoint : $endpoint . '?' . $qs;
        $ch = curl_init();
        $jsonBody = '';
        if ($method == 'POST' || $method == 'PUT' || $method == 'PATCH') {
            $jsonBody = json_encode($body, JSON_UNESCAPED_SLASHES);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonBody);
        }
        curl_setopt_array($ch, [
            CURLOPT_URL => $this->baseUrl . $path,
            CURLOPT_CUSTOMREQUEST => $method,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_HTTPHEADER => [
                'Content-Type: application/json',
                'Authorization: ' . $this->buildAuthorizationHeaderValue($path, $jsonBody)
            ]
        ]);
        $response = curl_exec($ch);
        curl_close($ch);
        return json_decode($response, true);
    }

    private function buildAuthorizationHeaderValue($path, $jsonBody = '')
    {
        $timestamp = intval(microtime(true) * 1000);
        $signaturePayload = $path . $timestamp . $jsonBody;
        $signature = hash_hmac('sha256', $signaturePayload, $this->apiSecret);
        return "FRX-API API-Key={$this->apiKey}," .
               "Signature={$signature}," .
               "Timestamp={$timestamp}";
    }
}
```

{% endtab %}

{% tab title="JS" %}

```javascript
"use strict";
const CryptoJS = require("crypto-js");
const fetch = require("node-fetch");
const Headers = fetch.Headers;
const API_KEY = process.env.API_KEY;
const API_SECRET = process.env.API_SECRET;
const BASE_URL = process.env.BASE_URL || "https://payments.axom.money";

function buildAuthorizationHeaderValue(path, jsonBody = "") {
  let timestamp = Date.now();
  let signaturePayload = path + timestamp + jsonBody;
  let signature = CryptoJS.HmacSHA256(signaturePayload, API_SECRET);

  return (
    `FRX-API API-Key=${API_KEY},` +
    `Signature=${signature},` +
    `Timestamp=${timestamp}`
  );
}

function stringifyBody(jsonBody) {
  if (typeof jsonBody === "string") {
    if (jsonBody === "") {
      throw "Body is requried for POST, PATCH, PUT requests.";
    }
    jsonBody = JSON.stringify(JSON.parse(jsonBody));
  } else {
    jsonBody = JSON.stringify(jsonBody);
  }

  return jsonBody;
}

function buildRequestOptions(method, path, jsonBody) {
  let requestOptions = {};
  let body = "";
  if (method === "POST" || method === "PUT" || method === "PATCH") {
    body = stringifyBody(jsonBody);
    requestOptions.body = body;
  }

  let authorizatonHeader = buildAuthorizationHeaderValue(path, body);
  let headers = new Headers();
  headers.append("Authorization", authorizatonHeader);
  headers.append("Content-type", "application/json");
  requestOptions.method = method;
  requestOptions.headers = headers;

  return requestOptions;
}

function makeRequest(method, path, jsonBody = "") {
  let url = BASE_URL + path;
  let requestOptions = buildRequestOptions(method, path, jsonBody);

  fetch(url, requestOptions)
    .then((response) => response.text())
    .then((result) => console.log(result))
    .catch((error) => console.log("error", error));
}
```

{% endtab %}
{% endtabs %}


# Environment

### Base endpoints:

* Production environment: \*\*<https://payments.axom.money**\\>
  Key for checking the authenticity of a Axom [callback](/references/callbacks) on the production environment:

  ```
  MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAugctje1SfC4AbVEvTjYqjOzZwkp4QdbWxhYMSekvDmtsLt2/oCE6eQnpOmLG6shZZ9YdQdD60mis3Q9j3a7YCtLNGWmr5WVaxAvxemZnNy76atH+GoGJaj19/ShMIXRDPj7AkEZfHyQylAVWNQ86LTAYz9uepiB9OUzypj1zLUalDTpzikUNNKyGYGH80UjMgwR9le9trHE7QwICvAZCPxeqq8tNSt3xYNINpVVOLjhNySbMLFJXMjz/lXtFSTbjpFiCf2/d1zEIXHQ2jlNtgHZfl/1agWG8XGKUg2RODkJ1YdDx04a4qK3ee3mYa6zj+eg52xscS0nZTjkMwA+/SE/fnV/efsS6/c+THfCMdLIRTjutQsW05rygMKvpdcBmJci7qvFV2hGDuUCiSYe/eejSFX1cCXRLJEAmTGGtUJOX0gxT46UxMtBEQdTJ+dgWh2nErmJ4mzWxkKP/aHMieUeYK+BDknwTEZoRwFmFmslGGEEo1sXSPsOnlrMid5tH67FwaGA+9ngVyUabXFe0fXaAQrOE95Zepp5gPaeeXxC5tLnZkN6CtK4hAFesrV6WWD2jJyNICZHxYe5n19n6YtnuRYA/2fl2XXAiNOCk47YnUGbRsz81VzHc4VnLpkGy+RVKxk4gz+Tjkk12m/E8KVi+mPcpvdQlfZM5j9xDGpcCAwEAAQ==
  ```

{% hint style="info" %}
All calls to our API should start with this specific URL: **<https://payments.axom.money>**
{% endhint %}


# Errors

### Format

Both client and server errors are returned in the following format:

```javascript
{
    "timestamp": 1584539613,
    "httpStatus": 400,
    "httpError": "Bad Request",
    "message": "Request failed validation",
    "path": "/api/v1/path/to/resource",
}
```

### HTTP Status Codes

| Code | Meaning                | Description                                                   |
| ---- | ---------------------- | ------------------------------------------------------------- |
| 400  | Bad request            | Invalid request body or parameters                            |
| 401  | Unauthorized           | Invalid authorization token or API credentials                |
| 403  | Forbidden              | Insufficient permissions when accessing the resource          |
| 404  | Not found              | The requested resource doesn't exist                          |
| 405  | Method not allowed     | The endpoint does not support the supplied HTTP verb (method) |
| 409  | Conflict               | The resource cannot be created since it already exists        |
| 415  | Unsupported media type | The request's payload is not in the supported JSON format     |
| 500  | Internal server error  | There is an issue with handling the request                   |
| 503  | Service unavailable    | System is down                                                |


# Expired payment

22 Aug 2024

A one-time payment link must have a maximum expiration time as configured by your merchant. If your payment has expired and no transaction has been recorded on the blockchain you should return to the merchant website and create a new payment link.

If you have already sent the crypto transaction and are seeing the expired payment message, it might not have been broadcasted on the network. Once processed we will update the payment page as soon as it is reflected. Payments are confirmed after receiving several confirmations from the Blockchain network. The final confirmation time depends on the load on the Blockchain network and the funding you have configured.


# Changelog

### 2025-01-25

* Added a rate matching functionality so that stable crypto coin rates can be exactly 1:1 matched with their fiat backing currency.

### 2024-10-19

* Minimum Deposit Processing Amount was introduced to improve the experience in cases where the actual deposit amount is lower than the amount which can effectively be processed.

### 2024-08-06

* Businesses can now choose which specific network they want to allow for any of the deposit currencies. This applies to currencies where multiple deposit networks are supported.

### 2024-07-04

* Added the ability to configure which party is responsible for covering the on-chain fees when sending out a settlement. This can be configured once for all withdrawals created from a given business on each individual withdrawal.

### 2024-05-29

* Added the ability to require an approval from a second user before sending out a withdrawal. This configuration is made once for each organisation and applies to all subsequently sent withdrawals.

### 2024-05-16

* `Solana` has been added as supported network for crypto withdrawals and deposit for `USDC.` Furthermore we also added `SOL` as deposit and withdrawal currency.

### 2024-04-01

* Added the withdrawal approvals feature allowing admin users to have additional control over crypto withdrawals by manually approving or rejecting them.

### 2023-06-16

* Adding statuses to deposits in payments. Changes to the response are visible under [Get payment data](/references/crypto-payments/get-deposit-data).

### 2023-02-09

* Adding a network field as a mandatory one to the post request for whitelist address creation. Currencies and networks pairs available are the same as for our [withdrawals](/references/crypto-withdrawals/initiate-withdrawal-request#supported-networks).

### 2022-09-26

* Introducing deposits through side chains. To take advantage of this new feature changes should be made to either the [Request crypto payment](/references/crypto-payments/initiate-a-crypto-payment-request) or the [Add payment details](/references/crypto-payments/submit-deposit-data) payload.

**List of currencies and their supported deposit networks**

| Currency | Network                                                              |
| -------- | -------------------------------------------------------------------- |
| USDC     | Ethereum chain (ETH), Binance Smart Chain (BSC) and Tron Chain (TRX) |
| ETH      | Ethereum chain (ETH) and Binance Smart Chain (BSC)                   |
| USDT     | Ethereum chain (ETH), Binance Smart Chain (BSC) and Tron Chain (TRX) |
| BTC      | BTC                                                                  |
| BCH      | BCH                                                                  |
| LTC      | LTC                                                                  |
| XRP      | XRP                                                                  |
| XLM      | XLM                                                                  |
| LINK     | ETH                                                                  |

### 2022-08-21

* Changes to the accepted values for the network field for [crypto withdrawals](/references/crypto-withdrawals/initiate-withdrawal-request)
  * `MAIN` is no longer a valid value for the network field instead, use one of the values described on the Request crypto withdrawal page.
  * Added a maximum amount the can be withdrawaln depending on the network and the respective cryptocurrency. Information can be found in the [metadata endpoint](/references/crypto-withdrawals/request-withdrawal-metadata).
* Different response fields when sending [payment details](/references/crypto-payments/submit-deposit-data). For payments with `LTC` as their `depositCurrency` the response will only include a `walletAddress` field. We are removing the `ltc3Address`field and changing the address type that is returned in the `walletAddress`.
* Changes to our [metadata endpoint](/references/crypto-withdrawals/request-withdrawal-metadata).
  * Added a new field `maxAmount` to the response. It will hold the maximum amount that can be withdrawn in the respective cryptocurrency.
  * The changes to network names that are described on the [crypto withdrawals](/references/crypto-withdrawals/initiate-withdrawal-request) page will also take affect here (see table below and [example response](/references/crypto-withdrawals/request-withdrawal-metadata)).
* Changes to the network field in the [validate address](/references/crypto-addresses/validate-address) endpoint

#### List of currencies and their old/new supported withdrawal networks <a href="#supported-networks" id="supported-networks"></a>

<table><thead><tr><th width="247.33333333333331">Currency</th><th>Supported networks (From 2022-08-15)</th><th>Supported networks (To 2022-08-15)</th><th data-hidden></th></tr></thead><tbody><tr><td>BTC</td><td>BTC</td><td>MAIN</td><td></td></tr><tr><td>BCH</td><td>BCH</td><td>MAIN</td><td></td></tr><tr><td>ETH</td><td>ETH, BSC</td><td>MAIN, BSC</td><td></td></tr><tr><td>LINK</td><td>ETH</td><td>MAIN, BSC</td><td></td></tr><tr><td>LTC</td><td>LTC</td><td>MAIN</td><td></td></tr><tr><td>USDC</td><td>ETH, BSC, TRX</td><td>not supported</td><td></td></tr><tr><td>USDT</td><td>ETH, BSC, TRX</td><td>MAIN, BSC, TRX</td><td></td></tr><tr><td>XLM</td><td>XLM</td><td>MAIN</td><td></td></tr><tr><td>XRP</td><td>XRP</td><td>MAIN</td><td></td></tr></tbody></table>

### 2022-06-30

#### Reducing the list of supported currencies

* Axom will cease processing (deposits and withdrawals) of the following currencies **as of 2022-07-15**:

```
Basic Attention Token (BAT),
Bancor (BNT),
Civic (CVC),
Enjin Coin (ENJ),
Mithril (MITH),
Metal (MTL),
OmiseGo (OMG),
Augur (REP)
```

Reason for delisting is low processing volumes and low liquidity on the markets.

### 2022-05-19

* [Withdrawal ](/references/crypto-withdrawals/initiate-withdrawal-request)request body and response body
  * New supported network - `TRX`

### 2022-05-09

* [Withdrawal ](/references/crypto-withdrawals/initiate-withdrawal-request)request body and response body
  * New optional field for the request body - `network`
  * New field in the response body - `network`
* [Get cryptocurrency metadata](/references/crypto-withdrawals/request-withdrawal-metadata)
  * New endpoint that provides metadata for all supported cryptocurrencies
* [Validate address](/references/crypto-addresses/validate-address#validate-address-1)
  * We are deprecating the old endpoint and introducing a new one:
    * `POST /api/v1/addresses/validate` is being **Deprecated**
    * `GET /api/v1/currency/:withdrawalCurrency/network/:network/address/:address/valid` - **New**
* [Exchange rates](/references/currencies-and-fees/get-exchange-rates-any-currency-to-any-currency) for any currency
  * New endpoint that provides rates for currencies(fiat and crypto) and supports comma-separated values.

### 2021-11-08

* [Withdrawal callback](/references/callbacks/withdrawal-completed) request body
  * New status -`BLOCKED`
  * New field - `txAddressOwner`
* [Get business withdrawals ](/references/business/get-business-withdrawals)response
  * New status - `BLOCKED`
  * New fields - `addressOwner`, `sourceRiskEntities`, `destinationRiskEntities`


# Crypto payments

In this section we'll go through the endpoints you'll need to execute crypto payments on your website. You can make use of our hosted checkout experience or spin-off a custom UI.

## Guidelines for checkout integration in Iframe

To provide the best user experience, we strongly recommend that you use the following minimum dimensions when displaying our checkout:

* Height: 640px
* Width: 320px

Our checkout uses the clipboard API to allow users to easily copy the Amounts, Addresses and Transaction ID that are displayed on the screen. This action might be prevented by Chrome and other browsers, so to allow the copying of text with a single button simply add the `allow="clipboard-write"` property to your `<iframe>` tag.

### Payment statuses

| Status        | Description                                                                                                                                                                                                                                                                                                                                                                    |
| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| NEW           | A payment has been created, however, no depositCurrency has been selected yet. (Screen 1 above)                                                                                                                                                                                                                                                                                |
| PENDING       | Customer has selected a depositCurrency and is presented with a cryptocurrency deposit address. Axom listens for blockchain events on the particular wallet address.                                                                                                                                                                                                           |
| AWAITING      | This is an optional status that is only applicable to UTXO deposits. It represents that we've "seen" a transfer on the blockchain, but is still in UNCONFIRMED status. Transaction has not been validated yet on the blockchain (Screen 4 above)                                                                                                                               |
| DEPOSITED     | The transaction has been completed and your account balance has been updated. A [callback notification](https://gitlab.com/Finraxltd/gitbook-axom/-/blob/main/references/crypto-payments/broken-reference/README.md) is triggered to your designated endpoint.                                                                                                                 |
| EXPIRED       | Once the expirationMinutes is reached and no deposit has been received against the supplied wallet address, the payment will be changed to status EXPIRED. Bear in mind that this is a tentative status. If we locate a blockchain transaction after the payment is changed to EXPIRED, we'll update the status from EXPIRED to DEPOSITED and trigger a callback notification. |
| BLOCKED       | The transaction received against a given payment has been blocked due to compliance reasons. This usually happens if the origin of funds is marked as illicit (i.e. Darknet, Scam , etc.)                                                                                                                                                                                      |
| OVERPAID      | Only present if the business has the overpayment logic active. The deposited amount exceeded the expected amount, starting the process of refunding.                                                                                                                                                                                                                           |
| UNPROCESSABLE | The deposit received was below the minimum deposit amount, so it will not be processed nor credited to the business. This status will not trigger a callback notification.                                                                                                                                                                                                     |

### Adding side chain support for deposits <a href="#list-of-currencies-and-networks" id="list-of-currencies-and-networks"></a>

To make use of deposits through side chains the payload of either the [Request crypto payment ](/references/crypto-payments/initiate-a-crypto-payment-request)or the [Add payment details](/references/crypto-payments/submit-deposit-data) request should be changed, so that it includes the `network` field.

If the network field is not included in the request, then we'll use the default network for respective currency. Details for the supported deposit and default deposit networks can be found in the table below.

### List of currencies and their supported deposit networks <a href="#list-of-currencies-and-networks" id="list-of-currencies-and-networks"></a>

| Currency | Network                                                                  |
| -------- | ------------------------------------------------------------------------ |
| USDC     | Ethereum chain (ETH), Binance Smart Chain (BSC) and Solana network (SOL) |
| ETH      | Ethereum chain (ETH) and Binance Smart Chain (BSC)                       |
| SOL      | SOL                                                                      |
| BTC      | BTC                                                                      |
| BCH      | BCH                                                                      |
| LTC      | LTC                                                                      |
| XRP      | XRP                                                                      |
| XLM      | XLM                                                                      |
| LINK     | ETH                                                                      |


# Request crypto payment

This is an authenticated endpoint

## Request crypto payment

> An endpoint for initiating a crypto payment request. Upon success, a unique \`paymentUrl\` is provided in the response which can be served within an iframe.\
> \
> Alternatively, you can redirect to the payment URL and if you have supplied a \`redirectUrl\` in the request, we will navigate the end-user back to your website upon payment completion (when we have received a deposit against this payment request). There is also a button which the end-user can use if they wish to get redirected back sooner.

```json
{"openapi":"3.0.1","info":{"title":"OpenAPI definition","version":"v0"},"servers":[{"url":"","description":"Generated server url"}],"security":[{"ApiKeyAuth":["CREATE_PAYMENT"]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","description":"^FRX-API api-key=[^,]+,signature=[^,]+,timestamp=[\\d]+$","name":"Authorization","in":"header"}},"schemas":{"CreatePaymentRequest":{"required":["businessId","clientPaymentId","locale"],"type":"object","properties":{"clientPaymentId":{"type":"string","description":"Payment identifier provided in the request."},"businessId":{"type":"string","format":"uuid"},"type":{"type":"string","enum":["ONE_TIME","REUSABLE"]},"displayCurrency":{"type":"string","description":"Fiat currency. You should provide this or `depositCurrency`.","enum":["AED","ARS","AUD","BDT","BGN","BRL","CAD","CHF","CLP","CNY","CZK","DKK","EUR","GBP","HKD","HRK","HUF","IDR","ILS","INR","ISK","JPY","KES","KRW","MXN","MYR","NOK","NZD","PEN","PHP","PLN","QAR","RON","SEK","SGD","THB","TRY","USD","VND","ZAR"]},"displayAmount":{"type":"string","description":"Amount in `displayCurrency` that the user wants to deposit. Required if `displayCurrency` is provided."},"depositCurrency":{"type":"string","description":"Cryptocurrency. You should provide this or `displayCurrency`.","enum":["BCH","BNB","BTC","ETH","LINK","LTC","SOL","TRX","USDC","USDT","XLM","XRP"]},"depositAmount":{"type":"string","description":"Amount in `depositCurrency` that the user wants to deposit. Required if `depositCurrency` is provided."},"network":{"type":"string","description":"Cryptocurrency network. Required if `depositCurrency` is provided.","enum":["BCH","BTC","LTC","XLM","XRP","ETH","BSC","SOL","TRX"]},"rateType":{"type":"string","description":"- `ONE_TIME` payments: `FIXED` or `FLOATING`.\n- `REUSABLE` payments: You can omit this parameter. Reusable payments are set to `FLOATING`.","enum":["FIXED","FLOATING"]},"expirationMinutes":{"minimum":0,"type":"integer","description":"- `ONE_TIME` payments: Indicates the timeframe in which the deposit should happen. A value of 0 will set the payment expiry to 7 days. Defaults to 30 min.\n- `REUSABLE` payments: You can omit this parameter. Reusable payments are set to non-expiry.","format":"int64"},"locale":{"type":"string","description":"IETF BCP 47 language tag, e.g. 'en-US', 'fr-FR'.\nAlternatively, the locale string can be submitted with an '_' instead of '-', e.g. 'en_US' or 'fr_FR' or as an ISO 639-1 language code, e.g. 'en' or 'fr'.\nSupported languages:\n- Arabic (ar)\n- Bulgarian (bg)\n- Chinese (zh)\n- English (en)\n- French (fr)\n- German (de)\n- Japanese (ja)\n- Lithuanian (lt)\n- Portuguese (pt)\n- Russian (ru)\n- Spanish (es)\n- Turkish (tr)"},"redirectUrl":{"type":"string","description":"Custom URL where the user will be redirected after payment completion."},"redirectMode":{"type":"string","description":"Specifies how to open the redirect URL\n- `PARENT` (default): Opens the redirect URL in the parent browsing context. Refers to HTML anchor target attribute value `_top`.\n- `SELF`: Opens the redirect URL in the current browsing context. Refers to HTML anchor target attribute value `_self`.","enum":["PARENT","SELF"]}}},"CreatedPaymentResponse":{"type":"object","properties":{"paymentInfo":{"$ref":"#/components/schemas/DetailedPaymentResponse"},"paymentUrl":{"type":"string","format":"url"}}},"DetailedPaymentResponse":{"required":["actualDepositAmount","actualDepositDistributedUserServiceFee","actualDisplayAmount","actualDisplayDistributedUserServiceFee","actualUniformAmount","businessId","clientPaymentId","deposits","expirationMinutes","locale","paymentId","paymentInitiatedAt","processorType","rateType","status","type","url","userServiceFeeDistributionPercentage"],"type":"object","properties":{"paymentId":{"type":"string","format":"uuid"},"clientPaymentId":{"type":"string","description":"Payment identifier provided by the merchant on payment creation."},"businessId":{"type":"string","format":"uuid"},"locale":{"type":"string","description":"Locale code."},"status":{"type":"string","enum":["NEW","PENDING","AWAITING","DEPOSITED","EXPIRED","BLOCKED","OVERPAID","UNPROCESSABLE"]},"rateType":{"type":"string","enum":["FIXED","FLOATING"]},"type":{"type":"string","enum":["ONE_TIME","REUSABLE"]},"url":{"type":"string","description":"Checkout link.","format":"url"},"overpaymentPolicy":{"type":"string","enum":["PROCESS","EXCESS_REFUND"]},"refundFollowUpDepositsForOneTimePayments":{"type":"boolean"},"processorType":{"type":"string","deprecated":true,"enum":["BLOCKCHAIN"]},"walletAddress":{"type":"string","description":"Wallet address where the cryptocurrency amount should be deposited."},"destinationTag":{"type":"string","description":"XLM/XRP destination tag."},"displayCurrency":{"type":"string","description":"Fiat currency.","enum":["AED","ARS","AUD","BDT","BGN","BRL","CAD","CHF","CLP","CNY","CZK","DKK","EUR","GBP","HKD","HRK","HUF","IDR","ILS","INR","ISK","JPY","KES","KRW","MXN","MYR","NOK","NZD","PEN","PHP","PLN","QAR","RON","SEK","SGD","THB","TRY","USD","VND","ZAR"]},"expectedDisplayAmount":{"type":"string","description":"Amount in `displayCurrency` requested for this payment."},"expectedDisplayDistributedUserServiceFee":{"type":"string","description":"Distributed service fee amount in `displayCurrency` requested for this payment."},"actualDisplayAmount":{"type":"string","description":"Actual amount deposited in `displayCurrency`."},"actualDisplayDistributedUserServiceFee":{"type":"string","description":"Actual distributed service fee amount in `displayCurrency`."},"depositCurrency":{"type":"string","description":"The selected cryptocurrency.","enum":["BCH","BNB","BTC","ETH","LINK","LTC","SOL","TRX","USDC","USDT","XLM","XRP"]},"expectedNetwork":{"type":"string","description":"The selected network.","enum":["BCH","BTC","LTC","XLM","XRP","ETH","BSC","SOL","TRX"]},"expectedDepositAmount":{"type":"string","description":"Amount in `depositCurrency` to be deposited to fulfill the required amount in `displayCurrency`."},"expectedDepositDistributedUserServiceFee":{"type":"string","description":"Distributed service fee amount in `depositCurrency` requested for this payment."},"actualDepositAmount":{"type":"string","description":"Deprecated. Actual amount deposited by the end user. The actual currency may be different than `depositCurrency`. For actual amount and currency use the nested `deposits`.","deprecated":true},"actualDepositDistributedUserServiceFee":{"type":"string","description":"Actual distributed service fee amount in `depositCurrency`."},"expectedUniformAmount":{"type":"string","description":"Expected deposit amount in EUR."},"actualUniformAmount":{"type":"string","description":"Actual amount deposited in EUR."},"userServiceFeeDistributionPercentage":{"type":"string","description":"Percentage of the service fee covered by the user."},"redirectUrl":{"type":"string","description":"Custom URL where the user will be redirected after payment completion.","format":"url"},"redirectMode":{"type":"string","description":"Specifies how to open the redirect URL","enum":["PARENT","SELF"]},"expirationMinutes":{"minimum":0,"type":"integer","description":"Timeframe in which the deposit should succeed.","format":"int64"},"initiatedBy":{"type":"string","description":"The initiator of this payment."},"paymentInitiatedAt":{"type":"integer","description":"UNIX seconds at which the payment was initiated.","format":"int64"},"paymentRequestedAt":{"type":"integer","description":"UNIX seconds at which the payment was requested.","format":"int64"},"deposits":{"type":"array","items":{"$ref":"#/components/schemas/DetailedDepositResponse"}}}},"DetailedDepositResponse":{"required":["depositCurrency","depositReceivedAt","displayCurrency","fromAddress","id","network","onChainFee","status","toAddress","transactionId","uniformCurrency","userServiceFeeDistributionPercentage"],"type":"object","properties":{"id":{"type":"string","description":"Deposit UUID.","format":"uuid"},"transactionId":{"type":"string","description":"Blockchain transaction hash for the deposit."},"status":{"type":"string","description":"Status for this deposit only (not to be confused with the status for the entire payment).","enum":["COMPLIANCE_REVIEW","UNCONFIRMED","CONFIRMED","BLOCKED","UNPROCESSABLE"]},"fromAddress":{"type":"string","description":"Sending address of the transaction."},"toAddress":{"type":"string","description":"Receiving address of the transaction."},"riskScore":{"type":"string","description":"AML risk score."},"addressRiskAssessment":{"$ref":"#/components/schemas/AddressRiskAssessmentView"},"depositCurrency":{"type":"string","description":"Cryptocurrency that has been deposited.","enum":["BCH","BNB","BTC","ETH","LINK","LTC","SOL","TRX","USDC","USDT","XLM","XRP"]},"network":{"type":"string","description":"Network on which the deposit was made.","enum":["BCH","BTC","LTC","XLM","XRP","ETH","BSC","SOL","TRX"]},"depositAmount":{"type":"string","description":"Amount deposited in `depositCurrency`."},"depositDistributedUserServiceFee":{"type":"string","description":"Actual distributed service fee amount in `depositCurrency`."},"onChainFee":{"type":"string","description":"Blockchain fee in `depositCurrency`, paid by the end user."},"displayCurrency":{"type":"string","description":"Fiat currency.","enum":["AED","ARS","AUD","BDT","BGN","BRL","CAD","CHF","CLP","CNY","CZK","DKK","EUR","GBP","HKD","HRK","HUF","IDR","ILS","INR","ISK","JPY","KES","KRW","MXN","MYR","NOK","NZD","PEN","PHP","PLN","QAR","RON","SEK","SGD","THB","TRY","USD","VND","ZAR"]},"displayAmount":{"type":"string","description":"Amount deposited in `displayCurrency`."},"displayPayableAmount":{"type":"string","description":"Credited amount in `displayCurrency`."},"displayServiceFee":{"type":"string","description":"Service fee amount in `displayCurrency`."},"displayDistributedUserServiceFee":{"type":"string","description":"Distributed service fee in `displayCurrency`."},"settlementCurrency":{"type":"string","description":"Currency in which the deposit is credited.","enum":["BTC","USDC","USDT","EUR","GBP","USD"]},"settlementPayableAmount":{"type":"string","description":"Credited amount in `settlementCurrency`."},"settlementServiceFee":{"type":"string","description":"Service fee in `settlementCurrency`."},"settlementDistributedUserServiceFee":{"type":"string","description":"Distributed service fee in `settlementCurrency`."},"uniformCurrency":{"type":"string","description":"Always EUR."},"uniformPayableAmount":{"type":"string","description":"Credited amount in EUR."},"uniformServiceFee":{"type":"string","description":"Service fee in EUR."},"uniformDistributedUserServiceFee":{"type":"string","description":"Distributed service fee in EUR."},"userServiceFeeDistributionPercentage":{"type":"string","description":"Percentage of the service fee covered by the user."},"depositReceivedAt":{"type":"integer","description":"UNIX seconds at which the deposit was received.","format":"int64"},"displayRateDepegLossAmount":{"type":"string","description":"Loss incurred from the pegging of deposit and display currencies market rate expressed in `displayCurrency`."},"settlementRateDepegLossAmount":{"type":"string","description":"Loss incurred from the pegging of deposit and display currencies market rate expressed in `settlementCurrency`."},"uniformRateDepegLossAmount":{"type":"string","description":"Loss incurred from the pegging of deposit and display currencies market rate expressed in `uniformCurrency`."},"refund":{"$ref":"#/components/schemas/RefundResponse"}}},"AddressRiskAssessmentView":{"type":"object","properties":{"addressOwner":{"$ref":"#/components/schemas/LegalEntityResponse"},"sourceRiskEntities":{"uniqueItems":true,"type":"array","description":"Illicit sources from which the `recipientAddress` has received transactions.","items":{"$ref":"#/components/schemas/LegalEntityResponse"}},"destinationRiskEntities":{"uniqueItems":true,"type":"array","description":"Illicit destinations to which the `recipientAddress` has sent transactions.","items":{"$ref":"#/components/schemas/LegalEntityResponse"}}},"description":"AML risk assessment for the depositing address."},"LegalEntityResponse":{"type":"object","properties":{"name":{"type":"string","description":"Address owning entity name."},"category":{"type":"string","description":"Illicit source category."}},"description":"Legal entity."},"RefundResponse":{"required":["amount","depositCurrency","displayAmount","displayCurrency","network","reason","status","type"],"type":"object","properties":{"type":{"type":"string","enum":["PARTIAL","FULL"]},"status":{"type":"string","enum":["PENDING","CONFIRMED","NON_REFUNDABLE"]},"reason":{"type":"string","enum":["OVERPAYMENT","CURRENCY_MISMATCH","FOLLOW_UP_DEPOSIT","RESTRICTED_CURRENCY","ILLICIT_DEPOSIT"]},"depositCurrency":{"type":"string","description":"Deposit cryptocurrency.","enum":["BCH","BNB","BTC","ETH","LINK","LTC","SOL","TRX","USDC","USDT","XLM","XRP"]},"network":{"type":"string","description":"Deposit network.","enum":["BCH","BTC","LTC","XLM","XRP","ETH","BSC","SOL","TRX"]},"amount":{"type":"string","description":"Refund amount in `depositCurrency`."},"fee":{"type":"string","description":"Blockchain fee in `depositCurrency`."},"displayCurrency":{"type":"string","description":"Fiat currency.","enum":["AED","ARS","AUD","BDT","BGN","BRL","CAD","CHF","CLP","CNY","CZK","DKK","EUR","GBP","HKD","HRK","HUF","IDR","ILS","INR","ISK","JPY","KES","KRW","MXN","MYR","NOK","NZD","PEN","PHP","PLN","QAR","RON","SEK","SGD","THB","TRY","USD","VND","ZAR"]},"displayAmount":{"type":"string","description":"Refund amount in `displayCurrency`."},"displayFee":{"type":"string","description":"Blockchain fee in `displayCurrency`."},"transactionId":{"type":"string","description":"Transaction hash of the refund."},"confirmedAt":{"type":"integer","description":"UNIX seconds at which the refund transaction was confirmed.","format":"int64"}}}}},"paths":{"/api/v1/payments":{"post":{"summary":"Request crypto payment","description":"An endpoint for initiating a crypto payment request. Upon success, a unique `paymentUrl` is provided in the response which can be served within an iframe.\n\nAlternatively, you can redirect to the payment URL and if you have supplied a `redirectUrl` in the request, we will navigate the end-user back to your website upon payment completion (when we have received a deposit against this payment request). There is also a button which the end-user can use if they wish to get redirected back sooner.","operationId":"request-crypto-payment","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePaymentRequest"}}},"required":true},"responses":{"200":{"description":"Returns the created payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatedPaymentResponse"}}}}}}}}}
```


# Add payment details

In case you'd like to spin off your own UI, this endpoint allows you to submit the details from the end-user for the initiated deposit request. The end-user will be required to choose a `depositCurrency`

## Submit crypto payment

> If you are using our payment URL supplied as a response of "Request payment" request, you'll not need to run this request. It will be handled by our hosted checkout application.

```json
{"openapi":"3.0.1","info":{"title":"OpenAPI definition","version":"v0"},"servers":[{"url":"","description":"Generated server url"}],"security":[{"ApiKeyAuth":["CREATE_PAYMENT"]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","description":"^FRX-API api-key=[^,]+,signature=[^,]+,timestamp=[\\d]+$","name":"Authorization","in":"header"}},"schemas":{"SubmitPaymentRequest":{"required":["depositCurrency","network"],"type":"object","properties":{"depositCurrency":{"type":"string","description":"Cryptocurrency that should be used for the deposit.","enum":["BCH","BNB","BTC","ETH","LINK","LTC","SOL","TRX","USDC","USDT","XLM","XRP"]},"network":{"type":"string","description":"Cryptocurrency network on which the deposit will be received.","enum":["BCH","BTC","LTC","XLM","XRP","ETH","BSC","SOL","TRX"]},"displayCurrency":{"type":"string","description":"Fiat currency, if not provided on payment creation.","enum":["AED","ARS","AUD","BDT","BGN","BRL","CAD","CHF","CLP","CNY","CZK","DKK","EUR","GBP","HKD","HRK","HUF","IDR","ILS","INR","ISK","JPY","KES","KRW","MXN","MYR","NOK","NZD","PEN","PHP","PLN","QAR","RON","SEK","SGD","THB","TRY","USD","VND","ZAR"]},"displayAmount":{"type":"string","description":"Amount in `displayCurrency`, if not provided on payment creation."}}},"SubmitPaymentResponse":{"type":"object","properties":{"paymentInfo":{"$ref":"#/components/schemas/DetailedPaymentResponse"}}},"DetailedPaymentResponse":{"required":["actualDepositAmount","actualDepositDistributedUserServiceFee","actualDisplayAmount","actualDisplayDistributedUserServiceFee","actualUniformAmount","businessId","clientPaymentId","deposits","expirationMinutes","locale","paymentId","paymentInitiatedAt","processorType","rateType","status","type","url","userServiceFeeDistributionPercentage"],"type":"object","properties":{"paymentId":{"type":"string","format":"uuid"},"clientPaymentId":{"type":"string","description":"Payment identifier provided by the merchant on payment creation."},"businessId":{"type":"string","format":"uuid"},"locale":{"type":"string","description":"Locale code."},"status":{"type":"string","enum":["NEW","PENDING","AWAITING","DEPOSITED","EXPIRED","BLOCKED","OVERPAID","UNPROCESSABLE"]},"rateType":{"type":"string","enum":["FIXED","FLOATING"]},"type":{"type":"string","enum":["ONE_TIME","REUSABLE"]},"url":{"type":"string","description":"Checkout link.","format":"url"},"overpaymentPolicy":{"type":"string","enum":["PROCESS","EXCESS_REFUND"]},"refundFollowUpDepositsForOneTimePayments":{"type":"boolean"},"processorType":{"type":"string","deprecated":true,"enum":["BLOCKCHAIN"]},"walletAddress":{"type":"string","description":"Wallet address where the cryptocurrency amount should be deposited."},"destinationTag":{"type":"string","description":"XLM/XRP destination tag."},"displayCurrency":{"type":"string","description":"Fiat currency.","enum":["AED","ARS","AUD","BDT","BGN","BRL","CAD","CHF","CLP","CNY","CZK","DKK","EUR","GBP","HKD","HRK","HUF","IDR","ILS","INR","ISK","JPY","KES","KRW","MXN","MYR","NOK","NZD","PEN","PHP","PLN","QAR","RON","SEK","SGD","THB","TRY","USD","VND","ZAR"]},"expectedDisplayAmount":{"type":"string","description":"Amount in `displayCurrency` requested for this payment."},"expectedDisplayDistributedUserServiceFee":{"type":"string","description":"Distributed service fee amount in `displayCurrency` requested for this payment."},"actualDisplayAmount":{"type":"string","description":"Actual amount deposited in `displayCurrency`."},"actualDisplayDistributedUserServiceFee":{"type":"string","description":"Actual distributed service fee amount in `displayCurrency`."},"depositCurrency":{"type":"string","description":"The selected cryptocurrency.","enum":["BCH","BNB","BTC","ETH","LINK","LTC","SOL","TRX","USDC","USDT","XLM","XRP"]},"expectedNetwork":{"type":"string","description":"The selected network.","enum":["BCH","BTC","LTC","XLM","XRP","ETH","BSC","SOL","TRX"]},"expectedDepositAmount":{"type":"string","description":"Amount in `depositCurrency` to be deposited to fulfill the required amount in `displayCurrency`."},"expectedDepositDistributedUserServiceFee":{"type":"string","description":"Distributed service fee amount in `depositCurrency` requested for this payment."},"actualDepositAmount":{"type":"string","description":"Deprecated. Actual amount deposited by the end user. The actual currency may be different than `depositCurrency`. For actual amount and currency use the nested `deposits`.","deprecated":true},"actualDepositDistributedUserServiceFee":{"type":"string","description":"Actual distributed service fee amount in `depositCurrency`."},"expectedUniformAmount":{"type":"string","description":"Expected deposit amount in EUR."},"actualUniformAmount":{"type":"string","description":"Actual amount deposited in EUR."},"userServiceFeeDistributionPercentage":{"type":"string","description":"Percentage of the service fee covered by the user."},"redirectUrl":{"type":"string","description":"Custom URL where the user will be redirected after payment completion.","format":"url"},"redirectMode":{"type":"string","description":"Specifies how to open the redirect URL","enum":["PARENT","SELF"]},"expirationMinutes":{"minimum":0,"type":"integer","description":"Timeframe in which the deposit should succeed.","format":"int64"},"initiatedBy":{"type":"string","description":"The initiator of this payment."},"paymentInitiatedAt":{"type":"integer","description":"UNIX seconds at which the payment was initiated.","format":"int64"},"paymentRequestedAt":{"type":"integer","description":"UNIX seconds at which the payment was requested.","format":"int64"},"deposits":{"type":"array","items":{"$ref":"#/components/schemas/DetailedDepositResponse"}}}},"DetailedDepositResponse":{"required":["depositCurrency","depositReceivedAt","displayCurrency","fromAddress","id","network","onChainFee","status","toAddress","transactionId","uniformCurrency","userServiceFeeDistributionPercentage"],"type":"object","properties":{"id":{"type":"string","description":"Deposit UUID.","format":"uuid"},"transactionId":{"type":"string","description":"Blockchain transaction hash for the deposit."},"status":{"type":"string","description":"Status for this deposit only (not to be confused with the status for the entire payment).","enum":["COMPLIANCE_REVIEW","UNCONFIRMED","CONFIRMED","BLOCKED","UNPROCESSABLE"]},"fromAddress":{"type":"string","description":"Sending address of the transaction."},"toAddress":{"type":"string","description":"Receiving address of the transaction."},"riskScore":{"type":"string","description":"AML risk score."},"addressRiskAssessment":{"$ref":"#/components/schemas/AddressRiskAssessmentView"},"depositCurrency":{"type":"string","description":"Cryptocurrency that has been deposited.","enum":["BCH","BNB","BTC","ETH","LINK","LTC","SOL","TRX","USDC","USDT","XLM","XRP"]},"network":{"type":"string","description":"Network on which the deposit was made.","enum":["BCH","BTC","LTC","XLM","XRP","ETH","BSC","SOL","TRX"]},"depositAmount":{"type":"string","description":"Amount deposited in `depositCurrency`."},"depositDistributedUserServiceFee":{"type":"string","description":"Actual distributed service fee amount in `depositCurrency`."},"onChainFee":{"type":"string","description":"Blockchain fee in `depositCurrency`, paid by the end user."},"displayCurrency":{"type":"string","description":"Fiat currency.","enum":["AED","ARS","AUD","BDT","BGN","BRL","CAD","CHF","CLP","CNY","CZK","DKK","EUR","GBP","HKD","HRK","HUF","IDR","ILS","INR","ISK","JPY","KES","KRW","MXN","MYR","NOK","NZD","PEN","PHP","PLN","QAR","RON","SEK","SGD","THB","TRY","USD","VND","ZAR"]},"displayAmount":{"type":"string","description":"Amount deposited in `displayCurrency`."},"displayPayableAmount":{"type":"string","description":"Credited amount in `displayCurrency`."},"displayServiceFee":{"type":"string","description":"Service fee amount in `displayCurrency`."},"displayDistributedUserServiceFee":{"type":"string","description":"Distributed service fee in `displayCurrency`."},"settlementCurrency":{"type":"string","description":"Currency in which the deposit is credited.","enum":["BTC","USDC","USDT","EUR","GBP","USD"]},"settlementPayableAmount":{"type":"string","description":"Credited amount in `settlementCurrency`."},"settlementServiceFee":{"type":"string","description":"Service fee in `settlementCurrency`."},"settlementDistributedUserServiceFee":{"type":"string","description":"Distributed service fee in `settlementCurrency`."},"uniformCurrency":{"type":"string","description":"Always EUR."},"uniformPayableAmount":{"type":"string","description":"Credited amount in EUR."},"uniformServiceFee":{"type":"string","description":"Service fee in EUR."},"uniformDistributedUserServiceFee":{"type":"string","description":"Distributed service fee in EUR."},"userServiceFeeDistributionPercentage":{"type":"string","description":"Percentage of the service fee covered by the user."},"depositReceivedAt":{"type":"integer","description":"UNIX seconds at which the deposit was received.","format":"int64"},"displayRateDepegLossAmount":{"type":"string","description":"Loss incurred from the pegging of deposit and display currencies market rate expressed in `displayCurrency`."},"settlementRateDepegLossAmount":{"type":"string","description":"Loss incurred from the pegging of deposit and display currencies market rate expressed in `settlementCurrency`."},"uniformRateDepegLossAmount":{"type":"string","description":"Loss incurred from the pegging of deposit and display currencies market rate expressed in `uniformCurrency`."},"refund":{"$ref":"#/components/schemas/RefundResponse"}}},"AddressRiskAssessmentView":{"type":"object","properties":{"addressOwner":{"$ref":"#/components/schemas/LegalEntityResponse"},"sourceRiskEntities":{"uniqueItems":true,"type":"array","description":"Illicit sources from which the `recipientAddress` has received transactions.","items":{"$ref":"#/components/schemas/LegalEntityResponse"}},"destinationRiskEntities":{"uniqueItems":true,"type":"array","description":"Illicit destinations to which the `recipientAddress` has sent transactions.","items":{"$ref":"#/components/schemas/LegalEntityResponse"}}},"description":"AML risk assessment for the depositing address."},"LegalEntityResponse":{"type":"object","properties":{"name":{"type":"string","description":"Address owning entity name."},"category":{"type":"string","description":"Illicit source category."}},"description":"Legal entity."},"RefundResponse":{"required":["amount","depositCurrency","displayAmount","displayCurrency","network","reason","status","type"],"type":"object","properties":{"type":{"type":"string","enum":["PARTIAL","FULL"]},"status":{"type":"string","enum":["PENDING","CONFIRMED","NON_REFUNDABLE"]},"reason":{"type":"string","enum":["OVERPAYMENT","CURRENCY_MISMATCH","FOLLOW_UP_DEPOSIT","RESTRICTED_CURRENCY","ILLICIT_DEPOSIT"]},"depositCurrency":{"type":"string","description":"Deposit cryptocurrency.","enum":["BCH","BNB","BTC","ETH","LINK","LTC","SOL","TRX","USDC","USDT","XLM","XRP"]},"network":{"type":"string","description":"Deposit network.","enum":["BCH","BTC","LTC","XLM","XRP","ETH","BSC","SOL","TRX"]},"amount":{"type":"string","description":"Refund amount in `depositCurrency`."},"fee":{"type":"string","description":"Blockchain fee in `depositCurrency`."},"displayCurrency":{"type":"string","description":"Fiat currency.","enum":["AED","ARS","AUD","BDT","BGN","BRL","CAD","CHF","CLP","CNY","CZK","DKK","EUR","GBP","HKD","HRK","HUF","IDR","ILS","INR","ISK","JPY","KES","KRW","MXN","MYR","NOK","NZD","PEN","PHP","PLN","QAR","RON","SEK","SGD","THB","TRY","USD","VND","ZAR"]},"displayAmount":{"type":"string","description":"Refund amount in `displayCurrency`."},"displayFee":{"type":"string","description":"Blockchain fee in `displayCurrency`."},"transactionId":{"type":"string","description":"Transaction hash of the refund."},"confirmedAt":{"type":"integer","description":"UNIX seconds at which the refund transaction was confirmed.","format":"int64"}}}}},"paths":{"/api/v1/payments/{paymentId}":{"patch":{"summary":"Submit crypto payment","description":"If you are using our payment URL supplied as a response of \"Request payment\" request, you'll not need to run this request. It will be handled by our hosted checkout application.","operationId":"submit-crypto-payment","parameters":[{"name":"paymentId","in":"path","description":"ID of the payment to submit.","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitPaymentRequest"}}},"required":true},"responses":{"200":{"description":"Returns the submitted payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitPaymentResponse"}}}}}}}}}
```


# Get payment data

## Fetch payment by ID

> Fetch payment by ID. The payment ID is provided in the response of \`POST /payments\`.

```json
{"openapi":"3.0.1","info":{"title":"OpenAPI definition","version":"v0"},"servers":[{"url":"","description":"Generated server url"}],"security":[{"ApiKeyAuth":["GET_PAYMENT"]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","description":"^FRX-API api-key=[^,]+,signature=[^,]+,timestamp=[\\d]+$","name":"Authorization","in":"header"}},"schemas":{"BasicPaymentResponse":{"required":["actualDepositAmount","actualDisplayAmount","actualUniformAmount","businessId","clientPaymentId","deposits","expirationMinutes","locale","paymentId","paymentInitiatedAt","rateType","status","type","url","userServiceFeeDistributionPercentage"],"type":"object","properties":{"paymentId":{"type":"string","format":"uuid"},"clientPaymentId":{"type":"string","description":"Payment identifier provided by the merchant in the request body of `POST /payments`."},"businessId":{"type":"string","format":"uuid"},"locale":{"type":"string","description":"Locale code."},"status":{"type":"string","enum":["NEW","PENDING","AWAITING","DEPOSITED","EXPIRED","BLOCKED","OVERPAID","UNPROCESSABLE"]},"rateType":{"type":"string","enum":["FIXED","FLOATING"]},"type":{"type":"string","enum":["ONE_TIME","REUSABLE"]},"url":{"type":"string","description":"Checkout link.","format":"url"},"overpaymentPolicy":{"type":"string","enum":["PROCESS","EXCESS_REFUND"]},"refundFollowUpDepositsForOneTimePayments":{"type":"boolean"},"walletAddress":{"type":"string","description":"Wallet address where the cryptocurrency amount should be deposited."},"destinationTag":{"type":"string","description":"XLM/XRP destination tag."},"displayCurrency":{"type":"string","description":"Fiat currency.","enum":["AED","ARS","AUD","BDT","BGN","BRL","CAD","CHF","CLP","CNY","CZK","DKK","EUR","GBP","HKD","HRK","HUF","IDR","ILS","INR","ISK","JPY","KES","KRW","MXN","MYR","NOK","NZD","PEN","PHP","PLN","QAR","RON","SEK","SGD","THB","TRY","USD","VND","ZAR"]},"expectedDisplayAmount":{"type":"string","description":"Amount in `displayCurrency` requested for this payment."},"expectedDisplayDistributedUserServiceFee":{"type":"string","description":"Distributed service fee amount in `displayCurrency` requested for this payment."},"actualDisplayAmount":{"type":"string","description":"Actual amount deposited in `displayCurrency`."},"depositCurrency":{"type":"string","description":"The selected cryptocurrency.","enum":["BCH","BNB","BTC","ETH","LINK","LTC","SOL","TRX","USDC","USDT","XLM","XRP"]},"expectedNetwork":{"type":"string","description":"The selected network.","enum":["BCH","BTC","LTC","XLM","XRP","ETH","BSC","SOL","TRX"]},"expectedDepositAmount":{"type":"string","description":"Amount in `depositCurrency` to be deposited to fulfill the required amount in `displayCurrency`."},"expectedDepositDistributedUserServiceFee":{"type":"string","description":"Distributed service fee amount in `depositCurrency` requested for this payment."},"actualDepositAmount":{"type":"string","description":"Deprecated. Actual amount deposited by the end user. The actual currency may be different than `depositCurrency`. For actual amount and currency use the nested `deposits`.","deprecated":true},"expectedUniformAmount":{"type":"string","description":"Expected deposit amount in EUR."},"actualUniformAmount":{"type":"string","description":"Actual deposit amount in EUR."},"userServiceFeeDistributionPercentage":{"type":"string","description":"Percentage of the service fee covered by the user."},"redirectUrl":{"type":"string","description":"Custom URL where the user will be redirected after payment completion."},"redirectMode":{"type":"string","description":"Specifies how to open the redirect URL","enum":["PARENT","SELF"]},"expirationMinutes":{"minimum":0,"type":"integer","description":"Timeframe in which the deposit should succeed.","format":"int64"},"paymentRequestedAt":{"type":"integer","description":"UNIX seconds at which the payment was requested.","format":"int64"},"paymentInitiatedAt":{"type":"integer","description":"UNIX seconds at which the payment was initiated.","format":"int64"},"deposits":{"type":"array","items":{"$ref":"#/components/schemas/BasicDepositResponse"}}}},"BasicDepositResponse":{"required":["depositCurrency","depositReceivedAt","displayCurrency","fromAddress","id","network","onChainFee","status","toAddress","transactionId","userServiceFeeDistributionPercentage"],"type":"object","properties":{"id":{"type":"string","description":"Deposit UUID.","format":"uuid"},"transactionId":{"type":"string","description":"Blockchain transaction hash for the deposit."},"status":{"type":"string","description":"Status for this deposit only (not to be confused with the status for the entire payment).","enum":["COMPLIANCE_REVIEW","UNCONFIRMED","CONFIRMED","BLOCKED","UNPROCESSABLE"]},"fromAddress":{"type":"string","description":"Sending address of the transaction."},"toAddress":{"type":"string","description":"Receiving address of the transaction."},"onChainFee":{"type":"string","description":"Blockchain fee in `depositCurrency`, paid by the end user."},"depositCurrency":{"type":"string","description":"Cryptocurrency that has been deposited.","enum":["BCH","BNB","BTC","ETH","LINK","LTC","SOL","TRX","USDC","USDT","XLM","XRP"]},"network":{"type":"string","description":"Network on which the deposit was made.","enum":["BCH","BTC","LTC","XLM","XRP","ETH","BSC","SOL","TRX"]},"depositAmount":{"type":"string","description":"Amount deposited in `depositCurrency`."},"displayCurrency":{"type":"string","description":"Fiat currency.","enum":["AED","ARS","AUD","BDT","BGN","BRL","CAD","CHF","CLP","CNY","CZK","DKK","EUR","GBP","HKD","HRK","HUF","IDR","ILS","INR","ISK","JPY","KES","KRW","MXN","MYR","NOK","NZD","PEN","PHP","PLN","QAR","RON","SEK","SGD","THB","TRY","USD","VND","ZAR"]},"displayAmount":{"type":"string","description":"Amount deposited in `displayCurrency`."},"userServiceFeeDistributionPercentage":{"type":"string","description":"Percentage of the service fee covered by the user."},"depositReceivedAt":{"type":"integer","description":"UNIX seconds at which the deposit was received.","format":"int64"},"refund":{"$ref":"#/components/schemas/RefundResponse"}}},"RefundResponse":{"required":["amount","depositCurrency","displayAmount","displayCurrency","network","reason","status","type"],"type":"object","properties":{"type":{"type":"string","enum":["PARTIAL","FULL"]},"status":{"type":"string","enum":["PENDING","CONFIRMED","NON_REFUNDABLE"]},"reason":{"type":"string","enum":["OVERPAYMENT","CURRENCY_MISMATCH","FOLLOW_UP_DEPOSIT","RESTRICTED_CURRENCY","ILLICIT_DEPOSIT"]},"depositCurrency":{"type":"string","description":"Deposit cryptocurrency.","enum":["BCH","BNB","BTC","ETH","LINK","LTC","SOL","TRX","USDC","USDT","XLM","XRP"]},"network":{"type":"string","description":"Deposit network.","enum":["BCH","BTC","LTC","XLM","XRP","ETH","BSC","SOL","TRX"]},"amount":{"type":"string","description":"Refund amount in `depositCurrency`."},"fee":{"type":"string","description":"Blockchain fee in `depositCurrency`."},"displayCurrency":{"type":"string","description":"Fiat currency.","enum":["AED","ARS","AUD","BDT","BGN","BRL","CAD","CHF","CLP","CNY","CZK","DKK","EUR","GBP","HKD","HRK","HUF","IDR","ILS","INR","ISK","JPY","KES","KRW","MXN","MYR","NOK","NZD","PEN","PHP","PLN","QAR","RON","SEK","SGD","THB","TRY","USD","VND","ZAR"]},"displayAmount":{"type":"string","description":"Refund amount in `displayCurrency`."},"displayFee":{"type":"string","description":"Blockchain fee in `displayCurrency`."},"transactionId":{"type":"string","description":"Transaction hash of the refund."},"confirmedAt":{"type":"integer","description":"UNIX seconds at which the refund transaction was confirmed.","format":"int64"}}}}},"paths":{"/api/v1/payments/{paymentId}":{"get":{"summary":"Fetch payment by ID","description":"Fetch payment by ID. The payment ID is provided in the response of `POST /payments`.","operationId":"fetch-payment","parameters":[{"name":"paymentId","in":"path","description":"The payment ID to search by.","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Returns the payment with the specified ID.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BasicPaymentResponse"}}}}}}}}}
```


# Fetch deposit amounts metadata

Returns the minimum allowed deposit amount for each display currency or deposit currency.

{% openapi src="/files/zxRoJxQsHKVFESzo4yWK" path="/api/v1/payment/deposits/crypto/metadata" method="get" %}
[PS-OAS-9-17-added-deposit-metadata.json](https://3564521227-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FayvBVHqhLmJiaoA9GyTQ%2Fuploads%2Fgit-blob-e5b8434dcc9a7eb64536e08f7eaa77f5eeec889a%2FPS-OAS-9-17-added-deposit-metadata.json?alt=media\&token=2e74dab3-64a3-4d2e-8189-77dcfd983f8d)
{% endopenapi %}

Response example

```json
[
          "ETH" : {
                    "ETH" : {
                      "ETH" : "0.002177818914615500",
                      "EUR" : "5",
                      "GBP" : "4.20",
                      "USD" : "5.54"
                    },
                    "BSC" : {
                      "ETH" : "0.002177818914615500",
                      "EUR" : "5",
                      "GBP" : "4.20",
                      "USD" : "5.54"
                    }
                  },
           "BTC": {
                    "BTC": {
                      "BTC": "0.00009469",
                      "EUR": "5",
                      "GBP": "4.22",
                      "USD": "5.55"
                    }
                  }  
]
```


# Crypto withdrawals

In this section we'll go through the endpoints you'll need to execute crypto withdrawals.

By utilizing this functionality, you will be able to send payouts to your customers in cryptocurrencies without prior holding it, thus we remove the crypto volatility and complexity.

The Crypto withdrawals work on a Buy\&Send basis. The moment you initiate the withdrawal request, we'll purchase the given cryptocurrency on a mid-market rate and send it immediately to your customer.\
In addition we allow you to specify the amount in fiat currency to denominate the amount in a currency you are used to and only specify the cryptocurrency you wish to send.

{% hint style="warning" %}
Bear in mind that we don't cover on-chain fees for withdrawals. Please make sure to get familiarised with the on-chain fees per currency, before executing a withdrawal.\
The on-chain fees are deducted from the selected amount in the withdrawal request i.e. if you wish to withdraw 1 Litecoin, the recipient will receive 1 Litecoin minus the associated on-chain fee.
{% endhint %}

### Withdrawal statuses

| Status    | Description                                                                                                                                                                                                                                                 |
| --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| NEW       | We've received your Withdrawal request and it has passed our initial validations.                                                                                                                                                                           |
| PENDING   | The withdrawal request has passed the required steps i.e. we've bought the requested cryptocurrency and have deducted your balance. The transaction is to be broadcast on the blockchain network.                                                           |
| COMPLETED | The blockchain transaction has been validated on the blockchain, thus the recipient should have access to the funds. A [callback notification](/references/callbacks) will be sent to your designated endpoint.                                             |
| FAILED    | The withdrawal request has failed. We'll trigger a callback notification with a failure status and description.                                                                                                                                             |
| BLOCKED   | The withdrawal processing is aborted due to compliance reasons. This usually happens when the recipient address is marked as illicit (e.g. Darknet, Scam, etc.). A [callback notification](/references/callbacks) will be sent to your designated endpoint. |


# Request withdrawal metadata

{% openapi src="/files/WYpYA3WWmQlqmasohBZT" path="/api/v1/withdrawals/metadata" method="get" %}
[ES-OAS-8-12.json](https://3564521227-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FayvBVHqhLmJiaoA9GyTQ%2Fuploads%2Fgit-blob-ee9614a03bf3f6471683bb98ad2eae2cb7998563%2FES-OAS-8-12.json?alt=media\&token=5ac8d0ec-c0a3-4bc5-8295-69755924910c)
{% endopenapi %}

Response example

```json
{
        "ETH" : {
                    "ETH" : {
                      "fee" : "0.0032",
                      "minAmount" : "0.0125",
                      "maxAmount" : "116",
                      "precision" : 8,
                      "available" : true
                    },
                    "BSC" : {
                      "fee" : "0.00012",
                      "minAmount" : "0.00035",
                      "maxAmount" : "116",
                      "precision" : 8,
                      "available" : false
                    }
                  },
                  "USDC" : {
                    "ETH" : {
                      "fee" : "15",
                      "minAmount" : "62.5",
                      "maxAmount" : "280000",
                      "precision" : 6,
                      "available" : true
                    },
                    "BSC" : {
                      "fee" : "0.3",
                      "minAmount" : "12.5",
                      "maxAmount" : "280000",
                      "precision" : 8,
                      "available" : true
                    },
                    "TRX" : {
                      "fee" : "1",
                      "minAmount" : "12.5",
                      "maxAmount" : "280000",
                      "precision" : 6,
                      "available" : true
                    }
                  },
                  "LINK" : {
                    "ETH" : {
                      "fee" : "0.67",
                      "minAmount" : "1.675",
                      "maxAmount" : "19200",
                      "precision" : 8,
                      "available" : true
                    }
                  },
                  "XLM" : {
                    "XLM" : {
                      "fee" : "0.02",
                      "minAmount" : "31.25",
                      "maxAmount" : "2240000",
                      "precision" : 7,
                      "available" : true
                    }
                  },
                  "LTC" : {
                    "LTC" : {
                      "fee" : "0.001",
                      "minAmount" : "0.0025",
                      "maxAmount" : "4000",
                      "precision" : 8,
                      "available" : true
                    }
                  },
                  "BCH" : {
                    "BCH" : {
                      "fee" : "0.00064",
                      "minAmount" : "0.0025",
                      "maxAmount" : "1200",
                      "precision" : 8,
                      "available" : true
                    }
                  },
                  "BTC" : {
                    "BTC" : {
                      "fee" : "0.00034",
                      "minAmount" : "0.001875",
                      "maxAmount" : "7.2",
                      "precision" : 8,
                      "available" : true
                    }
                  },
                  "XRP" : {
                    "XRP" : {
                      "fee" : "0.2",
                      "minAmount" : "18.75",
                      "maxAmount" : "480000",
                      "precision" : 6,
                      "available" : true
                    }
                  }
 }
```


# Request crypto withdrawal

## Request crypto withdrawal

> An endpoint for initiating cryptocurrency withdrawals. The amount can be selected either in fiat or crypto which is defined by the \`targetAmountPolicy\`.\
> &#x20;When FIAT is selected as policy the resulting amount of the withdrawal in crypto will be calculated according to the fiat amount passed in targetAmount field. When CRYPTO is selected as policy the resulting amount of the withdrawal will be exactly the same as the amount passed in targetAmount field (subject to a negligible difference due to market conditions i.e. market step size)

```json
{"openapi":"3.0.1","info":{"title":"OpenAPI definition","version":"v0"},"servers":[{"url":"","description":"Generated server url"}],"security":[{"ApiKeyAuth":["CREATE_WITHDRAWAL"]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","description":"^FRX-API api-key=[^,]+,signature=[^,]+,timestamp=[\\d]+$","name":"Authorization","in":"header"}},"schemas":{"RequestCryptoWithdrawalRequest":{"required":["businessId","clientWithdrawalId","displayCurrency","recipientAddress","targetAmount","targetAmountPolicy","withdrawCurrency"],"type":"object","properties":{"businessId":{"type":"string","description":"ID of the business from which the withdrawal should be executed.","format":"uuid"},"clientWithdrawalId":{"type":"string","description":"Withdrawal identifier provided by the merchant."},"recipientAddress":{"type":"string","description":"Wallet address of the recipient."},"destinationTag":{"type":"string","description":"XLM/XRP destination tag."},"network":{"type":"string","description":"Specifies the network that should be used in this withdrawal.\n\nFor ERC20 Tokens you can choose between ETH, TRX and BSC as values for the network field.\nETH stands for Ethereum network. This will be set as the default value when none is provided.\nTRX stands for [TRON](https://www.binance.com/en/research/projects/tron) network. Before executing any withdrawals through this network, please make sure your address supports it.\nBSC stands for [Binance Smart Chain](https://www.bnbchain.org/en/bnb-smart-chain). Before executing any withdrawals through this network, please make sure your address supports it.\n\nThese are the following networks supported for each currency.\n\n| Currency | Network            |\n|----------|--------------------|\n| BTC      | BTC                |\n| BCH      | BCH                |\n| ETH      | ETH, BSC           |\n| LINK     | ETH                |\n| LTC      | LTC                |\n| SOL      | SOL                |\n| USDC     | ETH, BSC, SOL      |\n| USDT     | ETH, BSC, SOL, TRX |\n| XLM      | XLM                |\n| XRP      | XRP                |","enum":["BCH","BTC","LTC","XLM","XRP","ETH","BSC","SOL","TRX"]},"withdrawCurrency":{"type":"string","description":"Cryptocurrency that will be withdrawn.","enum":["BCH","BNB","BTC","ETH","LINK","LTC","SOL","TRX","USDC","USDT","XLM","XRP"]},"displayCurrency":{"type":"string","description":"Fiat currency.","enum":["AED","ARS","AUD","BDT","BGN","BRL","CAD","CHF","CLP","CNY","CZK","DKK","EUR","GBP","HKD","HRK","HUF","IDR","ILS","INR","ISK","JPY","KES","KRW","MXN","MYR","NOK","NZD","PEN","PHP","PLN","QAR","RON","SEK","SGD","THB","TRY","USD","VND","ZAR"]},"targetAmountPolicy":{"type":"string","description":"Specifies if the `targetAmount` will be requested in fiat or crypto.","enum":["CRYPTO","FIAT"]},"targetAmount":{"type":"string","description":"The requested amount to be withdrawn in fiat or crypto, depending on the provided `targetAmountPolicy`."},"withdrawalAccount":{"type":"string","description":"Deprecated. Use `settlementCurrency` instead. Specifies which balance account should be charged for the withdrawal.","deprecated":true,"default":"the organisation's default setting","enum":["CRYPTO","FIAT"]},"settlementCurrency":{"type":"string","description":"Specifies which currency balance should be charged for the withdrawal.","default":"the organisation's default setting","enum":["BTC","USDC","USDT","EUR","GBP","USD"]},"blockchainFeePaidBy":{"type":"string","description":"Specifies who pays the blockchain fee for the withdrawal.","default":"the business' default setting","enum":["USER","MERCHANT"]},"travelRuleBeneficiary":{"oneOf":[{"$ref":"#/components/schemas/LegalPersonBeneficiary"},{"$ref":"#/components/schemas/NaturalPersonBeneficiary"}]}}},"LegalPersonBeneficiary":{"required":["entityType","nameIdentifierType","nationalIdentifier","nationalIdentifierType","personalIdentityName"],"type":"object","allOf":[{"$ref":"#/components/schemas/TravelRuleBeneficiary"},{"type":"object","properties":{"nameIdentifierType":{"type":"string","description":"The type of the personal name.","enum":["LEGL","SHRT","TRAD"]}}}]},"TravelRuleBeneficiary":{"required":["entityType","nationalIdentifier","nationalIdentifierType","personalIdentityName"],"type":"object","properties":{"entityType":{"type":"string","description":"The type of the beneficiary.","enum":["LEGAL_PERSON","NATURAL_PERSON"]},"personalIdentityName":{"type":"string","description":"The personal name of the beneficiary."},"nationalIdentifier":{"type":"string","description":"The national identifier of the beneficiary."},"nationalIdentifierType":{"type":"string","description":"The type of the national identifier","enum":["ARNU","CCPT","DRLC","FIIN","IDCD","LEIX","MISC","RAID","SOCS","TXID"]}},"description":"Travel rule data about the beneficiary.","discriminator":{"propertyName":"entityType"},"oneOf":[{"$ref":"#/components/schemas/LegalPersonBeneficiary"},{"$ref":"#/components/schemas/NaturalPersonBeneficiary"}]},"NaturalPersonBeneficiary":{"required":["entityType","nameIdentifierType","nationalIdentifier","nationalIdentifierType","personalIdentityName"],"type":"object","allOf":[{"$ref":"#/components/schemas/TravelRuleBeneficiary"},{"type":"object","properties":{"nameIdentifierType":{"type":"string","description":"The type of the personal name.","enum":["ALIA","BIRT","MAID","LEGL","MISC"]}}}]},"WithdrawalInitiatedResponse":{"required":["clientWithdrawId","createdAt","displayCurrency","estimatedDisplayAmount","estimatedWithdrawAmount","initiatedBy","network","recipientAddress","settlementCurrency","settlementDeductedAmount","settlementServiceFee","status","uniformAmount","uniformCurrency","withdrawCurrency","withdrawId"],"type":"object","properties":{"withdrawId":{"type":"string","format":"uuid"},"clientWithdrawId":{"type":"string","description":"Withdrawal identifier provided by the merchant."},"recipientAddress":{"type":"string","description":"Wallet address of the recipient."},"recipientTag":{"type":"string","description":"XLM/XRP destination tag."},"network":{"type":"string","description":"Network on which this withdrawal was initiated.","enum":["BCH","BTC","LTC","XLM","XRP","ETH","BSC","SOL","TRX"]},"initiatedBy":{"type":"string","description":"Initiator of the withdrawal request. When initiated from the Dashboard, the dashboard user's email is stored. When initiated from API, the backend URL is stored."},"status":{"type":"string","enum":["PENDING","COMPLETED","FAILED","BLOCKED"]},"displayCurrency":{"type":"string","description":"Fiat currency.","enum":["AED","ARS","AUD","BDT","BGN","BRL","CAD","CHF","CLP","CNY","CZK","DKK","EUR","GBP","HKD","HRK","HUF","IDR","ILS","INR","ISK","JPY","KES","KRW","MXN","MYR","NOK","NZD","PEN","PHP","PLN","QAR","RON","SEK","SGD","THB","TRY","USD","VND","ZAR"]},"estimatedDisplayAmount":{"type":"string","description":"Amount in `displayCurrency` requested for this withdrawal."},"displayServiceFee":{"type":"string","description":"Amount debited for fees from the merchant's balance in `displayCurrency`."},"displayRateDepegLossAmount":{"type":"string","description":"Loss incurred from the pegging of withdrawal and display currencies market rate in `displayCurrency`."},"withdrawCurrency":{"type":"string","description":"Cryptocurrency to be withdrawn.","enum":["BCH","BNB","BTC","ETH","LINK","LTC","SOL","TRX","USDC","USDT","XLM","XRP"]},"estimatedWithdrawAmount":{"type":"string","description":"Estimated amount for this withdrawal. Can be different than `actualWithdrawAmount`."},"settlementCurrency":{"type":"string","description":"Currency in which the merchant's account was debited. Can be either fiat or cryptocurrency.","enum":["BTC","USDC","USDT","EUR","GBP","USD"]},"settlementDeductedAmount":{"type":"string","description":"Amount debited from the merchant's balance in `settlementCurrency`."},"settlementServiceFee":{"type":"string","description":"Amount debited for fees from the merchant's balance in `settlementCurrency`."},"settlementRateDepegLossAmount":{"type":"string","description":"Loss incurred from the pegging of withdrawal and display currencies market rate in `settlementCurrency`."},"uniformCurrency":{"type":"string","description":"Always EUR."},"uniformAmount":{"type":"string","description":"Amount in `uniformCurrency` requested for this withdrawal."},"uniformServiceFee":{"type":"string","description":"Amount debited for fees from the merchant's balance in `uniformCurrency`."},"uniformRateDepegLossAmount":{"type":"string","description":"Loss incurred from the pegging of withdrawal and display currencies market rate in `uniformCurrency`."},"createdAt":{"type":"integer","description":"UNIX seconds at which the withdrawal was requested.","format":"int64"}}},"IntegratorCryptoWithdrawalPendingApprovalResponse":{"required":["clientLabel","withdrawalId"],"type":"object","properties":{"withdrawalId":{"type":"string","description":"The ID of the withdrawal approval. Once approved, a withdrawal with the same ID is created.","format":"uuid"},"clientLabel":{"type":"string","description":"Withdrawal identifier provided by the merchant."}}}}},"paths":{"/api/v1/withdrawals":{"post":{"summary":"Request crypto withdrawal","description":"An endpoint for initiating cryptocurrency withdrawals. The amount can be selected either in fiat or crypto which is defined by the `targetAmountPolicy`.\n When FIAT is selected as policy the resulting amount of the withdrawal in crypto will be calculated according to the fiat amount passed in targetAmount field. When CRYPTO is selected as policy the resulting amount of the withdrawal will be exactly the same as the amount passed in targetAmount field (subject to a negligible difference due to market conditions i.e. market step size)","operationId":"request-crypto-withdrawal","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestCryptoWithdrawalRequest"}}},"required":true},"responses":{"201":{"description":"Withdrawal request created successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WithdrawalInitiatedResponse"}}}},"202":{"description":"Withdrawal requested and pending approval.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegratorCryptoWithdrawalPendingApprovalResponse"}}}}}}}}}
```


# Request crypto withdrawal approval status

{% openapi src="/files/zxRoJxQsHKVFESzo4yWK" path="/api/v1/payment/crypto-withdrawal-approvals/{withdrawalId}" method="get" %}
[PS-OAS-9-17-added-deposit-metadata.json](https://3564521227-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FayvBVHqhLmJiaoA9GyTQ%2Fuploads%2Fgit-blob-e5b8434dcc9a7eb64536e08f7eaa77f5eeec889a%2FPS-OAS-9-17-added-deposit-metadata.json?alt=media\&token=2e74dab3-64a3-4d2e-8189-77dcfd983f8d)
{% endopenapi %}


# Wallet Addresses

In this section we'll go through the endpoints related to crypto wallet addresses


# Validate address

{% openapi src="/files/r57Q7iV4u2aPnbVtGJlr" path="/api/v1/currency/{currency}/network/{network}/address/{address}/valid" method="get" %}
[WM-OAS-8-12-without-USDT.json](https://3564521227-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FayvBVHqhLmJiaoA9GyTQ%2Fuploads%2Fgit-blob-049f279ee19e8cff94a7ea6145a6cdc502339d1d%2FWM-OAS-8-12-without-USDT.json?alt=media\&token=bd628279-d97e-48d3-afad-ceee139aaffb)
{% endopenapi %}

{% openapi src="/files/r57Q7iV4u2aPnbVtGJlr" path="/api/v1/currency/{currency}/network/{network}/address/{address}/destinationTag/{destinationTag}/valid" method="get" %}
[WM-OAS-8-12-without-USDT.json](https://3564521227-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FayvBVHqhLmJiaoA9GyTQ%2Fuploads%2Fgit-blob-049f279ee19e8cff94a7ea6145a6cdc502339d1d%2FWM-OAS-8-12-without-USDT.json?alt=media\&token=bd628279-d97e-48d3-afad-ceee139aaffb)
{% endopenapi %}


# Businesses

At Axom you can create multiple businesses within one organisation unit. This allows merchants with multiple brands to manage easily all their payment needs within one environment.

You'll be able to pull relevant business data with your API credentials. You can create/find businesses in the[ dashboard](http://dashboard.axom.money/)


# Get business deposits

{% openapi src="/files/zxRoJxQsHKVFESzo4yWK" path="/api/v1/businesses/{businessId}/payments" method="get" %}
[PS-OAS-9-17-added-deposit-metadata.json](https://3564521227-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FayvBVHqhLmJiaoA9GyTQ%2Fuploads%2Fgit-blob-e5b8434dcc9a7eb64536e08f7eaa77f5eeec889a%2FPS-OAS-9-17-added-deposit-metadata.json?alt=media\&token=2e74dab3-64a3-4d2e-8189-77dcfd983f8d)
{% endopenapi %}


# Get business withdrawals

{% openapi src="/files/zxRoJxQsHKVFESzo4yWK" path="/api/v1/withdrawals" method="get" %}
[PS-OAS-9-17-added-deposit-metadata.json](https://3564521227-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FayvBVHqhLmJiaoA9GyTQ%2Fuploads%2Fgit-blob-e5b8434dcc9a7eb64536e08f7eaa77f5eeec889a%2FPS-OAS-9-17-added-deposit-metadata.json?alt=media\&token=2e74dab3-64a3-4d2e-8189-77dcfd983f8d)
{% endopenapi %}


# Get business balance

{% openapi src="/files/zxRoJxQsHKVFESzo4yWK" path="/api/v1/balances/{businessId}" method="get" %}
[PS-OAS-9-17-added-deposit-metadata.json](https://3564521227-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FayvBVHqhLmJiaoA9GyTQ%2Fuploads%2Fgit-blob-e5b8434dcc9a7eb64536e08f7eaa77f5eeec889a%2FPS-OAS-9-17-added-deposit-metadata.json?alt=media\&token=2e74dab3-64a3-4d2e-8189-77dcfd983f8d)
{% endopenapi %}


# Callbacks

Axom sends 3 types of callback notifications on your predefined endpoints that you can set when creating your business. This is a high-level overview of how and when you can use the callback notifications.

* `depositReceivedCallbackUrl` Receives callback when the deposit has been seen confirmed on the blockchain.
* `withdrawalCallbackUrl` Receives a callback when a withdrawal transaction was successfully broadcasted on the blockchain
* `withdrawalApprovalCallbackUrl` Receives callback when a withdrawal is approved or rejected from the dashboard by the assigned approvers.

### Signature

Axom sends every callback notification with Signature and Timestamp components in the request headers. This allows you to verify that each notification was sent by Axom, and not by a third party.

Axom generates signatures using RSA with SHA-512 and encodes the result with BASE64. The following function generates the signature: `Base64(RSA(PRIVATE_KEY, SHA512(requestBody.timestamp)))` Axom uses a unique private key for each environment, so please note to use the correct public key for each environment, for more information please visit [Environments](/environments).

The procedure for verifying a signature is as follows:

**Step 1**. Extract the values from the Signature and Timestamp headers.

**Step 2.** Prepare the payload string by concatenating the actual JSON payload (i.e., the request body), the character \`.\`, and the timestamp.

**Step 3**. Using the appropriate public key and your favorite cryptography library, you can ensure that the signatures match.\
\
Here's an example snippet in JS:

```javascript
const crypto = require("crypto");
const signature = ...;
const publicKey = ...;
const requestBody = ...;
const timestamp = ...;
const signaturePayload = `${requestBody}.${timestamp}`;
const verifier = crypto.createVerify('RSA-SHA512');
verifier.write(signaturePayload);
verifier.end();
const isVerified = verifier.verify(publicKey, signature, "base64");
console.log("Verified:", isVerified);
```

{% hint style="success" %}
Handling callbacks plays a significant role for smooth service operations. The purpose is to allow easy, fast and automated reconciliation with your systems to properly assign Deposits and Withdrawals of your users.
{% endhint %}


# Deposit received notification

Once the end-user sends funds from their wallet, transaction-specific events will be broadcasted on the blockchain. We listen for such blockchain events and will send them to you via an endpoint provided by you when creating your business through the [dashboard](http://dashboard.axom.money/).

A notification will be sent once the transaction is added in a block and there is 1 blockchain confirmation.

{% hint style="info" %}
If our initial attempt to send a notification fails, we will retry sending it every 2 minutes for up to 24 hours. Once the notification is successfully delivered, all retries will stop. If unsuccessful after 24 hours, retry attempts will cease.
{% endhint %}

> This callback notification is sent on your `depositReceivedCallbackUrl` endpoint.

```javascript
{
  "actualDepositAmount": 0.14840339,
  "actualDisplayAmount": 15,
  "clientPaymentId": "payment-example-3",
  "depositAddress": "ltc1q3t8r0gmypwzaqzjfck2un704rc4mepaanlc9ey",
  "depositCurrency": "LTC",
  "depositId": "5979560a-27f1-3558-95af-02d7f64a3f25",
  "displayCurrency": "EUR",
  "displayServiceFee": 0.08,
  "expectedDepositAmount": 0.14840339,
  "expectedDisplayAmount": 15,
  "network": "LTC",
  "expirationTime": 1611758532,
  "onChainFee": 0.00000426,
  "paymentId": "9c1bfc14-e658-446d-bba7-f7ea8eb21756",
  "paymentReceivedAt": 1611757019,
  "paymentRequestedAt": 1611756744,
  "rateType": "FIXED",
  "settlementAmount": 15,
  "settlementCurrency": "EUR",
  "settlementServiceFee": 0.08,
  "status": "CONFIRMED",
  "fromAddress": "ltc1qtwcue0py8jzjyecky45303xqlyy4sltw28kpg3",
  "transactionId": "49fd4601aeac8694f014b9d27714ccf639db427ea6ad3c0b831eb498497c80e0"
}
```

{% hint style="info" %}
The networks of some coins like `XRP` and `XLM` are extremely fast. It takes literally \~1 second to verify and confirm a transaction once it is broadcast on the network.
{% endhint %}

{% hint style="info" %}
On average a Bitcoin transaction to be included in a block requires \~15 minutes. By using Axom you'll be able to credit Bitcoin deposits in less than 10 seconds.
{% endhint %}

### Schema

| Parameter             | Type   | Description                                                                                                                                             |
| --------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| actualDepositAmount   | number | Actual amount deposited in cryptocurrency (`depositCurrency`) by the end-user. Can be different than the `expectedDepositAmount`                        |
| actualDisplayAmount   | number | Actual amount deposited in `displayCurrency` currency (e.g.`EUR, USD, GBP, TRY etc..)`Can be different than `expectedDisplayAmount`                     |
| clientPaymentId       | string | Unique payment identifier provided by the merchant in the request body of POST `/payments`                                                              |
| depositCurrency       | string | Cryptocurrency that has been deposited                                                                                                                  |
| settlementAmount      | number | Amount deposited in `settlementCurrency`                                                                                                                |
| settlementCurrency    | string | The currency in which the merchant's account was credited because of the deposit (can be either fiat or cryptocurrency)                                 |
| depositId             | string | Unique Axom deposit identifier `UUID`                                                                                                                   |
| onChainFee            | number | Blockchain cost for this deposit paid by the end-user                                                                                                   |
| depositAddress        | string | Your unique blockchain address supplied by Axom where the deposit was received.                                                                         |
| fromAddress           | string | The blockchain address from which the payment originated.                                                                                               |
| transactionId         | string | Unique blockchain transaction ID of the deposit                                                                                                         |
| displayCurrency       | string | The fiat currency chosen for display (denomination) purposes                                                                                            |
| expectedDepositAmount | string | Amount in cryptocurrency to be deposited to fulfil the required amount in `displayCurrency`                                                             |
| displayServiceFee     | number | Axom commission in `displayCurrency`for the concrete deposit                                                                                            |
| settlementServiceFee  | number | Axom commission in `settlementCurrency`for the concrete deposit                                                                                         |
| expectedDisplayAmount | number | Amount in `displayCurrency` requested for this payment                                                                                                  |
| network               | string | The network on which this deposit occurred                                                                                                              |
| expirationTime        | number | Timeframe at which the payment link against which this deposit was received expires                                                                     |
| paymentId             | string | Unique Axom payment identifier `UUID`                                                                                                                   |
| paymentReceivedAt     | number | Timestamp when the payment was received `UNIX`                                                                                                          |
| paymentRequestedAt    | number | Timestamp when the payment was requested `UNIX`                                                                                                         |
| status                | string | Can be only CONFIRMED.                                                                                                                                  |
| rateType              | string | Rate type of the deposit (FIXED or FLOATING). Depends on the payment rate type and the time frame within which the deposit was created by the end-user. |


# Withdrawal broadcast notification

Currently, we support 10 cryptocurrencies as a payout option. Once you initiate a withdrawal we need to take care of a couple of things before we successfully broadcast it to the network. Withdrawals take on average 10 minutes to be broadcast on the designated blockchain network. Upon completion, you'll receive a callback notification.

{% hint style="info" %}
If our initial attempt to send a notification fails, we will retry sending it every 2 minutes for up to 24 hours. Once the notification is successfully delivered, all retries will stop. If unsuccessful after 24 hours, retry attempts will cease.
{% endhint %}

> This callback notification is sent on your `withdrawalCallbackUrl` endpoint.

{% tabs %}
{% tab title="Success" %}

```javascript
{
    "status": "COMPLETED",
    "clientWithdrawalId": "Example-Withdrawal",
    "businessId": "19dee3c4-4dc9-4bcc-b8ed-92e3d4f256bd",
    "withdrawalId": "9b479a98-99ed-4bf9-87e0-4a05dbb012b6",
    "displayCurrency": "TRY",
    "withdrawCurrency": "XRP",
    "settlementCurrency": "USDT",
    "expectedDisplayAmount": "200.00000000",
    "actualDisplayAmount": "200.00000000",
    "estimatedWithdrawAmount": "119.63196400",
    "actualWithdrawAmount": "119.66467800",
    "deductedSettlementAmount": "35.28559158",
    "withdrawFee": "0.25000000",
    "displayFee": "0.42000000",
    "toTxAddress": "rLsVuk4hgmGUtjQKj1ybpg1etnFodZ4CJ?dt=140",
    "transactionId": "1AABB14A963442246EC6252B6FDCC72223544B9BBB9E28C431DF2F1C B3545DB5",
    "txAddressOwner": {
        "name": "Coinbase",
        "category": "Exchange"
  }
}
```

{% endtab %}

{% tab title="Failure" %}

```javascript
{
  "status": "FAILED",
  "clientWithdrawalId": "Example-Withdrawal",
  "businessId": "4e1a3d4a-c8c4-48c6-8a26-d3520a543521",
  "withdrawalId": "77a01c0e-7983-4acd-83bf-0d43b29bdee6",
  "displayCurrency": "USD",
  "withdrawCurrency": "BTC",
  "settlementCurrency": "USDT",
  "expectedDisplayAmount": "60.00",
  "estimatedWithdrawAmount": "0.00113791",
  "toTxAddress": "bc1qu7fvyhtcyd7fjueup7azqrqakw5fxkfex7me92",
  "txAddressOwner": {
    "name": "Darknet Shop",
    "category": "Darknet"
  }
}
```

{% endtab %}

{% tab title="Blocked" %}

```json
{
  "status": "BLOCKED",
  "businessId": "407710f4-de33-454b-a44f-dda322q172a3",
  "displayFee": null,
  "toTxAddress": "ltc1qsv25klhsr4df87xqhe6rz0jyzark04khveuejq",
  "withdrawFee": null,
  "withdrawalId": "c76b2dca-1eff-37af-8646-3f5001165f9a",
  "transactionId": null,
  "txAddressOwner": {
    "name": "Unknown",
    "category": "Unknown"
  },
  "displayCurrency": "EUR",
  "withdrawCurrency": "LTC",
  "clientWithdrawalId": "client-withdrawal-1",
  "settlementCurrency": "EUR",
  "actualDisplayAmount": null,
  "actualWithdrawAmount": null,
  "settlementServiceFee": null,
  "expectedDisplayAmount": "20.07",
  "estimatedWithdrawAmount": "0.17659901",
  "deductedSettlementAmount": null,
  "displayRateDepegLossAmount": null,
  "settlementRateDepegLossAmount": null,
  "settlementMerchantTransactionFee": null
}
```

{% endtab %}
{% endtabs %}

| Parameter               | Type                                               | Description                                                                                                                         |
| ----------------------- | -------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| status                  | string <mark style="color:red;">\[required]</mark> | One of`COMPLETED,` `FAILED` or `BLOCKED`                                                                                            |
| clientWithdrawalId      | string <mark style="color:red;">\[required]</mark> | Unique withdrawal identifier provided by the merchant in the request body of POST `/withdrawals`                                    |
| businessId              | string <mark style="color:red;">\[required]</mark> | Unique Axom business identifier `UUID`                                                                                              |
| withdrawalId            | string <mark style="color:red;">\[required]</mark> | Unique Axom withdrawal identifier `UUID`                                                                                            |
| displayCurrency         | string <mark style="color:red;">\[required]</mark> | The fiat currency chosen for display (denomination) purposes                                                                        |
| withdrawCurrency        | string <mark style="color:red;">\[required]</mark> | Cryptocurrency to be withdrawn                                                                                                      |
| settlementCurrency      | string <mark style="color:red;">\[required]</mark> | The currency in which the merchant's account was debited because of the withdrawal (can be either fiat or cryptocurrency)           |
| expectedDisplayAmount   | number <mark style="color:red;">\[required]</mark> | Amount in `displayCurrency` requested for this payment                                                                              |
| actualDisplayAmount     | number <mark style="color:red;">\[optional]</mark> | Actual amount withdrawn in `displayCurrency` currency (e.g.`EUR, USD, GBP, TRY etc..)`Can be different than `expectedDisplayAmount` |
| estimatedWithdrawAmount | number <mark style="color:red;">\[required]</mark> | Estimated amount for this withdrawal. Can be different than `actualWithdrawAmount`                                                  |
| actualWithdrawAmount    | number <mark style="color:red;">\[optional]</mark> | Actual amount withdrawn in `withdrawCurrency`Can be different than `estimatedWithdrawAmount`                                        |
| deducedSettlementAmount | number <mark style="color:red;">\[optional]</mark> | Amount debited from the merchant's balance in `settlementCurrency`                                                                  |
| withdrawFee             | number <mark style="color:red;">\[optional]</mark> | Blockchain cost for this withdrawal in `withdrawCurrency`                                                                           |
| displayFee              | number <mark style="color:red;">\[optional]</mark> | Blockchain cost for this withdrawal in `displayCurrency`                                                                            |
| toTxAddress             | string <mark style="color:red;">\[required]</mark> | The address to which the `actualWithdrawAmount`was sent                                                                             |
| transactionId           | string <mark style="color:red;">\[optional]</mark> | Unique blockchain transaction ID of the withdrawal                                                                                  |
| txAddressOwner          | object <mark style="color:red;">\[required]</mark> | Address AML screening results                                                                                                       |
| name                    | string <mark style="color:red;">\[required]</mark> | Address owning entity name                                                                                                          |
| category                | string <mark style="color:red;">\[required]</mark> | Address owning entity category                                                                                                      |


# Withdrawal approved/rejected notification

When a given withdrawal that was pending approval is either approved or rejected we will send out a notification .

> This callback notification is sent on your `withdrawalApprovalCallbackUrl` endpoint.

{% tabs %}
{% tab title="Approved" %}

```javascript
{
   "withdrawalId": "557d2a15-0eb2-47c6-8fec-7fa7d0e833f7",
   "clientWithdrawalId": "crypto-withdrawal-1",
   "status": "APPROVED"
}
```

{% endtab %}

{% tab title="Rejected" %}

```javascript
{
   "withdrawalId": "557d2a15-0eb2-47c6-8fec-7fa7d0e833f7",
   "clientWithdrawalId": "crypto-withdrawal-1",
   "status": "REJECTED"
}
```

{% endtab %}
{% endtabs %}

### Schema

| withdrawalId       | string <mark style="color:red;">\[required]</mark> | Unique withdrawal identifier `UUID`                                                              |
| ------------------ | -------------------------------------------------- | ------------------------------------------------------------------------------------------------ |
| clientWithdrawalId | string <mark style="color:red;">\[required]</mark> | Unique withdrawal identifier provided by the merchant in the request body of POST `/withdrawals` |
| status             | string <mark style="color:red;">\[required]</mark> | One of `APPROVED`, `PENDING,REJECTED` or `SKIPPED`                                               |


# Currencies & Fees

Currently we support 10 cryptocurrencies and 30+ fiat currencies for pairing. The following endpoints will help you check if a specific cryptocurrency is available for withdrawal and fetch the accompanied withdrawal fees bound to it. We pass on the fees we receive from our liquidity network.

In addition you will be able to fetch the most recent exchange rates for all cryptocurrencies paired with fiat currencies and all fiat exchange rates.

{% hint style="info" %}
Fiat exchange rates are updated every 30 minutes
{% endhint %}

{% hint style="info" %}
Cryptocurrency exchange rates are real-time and are derived by our network of liquidity providers. We make sure to always get you the best exchange rate across our liquidity network.
{% endhint %}


# Get all currencies

{% openapi src="/files/zxRoJxQsHKVFESzo4yWK" path="/api/v1/payment/currencies" method="get" %}
[PS-OAS-9-17-added-deposit-metadata.json](https://3564521227-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FayvBVHqhLmJiaoA9GyTQ%2Fuploads%2Fgit-blob-e5b8434dcc9a7eb64536e08f7eaa77f5eeec889a%2FPS-OAS-9-17-added-deposit-metadata.json?alt=media\&token=2e74dab3-64a3-4d2e-8189-77dcfd983f8d)
{% endopenapi %}

Response example

```json
{
                  "abbreviation" : "XLM",
                  "name" : "Stellar Lumens",
                  "model" : "ACCOUNT",
                  "supportedNetworks" : [ "XLM" ],
                  "defaultNetwork" : "XLM",
                  "isFiat" : false,
                  "isERC20" : false
                }, {
                  "abbreviation" : "CZK",
                  "name" : "Czech Koruna",
                  "model" : "FIAT",
                  "supportedNetworks" : null,
                  "defaultNetwork" : null,
                  "isFiat" : true,
                  "isERC20" : false
                }, {
                  "abbreviation" : "CAD",
                  "name" : "Canadian Dollar",
                  "model" : "FIAT",
                  "supportedNetworks" : null,
                  "defaultNetwork" : null,
                  "isFiat" : true,
                  "isERC20" : false
                }, {
                  "abbreviation" : "MYR",
                  "name" : "Malaysian Ringgit",
                  "model" : "FIAT",
                  "supportedNetworks" : null,
                  "defaultNetwork" : null,
                  "isFiat" : true,
                  "isERC20" : false
                }, {
                  "abbreviation" : "PEN",
                  "name" : "Peruvian sol",
                  "model" : "FIAT",
                  "supportedNetworks" : null,
                  "defaultNetwork" : null,
                  "isFiat" : true,
                  "isERC20" : false
                }, {
                  "abbreviation" : "CHF",
                  "name" : "Swiss Franc",
                  "model" : "FIAT",
                  "supportedNetworks" : null,
                  "defaultNetwork" : null,
                  "isFiat" : true,
                  "isERC20" : false
                }, {
                  "abbreviation" : "CNY",
                  "name" : "Chinese Yuan",
                  "model" : "FIAT",
                  "supportedNetworks" : null,
                  "defaultNetwork" : null,
                  "isFiat" : true,
                  "isERC20" : false
                }, {
                  "abbreviation" : "HUF",
                  "name" : "Hungarian Forint",
                  "model" : "FIAT",
                  "supportedNetworks" : null,
                  "defaultNetwork" : null,
                  "isFiat" : true,
                  "isERC20" : false
                }, {
                  "abbreviation" : "NGN",
                  "name" : "Nigerian Naira",
                  "model" : "FIAT",
                  "supportedNetworks" : null,
                  "defaultNetwork" : null,
                  "isFiat" : true,
                  "isERC20" : false
                }, {
                  "abbreviation" : "TRY",
                  "name" : "Turkish Lira",
                  "model" : "FIAT",
                  "supportedNetworks" : null,
                  "defaultNetwork" : null,
                  "isFiat" : true,
                  "isERC20" : false
                }, {
                  "abbreviation" : "RUB",
                  "name" : "Russian Ruble",
                  "model" : "FIAT",
                  "supportedNetworks" : null,
                  "defaultNetwork" : null,
                  "isFiat" : true,
                  "isERC20" : false
                }, {
                  "abbreviation" : "BDT",
                  "name" : "Bangladeshi Taka",
                  "model" : "FIAT",
                  "supportedNetworks" : null,
                  "defaultNetwork" : null,
                  "isFiat" : true,
                  "isERC20" : false
                }, {
                  "abbreviation" : "BGN",
                  "name" : "Bulgarian Lev",
                  "model" : "FIAT",
                  "supportedNetworks" : null,
                  "defaultNetwork" : null,
                  "isFiat" : true,
                  "isERC20" : false
                }, {
                  "abbreviation" : "BCH",
                  "name" : "Bitcoin Cash",
                  "model" : "UTXO",
                  "supportedNetworks" : [ "BCH" ],
                  "defaultNetwork" : "BCH",
                  "isFiat" : false,
                  "isERC20" : false
                }, {
                  "abbreviation" : "EUR",
                  "name" : "Euro",
                  "model" : "FIAT",
                  "supportedNetworks" : null,
                  "defaultNetwork" : null,
                  "isFiat" : true,
                  "isERC20" : false
                }, {
                  "abbreviation" : "ISK",
                  "name" : "Icelandic Krona",
                  "model" : "FIAT",
                  "supportedNetworks" : null,
                  "defaultNetwork" : null,
                  "isFiat" : true,
                  "isERC20" : false
                }, {
                  "abbreviation" : "BTC",
                  "name" : "Bitcoin",
                  "model" : "UTXO",
                  "supportedNetworks" : [ "BTC" ],
                  "defaultNetwork" : "BTC",
                  "isFiat" : false,
                  "isERC20" : false
                }, {
                  "abbreviation" : "ILS",
                  "name" : "Israeli New Shekel",
                  "model" : "FIAT",
                  "supportedNetworks" : null,
                  "defaultNetwork" : null,
                  "isFiat" : true,
                  "isERC20" : false
                }, {
                  "abbreviation" : "DKK",
                  "name" : "Danish Krone",
                  "model" : "FIAT",
                  "supportedNetworks" : null,
                  "defaultNetwork" : null,
                  "isFiat" : true,
                  "isERC20" : false
                }, {
                  "abbreviation" : "SGD",
                  "name" : "Singapore Dollar",
                  "model" : "FIAT",
                  "supportedNetworks" : null,
                  "defaultNetwork" : null,
                  "isFiat" : true,
                  "isERC20" : false
                }, {
                  "abbreviation" : "PHP",
                  "name" : "Philippine peso",
                  "model" : "FIAT",
                  "supportedNetworks" : null,
                  "defaultNetwork" : null,
                  "isFiat" : true,
                  "isERC20" : false
                }, {
                  "abbreviation" : "MXN",
                  "name" : "Mexican Peso",
                  "model" : "FIAT",
                  "supportedNetworks" : null,
                  "defaultNetwork" : null,
                  "isFiat" : true,
                  "isERC20" : false
                }, {
                  "abbreviation" : "LINK",
                  "name" : "Chainlink",
                  "model" : "ACCOUNT",
                  "supportedNetworks" : [ "ETH" ],
                  "defaultNetwork" : "ETH",
                  "isFiat" : false,
                  "isERC20" : true
                }, {
                  "abbreviation" : "ARS",
                  "name" : "Argentine Peso",
                  "model" : "FIAT",
                  "supportedNetworks" : null,
                  "defaultNetwork" : null,
                  "isFiat" : true,
                  "isERC20" : false
                }, {
                  "abbreviation" : "AED",
                  "name" : "United Arab Emirates Dirham",
                  "model" : "FIAT",
                  "supportedNetworks" : null,
                  "defaultNetwork" : null,
                  "isFiat" : true,
                  "isERC20" : false
                }, {
                  "abbreviation" : "RON",
                  "name" : "Romanian Leu",
                  "model" : "FIAT",
                  "supportedNetworks" : null,
                  "defaultNetwork" : null,
                  "isFiat" : true,
                  "isERC20" : false
                }, {
                  "abbreviation" : "SOL",
                  "name" : "Solana",
                  "model" : "ACCOUNT",
                  "supportedNetworks" : [ "SOL" ],
                  "defaultNetwork" : "SOL",
                  "isFiat" : false,
                  "isERC20" : false
                }, {
                  "abbreviation" : "USDC",
                  "name" : "USD Coin",
                  "model" : "ACCOUNT",
                  "supportedNetworks" : [ "ETH", "BSC", "SOL" ],
                  "defaultNetwork" : "ETH",
                  "isFiat" : false,
                  "isERC20" : true
                }, {
                  "abbreviation" : "NZD",
                  "name" : "New Zealand Dollar",
                  "model" : "FIAT",
                  "supportedNetworks" : null,
                  "defaultNetwork" : null,
                  "isFiat" : true,
                  "isERC20" : false
                }, {
                  "abbreviation" : "NOK",
                  "name" : "Norwegian Krone",
                  "model" : "FIAT",
                  "supportedNetworks" : null,
                  "defaultNetwork" : null,
                  "isFiat" : true,
                  "isERC20" : false
                }, {
                  "abbreviation" : "KES",
                  "name" : "Kenyan Shilling",
                  "model" : "FIAT",
                  "supportedNetworks" : null,
                  "defaultNetwork" : null,
                  "isFiat" : true,
                  "isERC20" : false
                }, {
                  "abbreviation" : "GBP",
                  "name" : "Pound Sterling",
                  "model" : "FIAT",
                  "supportedNetworks" : null,
                  "defaultNetwork" : null,
                  "isFiat" : true,
                  "isERC20" : false
                }, {
                  "abbreviation" : "IDR",
                  "name" : "Indonesian Rupiah",
                  "model" : "FIAT",
                  "supportedNetworks" : null,
                  "defaultNetwork" : null,
                  "isFiat" : true,
                  "isERC20" : false
                }, {
                  "abbreviation" : "LTC",
                  "name" : "Litecoin",
                  "model" : "UTXO",
                  "supportedNetworks" : [ "LTC" ],
                  "defaultNetwork" : "LTC",
                  "isFiat" : false,
                  "isERC20" : false
                }, {
                  "abbreviation" : "THB",
                  "name" : "Thai Baht",
                  "model" : "FIAT",
                  "supportedNetworks" : null,
                  "defaultNetwork" : null,
                  "isFiat" : true,
                  "isERC20" : false
                }, {
                  "abbreviation" : "JPY",
                  "name" : "Japanese Yen",
                  "model" : "FIAT",
                  "supportedNetworks" : null,
                  "defaultNetwork" : null,
                  "isFiat" : true,
                  "isERC20" : false
                }, {
                  "abbreviation" : "CLP",
                  "name" : "Chilean Peso",
                  "model" : "FIAT",
                  "supportedNetworks" : null,
                  "defaultNetwork" : null,
                  "isFiat" : true,
                  "isERC20" : false
                }, {
                  "abbreviation" : "QAR",
                  "name" : "Qatari Riyal",
                  "model" : "FIAT",
                  "supportedNetworks" : null,
                  "defaultNetwork" : null,
                  "isFiat" : true,
                  "isERC20" : false
                }, {
                  "abbreviation" : "HKD",
                  "name" : "Hong Kong Dollar",
                  "model" : "FIAT",
                  "supportedNetworks" : null,
                  "defaultNetwork" : null,
                  "isFiat" : true,
                  "isERC20" : false
                }, {
                  "abbreviation" : "AUD",
                  "name" : "Australian Dollar",
                  "model" : "FIAT",
                  "supportedNetworks" : null,
                  "defaultNetwork" : null,
                  "isFiat" : true,
                  "isERC20" : false
                }, {
                  "abbreviation" : "KRW",
                  "name" : "South Korean won",
                  "model" : "FIAT",
                  "supportedNetworks" : null,
                  "defaultNetwork" : null,
                  "isFiat" : true,
                  "isERC20" : false
                }, {
                  "abbreviation" : "SEK",
                  "name" : "Swedish Krona",
                  "model" : "FIAT",
                  "supportedNetworks" : null,
                  "defaultNetwork" : null,
                  "isFiat" : true,
                  "isERC20" : false
                }, {
                  "abbreviation" : "PLN",
                  "name" : "Poland zloty",
                  "model" : "FIAT",
                  "supportedNetworks" : null,
                  "defaultNetwork" : null,
                  "isFiat" : true,
                  "isERC20" : false
                }, {
                  "abbreviation" : "ETH",
                  "name" : "Ethereum",
                  "model" : "ACCOUNT",
                  "supportedNetworks" : [ "ETH", "BSC" ],
                  "defaultNetwork" : "ETH",
                  "isFiat" : false,
                  "isERC20" : true
                }, {
                  "abbreviation" : "ZAR",
                  "name" : "South African Rand",
                  "model" : "FIAT",
                  "supportedNetworks" : null,
                  "defaultNetwork" : null,
                  "isFiat" : true,
                  "isERC20" : false
                }, {
                  "abbreviation" : "HRK",
                  "name" : "Croatian kuna",
                  "model" : "FIAT",
                  "supportedNetworks" : null,
                  "defaultNetwork" : null,
                  "isFiat" : true,
                  "isERC20" : false
                }, {
                  "abbreviation" : "VND",
                  "name" : "Vietnamese dong",
                  "model" : "FIAT",
                  "supportedNetworks" : null,
                  "defaultNetwork" : null,
                  "isFiat" : true,
                  "isERC20" : false
                }, {
                  "abbreviation" : "BRL",
                  "name" : "Brazilian Real",
                  "model" : "FIAT",
                  "supportedNetworks" : null,
                  "defaultNetwork" : null,
                  "isFiat" : true,
                  "isERC20" : false
                }, {
                  "abbreviation" : "XRP",
                  "name" : "Ripple",
                  "model" : "ACCOUNT",
                  "supportedNetworks" : [ "XRP" ],
                  "defaultNetwork" : "XRP",
                  "isFiat" : false,
                  "isERC20" : false
                }, {
                  "abbreviation" : "INR",
                  "name" : "Indian Rupee",
                  "model" : "FIAT",
                  "supportedNetworks" : null,
                  "defaultNetwork" : null,
                  "isFiat" : true,
                  "isERC20" : false
                }, {
                  "abbreviation" : "USD",
                  "name" : "United States Dollar",
                  "model" : "FIAT",
                  "supportedNetworks" : null,
                  "defaultNetwork" : null,
                  "isFiat" : true,
                  "isERC20" : false
} 
```


# Get exchange rates \[crypto to fiat]

{% openapi src="/files/WYpYA3WWmQlqmasohBZT" path="/api/v1/exchange/rates/deposit" method="get" %}
[ES-OAS-8-12.json](https://3564521227-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FayvBVHqhLmJiaoA9GyTQ%2Fuploads%2Fgit-blob-ee9614a03bf3f6471683bb98ad2eae2cb7998563%2FES-OAS-8-12.json?alt=media\&token=5ac8d0ec-c0a3-4bc5-8295-69755924910c)
{% endopenapi %}

Response example

```json
{
	"ETH": {
		"EUR": "1467.8",
		"USD": "1741.1"
	},
	"BTC": {
		"EUR": "42798",
		"USD": "50770"
	},
	"XRP": {
		"EUR": "0.40227",
		"USD": "0.4772"
	}
}
```


# Get exchange rates \[fiat to fiat]

{% openapi src="/files/WYpYA3WWmQlqmasohBZT" path="/api/v1/exchange/rates/fiat" method="get" %}
[ES-OAS-8-12.json](https://3564521227-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FayvBVHqhLmJiaoA9GyTQ%2Fuploads%2Fgit-blob-ee9614a03bf3f6471683bb98ad2eae2cb7998563%2FES-OAS-8-12.json?alt=media\&token=5ac8d0ec-c0a3-4bc5-8295-69755924910c)
{% endopenapi %}

Response example

```json
{
	"USD": {
		"USD": "1",
		"CHF": "0.935074"
	},
	"EUR": {
		"USD": "1.186102",
		"CHF": "1.109093"
	},
	"GBP": {
		"USD": "1.38394",
		"CHF": "1.294086"
	}
}
```


# Get exchange rates \[any currency to any currency]

{% openapi src="/files/WYpYA3WWmQlqmasohBZT" path="/api/v1/exchange/rates/market" method="get" %}
[ES-OAS-8-12.json](https://3564521227-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FayvBVHqhLmJiaoA9GyTQ%2Fuploads%2Fgit-blob-ee9614a03bf3f6471683bb98ad2eae2cb7998563%2FES-OAS-8-12.json?alt=media\&token=5ac8d0ec-c0a3-4bc5-8295-69755924910c)
{% endopenapi %}

Response example

```json
{
   "ETH":{
      "EUR":"2258.7",
      "USD":"2386.15"
   },
   "BTC":{
      "EUR":"30086.5",
      "USD":"31784"
   }
}
```


