# Calculation of the withdrawal amount

**POST** `https://api.heleket.com/v1/payout/calc`

## Request

### Body parameters (response\_parameters)

| Name | Parameter type | Default value | Definition |
| --- | --- | --- | --- |
| amount (required) | string |  | Payout amount |
| address (required) | string |  | The address of the wallet to which the withdrawal will be made |
| currency (required) | string |  | Currency code for the payout<br>If Currency if fiat, the _to\_currency parameter is required_.|
| to\_currency | string |  | Cryptocurrency code in which the payout will be made. It is used when the _currency_ parameter is fiat. See examples below |
| network | string |  | Blockchain network code<br>Not required when the _currency/to\_currency_ is a cryptocurrency and has only one network, for example BTC|
| is\_subtract (required) | boolean |  | Defines where the withdrawal fee will be deducted<br>true - from your balance<br>false - from payout amount, the payout amount will be decreased|
| course\_source | string<br>Available values<br>• Binance<br>• BinanceP2p<br>• Exmo<br>• Kucoin| Value from merchant's settings | The service from which the exchange rates are taken for conversion in the invoice.<br>The parameter is applied only if the currency is fiat, otherwise the default value is taken from the merchant's settings.|
| priority | string<br>min: 4<br>max: 11<br>Available values<br>• recommended<br>• economy<br>• high<br>• highest| recommended | The parameter for selecting the withdrawal priority. The cost of the withdrawal fee depends on the selected parameter.<br>This parameter is applied only in case of using the BTC, ETH, POLYGON, and BSC networks.|

### Request example

```
curl https://api.heleket.com/v1/payout/calc \
-X POST \
-H 'merchant: 8b03432e-385b-4670-8d06-064591096795' \
-H 'sign: fe99035f86fa436181717b302b95bacff1' \
-H 'Content-Type: application/json' \
-d '{
    "amount": "5",
    "address": "TDD97yguPESTpcrJMqU6h2ozZbibv4Vaqm",
    "currency": "USDT",
    "network": "TRON",
    "is_subtract": "1"
}'
```

## Response

### Response parameters

| Name | Definition |
| --- | --- |
| commission | Heleket commission amount |
| merchant\_amount | The amount to be removed from the merchant's balance |
| payout\_amount | The amount that was sent to the address. |

### Response example

```
{
  "state": 0,
  "result": {
      "commission":"0.00000000",
      "merchant_amount":"1.00000000",
      "payout_amount":"1.0"
  }
}
```

## Possible errors

### Validation errors

code : 422

example responses:

```
{
"state": 1,
"errors": {
"amount": ["validation.required"]
}
}
```

If the payout is blocked on your merchant or user, you will receive this error message. This happens, for example, when you change your password and payouts are blocked for 24 hours.

```
{
"state": 1,
"message": "You are forbidden"
}
```

If we don’t support the currency code you provided in currency parameter, you will receive this error message:

```
{
"state": 1,
"message": "The currency was not found"
}
```

If we can not find the service for executing payout, you will receive this error message. You have to make sure that the cryptocurrency is supported. Check the correctness of the entered values in. currency, network, from\_currency, to\_currency:

```
{
"state": 1,
"message": "The service was not found"
}
```

If the withdrawal amount is too small, you will receive this error message:

```
{
"state": 1,
"message": "The withdrawal amount is too small"
}
```

If you will not have an active merchant wallet with a cryptocurrency of the payout, you will receive this error:

```
{
"state": 1,
"message": "Wallet not found"
}
```

If the payout amount, including all commissions, is more than your balance, you will receive this error message:

```
{
"state": 1,
"message": "Not enough funds"
}
```

If we don’t find the payout service of the currency that was passed in to\_currency parameter, you will receive this error message:

```
{
"state": 1,
"message": "Not found service to_currency"
}
```

If accidentally something happens when swapping to to\_currency, you will receive this error message:

```
{
"state": 1,
"message": "Error convert to_currency"
}
```

If the payout amount is less than the minimum supported amount for cryptocurrency, you will receive this error message:

```
{
"state": 1,
"message": "Minimum amount 0.5 USDT"
}
```

If the payout amount is greater than the maximum supported amount for cryptocurrency, you will receive this error message:

```
{
"state": 1,
"message": "Maximum amount 10000000 USDT"
}
```

If you don’t have enough funds to make a payout, you will receive this error message:

```
{
"state": 1,
"message": "Not enough funds"
}
```

If you don't have enough funds to swap the payout amount from from\_currency, you will receive this error message:

```
{
"state": 1,
"message": "Not enough balance for convert USDT to LTC"
}
```

If technical work occurs and the payout is temporarily unavailable, you will receive this error message

```
{
"state": 1,
"message": "The terminal was not found"
}
```

### Internal server error

code : 500

example responses:

```
{
	"message": "Server error, #1",
	"code": 500,
	"error": null
}
```
