Payout methods

Payout object

amount string

Exact amount of the payout, in the wallet currency.

exp number

Currency precision (number of digits after the decimal separator).

address string

The blockchain address of the receiver wallet. If the payout for XRP is made to an x-address, entering a tag in the tag field is not necessary. If such a payout is made to a normal address, a user should enter the destination account address in combination with a destination tag.

tag_type string

Type of the tag or memo, applicable for XLM. Possible values:

  • 1 — a 64-bit unsigned integer

  • 2 — a string up to 28-bytes long

tag string

Destination tag for XRP, XLM, BNB.

destination object

All possible options to specify the receiver address; contains three string fields: address — actual address, address_type — type of the address, tag — destination tag (if required) for XRP, XLM, BNB.

tracking_id string or number

The identifier of the payment in the external system.

confirmations_needed number

Client-provided number of confirmations needed for sending an additional callback.

fee_amount string

The blockchain fee amount.

is_fee_included boolean

If true, the fee is included in the payment amount, the remaining part is credited to the receiver’s account. If false, the fee is additionally debited from the wallet. For TRX, XRP, BNB, XLM, ETH and token currencies, fee cannot be included in the amount.

status number

If a payout should be approved by the wallet owner, the following values are possible:

  • 1 — waiting for the approval

  • 2 — approved

callback_url string

URL for callback notifications.

currency object

The invoice payment currency.

wallet object

The wallet with which the transaction is associated. Contains the wallet id.

PAYOUT OBJECT
{
  "data": {
    "type": "payout",
    "id": "21",
    "attributes": {
      "amount": "0.00000010",
      "exp": 8,
      "address": "2N3Ac2cZzRVoqfJGu1bFaAebq3izTgr1WLv",
      "tag_type": null,
      "tag": null,
      "destination": {
        "address_type": "legacy",
        "address": "2N3Ac2cZzRVoqfJGu1bFaAebq3izTgr1WLv"
      },
      "tracking_id": null,
      "confirmations_needed": null,
      "fee_amount": "0.00000329",
      "is_fee_included": false,
      "status": 2,
      "callback_url": null
    },
    "relationships": {
      "currency": {
        "data": {
          "type": "currency",
          "id": "1000"
        }
      },
      "wallet": {
        "data": {
          "type": "wallet",
          "id": "13"
        }
      }
    },
    "links": {
      "self": "https://api.b2binpay.com/payout/21"
    }
  }
}

Get payout

Request

id string

The payout identifier.

Filtering by any object parameters can be applied according to the JSON API Specification.

GET[base]/payout/{id}

$ curl --request GET \
       --url https://api.b2binpay.com/payout/ \
       --header 'authorization: Bearer eyJ0eXAiOiJKV1QiLC...' \
       --header 'content-type: application/vnd.api+json'
import requests

url = 'https://api.b2binpay.com/payout/'

headers = {
    'authorization': '<Change to your access token>',
    'content-type': 'application/vnd.api+json',
}

requests.get(url, headers=headers)
<?php

use GuzzleHttp\Client;
use GuzzleHttp\Exception\RequestException;

$client = new GuzzleHttp\Client();
try {
    $res = $client->get('https://api.b2binpay.com/payout/', [
        'headers' => [
            'Authorization' => 'Bearer <Change to your access token>',
            'Content-Type' => 'application/vnd.api+json',
        ],
    ]);
    echo $res->getBody();
} catch (RequestException $e) {}

Response

In case of a successful response, a payout object or an array of objects (if id was not specified) is returned.

HTTP status codes

200 Success.

400 Bad request. You have no permission to view the payout with given id.

404 Payout with given id not found.


Create payout

Before creating a payout, you can check the parameters of the fields you need to fill in by making an OPTIONS request to the server to retrieve the data.

Note

For security reasons, an additional HTTP header with a unique idempotency key must be sent in the request. The key is a UUID4 string with hyphens: for example, 2dbcb513-bd35-404f-9709-e34878def180. Refer to Useful links for recommended programming packages and libraries that you can use to generate UUID4.

Request

walletobject required

The identifier of the payment wallet.

label string

The payout name for convenient searching. The string value length cannot exceed 32 characters.

callback_url string

URL to send callback notifications.

confirmations_needed number

If an additional callback is required before or after the transaction is confirmed, set the number of confirmations that will trigger the callback. For more information, refer to Payout callback.

tracking_id string or number

The payout identifier in the external system which is used in callbacks.

address_type string

Address type, depends on a currency. Refer to Deposit and invoice address types for supported values.

address string

The wallet address to which the funds are sent.

amount string

The amount of the outgoing transfer.

currencyobject required

If the field is blank, the invoice payment currency will be selected by a payer manually.

tag string

Destination tag for XRP, XLM, BNB.

tag_type string

Type of the tag or memo, applicable for XLM. Possible values:

  • 1 — a 64-bit unsigned integer

  • 2 — a string up to 28-bytes long

POST[base]/payout/

$ curl --request POST \
       --url https://api.b2binpay.com/payout/ \
       --header 'authorization: Bearer eyJ0eXAiOiJKV1QiLC...' \
       --header 'content-type: application/vnd.api+json' \
       --header 'idempotency-key: b6891f5b-d16f-4ba9-a1c4-9828be64a492' \
       --data '{
         "data": {
             "type": "payout",
             "attributes": {
                 "amount": "0.05",
                 "address": "bcrt1q92k5z02dyrjahm4hput42nps3t7ryxzzz0vl76",
                 "fee_amount": "0.00000550",
                 "tracking_id": "f12",
                 "confirmations_needed": 2,
                 "callback_url": "https://my.client.com/cb/"
             },
             "relationships": {
                 "wallet": {
       	             "data": {
                         "type": "wallet",
                         "id": "1"
                     }
                 },
                 "currency": {
                     "data": {
                         "type": "currency",
                         "id": "1000"
                     }
                 }
             }
          }
      }'
import requests

from uuid import uuid4

url = 'https://api.b2binpay.com/payout/'

headers = {
    'authorization': 'Bearer <Change to your access token>',
    'content-type': 'application/vnd.api+json',
    'idempotency-key': str(uuid4()),
}

data = {
    'data': {
        'type': 'payout',
        'attributes': {
            'amount': '0.05',
            'address': 'bcrt1q92k5z02dyrjahm4hput42nps3t7ryxzzz0vl76',
            'fee_amount': '0.00000550',
            'tracking_id': 'f12',
            'confirmations_needed': 2,
            'callback_url': 'https://my.client.com/cb/',
        },
        'relationships': {
            'wallet': {
                'data': {
                    'type': 'wallet',
                    'id': '1',
                },
            },
            'currency': {
                'data': {
                    'type': 'currency',
                    'id': '1000',
                },
            },
        },
    },
}

requests.post(url, headers=headers, json=data)
<?php

use GuzzleHttp\Client;
use GuzzleHttp\Exception\RequestException;

$client = new GuzzleHttp\Client();
try {
    $res = $client->post('https://api.b2binpay.com/payout/', [
        'json' => [
            'data' => [
                'type' => 'payout',
                'attributes' => [
                    'tracking_id' => 'f12',
                    'confirmations_needed' => 2,
                    'callback_url' => 'https://my.client.com/cb/',
                    'amount' => '0.05',
                    'address' => 'bcrt1q92k5z02dyrjahm4hput42nps3t7ryxzzz0vl76',
                    'fee_amount' => '0.00000550',
                ],
                'relationships' => [
                    'wallet' => [
                        'data' => [
                            'type' => 'wallet',
                            'id' => '1',
                        ],
                    ],
                    'currency' => [
                        'data' => [
                            'type' => 'currency',
                            'id' => '1000',
                        ],
                    ],
                ],
            ],
        ],
        'headers' => [
            'Authorization' => 'Bearer <Change to your access token>',
            'Content-Type' => 'application/vnd.api+json',
            'Idempotency-key' => (string) Uuid::uuid4(),
        ],
    ]);
    echo $res->getBody();
} catch (RequestException $e) {}

Response

In case of a successful response, a newly created payout object is returned.

HTTP status codes

201 Success.

400 Bad request: insufficient funds.


Precalculate fee

For your convenience, we can calculate the blockchain fee options and processing commission before actual payout. The options for the blockchain fee are as follows: low, medium and high. For calculations, we need to know the ID of the wallet from which the payout is made, destination address and the payout amount.

Request

amountstring required

The payout amount.

to_addressstring required

The payout destination address.

walletobject required

The payout wallet.

currencyobject required

The payout currency.

POST[base]/payout/calculate/

$ curl --request POST \
       --url https://api.b2binpay.com/payout/calculate/ \
       --header 'authorization: Bearer <Change to your access token>' \
       --header 'content-type: application/vnd.api+json' \
       --data '{
           "data": {
             "type": "payout-calculation",
             "attributes": {
               "amount": "0.0000001",
               "to_address": "2N3Ac2cZzRVoqfJGu1bFaAebq3izTgr1WLv"
             },
             "relationships": {
               "wallet": {
                 "data": {
                   "type": "wallet",
                   "id": "13"
                 }
               },
               "currency": {
                 "data": {
                   "type": "currency",
                   "id": "1000"
                 }
               }
             }
           }
         }'
import requests

url = 'https://api.b2binpay.com/payout/calculate/'

headers = {
    'authorization': 'Bearer <Change to your access token>',
    'content-type': 'application/vnd.api+json',
}

data = {
   'data': {
     'type': 'payout-calculation',
     'attributes': {
       'amount': '0.0000001',
       'to_address': '2N3Ac2cZzRVoqfJGu1bFaAebq3izTgr1WLv',
     },
     'relationships': {
       'wallet': {
         'data': {
           'type': 'wallet',
           'id': '13',
         }
       },
       'currency': {
         'data': {
           'type': 'currency',
           'id': '1000',
         },
       },
     },
   },
 }

requests.post(url, headers=headers, json=data)
<?php

use GuzzleHttp\Client;
use GuzzleHttp\Exception\RequestException;

$client = new GuzzleHttp\Client();
try {
    $res = $client->post('https://api.b2binpay.com/payout/calculate/', [
        'json' => [
            'data' => [
                'type' => 'payout-calculation',
                'attributes' => [
                    'amount' => '0.05',
                    'to_address' => 'bcrt1q92k5z02dyrjahm4hput42nps3t7ryxzzz0vl76',
                ],
                'relationships' => [
                    'wallet' => [
                        'data' => [
                            'type' => 'wallet',
                            'id' => '1',
                        ],
                    ],
                    'currency' => [
                        'data' => [
                            'type' => 'currency',
                            'id' => '1000',
                        ],
                    ],
                ],
            ],
        ],
        'headers' => [
            'Authorization' => 'Bearer <Change to your access token>',
            'Content-Type' => 'application/vnd.api+json',
        ],
    ]);
    echo $res->getBody();
} catch (RequestException $e) {}

Response

In the event of success, the method returns the low, medium and high blockchain fee values. If there are no recommendations or request parameters are invalid, an error or zero low, medium and high values are returned.

is_internal boolean

If true, the payout is internal.

fee.low string

Economy mode when speed does not matter.

fee.medium string

Optimum processing speed for a reasonable blockchain fee.

fee.high string

Priority transaction processing resulting in a higher blockchain fee.

fee.currency number

The blockchain fee currency.

commission.amount object

The commission amount.

commission.currency number

The commission currency.

FEE VALUES
{
  "data": {
    "type": "payout-calculation",
    "id": "0",
    "attributes": {
      "is_internal": true,
      "fee": {
        "low": "0.00000329",
        "medium": "0.00000823",
        "high": "0.00001647",
        "dust_amount": "0.00000000",
        "currency": 1000
      },
      "commission": {
        "amount": "0.00000000",
        "currency": 1000
      }
    }
  }
}

Payout callback

A callback is a notification sent to the user’s callback URL when a transaction (invoice or payout) occurs in a blockchain. By default, the callback is sent after the transaction is confirmed. To get confirmed, a transaction should meet the following requirements:

  • receive the necessary number of confirmations

  • pass AML verification (sometimes it may take longer than getting confirmations in the blockchain)

  • pass additional anti-fraud checks

The number of confirmations is determined by the confirmation_blocks field in the currency settings. For example, for USDT-ETH, the confirmation_blocks is set to 3. This means that after receiving three confirmations and passing AML and anti-fraud checks, a callback will be sent.

It is also possible to receive additional callbacks. To do this, specify a required number in the confirmations_needed field when creating a payout. For example, for USDT-ETH, the confirmation_blocks value is 3 and the confirmations_needed value is 1. This means that two :callbacks` will be sent: one (additional) after a transaction receives one confirmation and another one (default) after a transaction receives three confirmations.

Upon receiving a required number of confirmations related to a new payout transaction, a callback is sent to your server if the payout request body includes a valid callback URL. You can use a callback to make changes in your system and notify your users.

The callback is sent by a POST request, which contains useful JSON payload. After processing the payload, you should respond with an HTTP code 200 without a body. If your server is temporarily unavailable or the status of the response is different from 200, we will resend the callback several times with the increasing delay time. The number of resendings is limited. If the manual resending is required, you can do it via the Events.

Refer to Invoice callback for a callback example and descriptions.

Payout options method

Before creating a payout, you can check the parameters of the fields you need to fill in to create the payout. To do this, make an OPTIONS request to the server to retrieve the data.

Request

No request parameters.

OPTIONS[base]/payout

curl --location --request OPTIONS 'https://api-sandbox.b2binpay.com/payout/' \
--header 'Content-Type: application/vnd.api+json' \
--header 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjY0NDQyMjgyLCJpYXQiOjE2NjQ0NDEzODIsImp0aSI6IjM5ODFiODVjOTFjODQzNDJiMzNlM2RjNmY4NTQzOTJmIiwidXNlcl9pZCI6OTV9.jdsABcTC9TIhpuztMiC6DnMGDECDIN4pY4Ed8oaoNms' \
--header 'idempotency-key: 63e000e1-9ea8-4d7f-9446-1c4608675f73' \
--data-raw '{
        "data": {
            "type": "payout",
            "attributes": {
                "amount": "0.05",
                "address": "bcrt1q92k5z02dyrjahm4hput42nps3t7ryxzzz0vl76",
                "fee_amount": "0.00000550",
                "tracking_id": "f12",
                "confirmations_needed": 2,
                "callback_url": "https://my.client.com/cb/"
            },
            "relationships": {
                "wallet": {
                    "data": {
                        "type": "wallet",
                        "id": "273"
                    }
                },
                "currency": {
                     "data": {
                         "type": "currency",
                         "id": "1000"
                     }
                 }
             }
          }
      }'\'''
import requests
import json

url = "https://api-sandbox.b2binpay.com/payout/"

payload = "{\n        \"data\": {\n            \"type\": \"payout\",\n            \"attributes\": {\n                \"amount\": \"0.05\",\n                \"address\": \"bcrt1q92k5z02dyrjahm4hput42nps3t7ryxzzz0vl76\",\n                \"fee_amount\": \"0.00000550\",\n                \"tracking_id\": \"f12\",\n                \"confirmations_needed\": 2,\n                \"callback_url\": \"https://my.client.com/cb/\"\n            },\n            \"relationships\": {\n                \"wallet\": {\n                    \"data\": {\n                        \"type\": \"wallet\",\n                        \"id\": \"273\"\n                    }\n                },\n                \"currency\": {\n                     \"data\": {\n                         \"type\": \"currency\",\n                         \"id\": \"1000\"\n                     }\n                 }\n             }\n          }\n      }'"
headers = {
  'Content-Type': 'application/vnd.api+json',
  'Authorization': 'Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjY0NDQyMjgyLCJpYXQiOjE2NjQ0NDEzODIsImp0aSI6IjM5ODFiODVjOTFjODQzNDJiMzNlM2RjNmY4NTQzOTJmIiwidXNlcl9pZCI6OTV9.jdsABcTC9TIhpuztMiC6DnMGDECDIN4pY4Ed8oaoNms',
  'idempotency-key': '7a315530-1240-4da2-a581-13488f43d8a6'
}

response = requests.request("OPTIONS", url, headers=headers, data=payload)

print(response.text)
<?php
$client = new Client();
$headers = [
  'Content-Type' => 'application/vnd.api+json',
  'Authorization' => 'Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjY0NDQyMjgyLCJpYXQiOjE2NjQ0NDEzODIsImp0aSI6IjM5ODFiODVjOTFjODQzNDJiMzNlM2RjNmY4NTQzOTJmIiwidXNlcl9pZCI6OTV9.jdsABcTC9TIhpuztMiC6DnMGDECDIN4pY4Ed8oaoNms',
  'idempotency-key' => '1e61b53a-1df8-4dd6-9c5c-3abeae276f9a'
];
$body = '{
        "data": {
            "type": "payout",
            "attributes": {
                "amount": "0.05",
                "address": "bcrt1q92k5z02dyrjahm4hput42nps3t7ryxzzz0vl76",
                "fee_amount": "0.00000550",
                "tracking_id": "f12",
                "confirmations_needed": 2,
                "callback_url": "https://my.client.com/cb/"
            },
            "relationships": {
                "wallet": {
                    "data": {
                        "type": "wallet",
                        "id": "273"
                    }
                },
                "currency": {
                     "data": {
                         "type": "currency",
                         "id": "1000"
                     }
                 }
             }
          }
      }\'';
$request = new Request('OPTIONS', 'https://api-sandbox.b2binpay.com/payout/', $headers, $body);
$res = $client->sendAsync($request)->wait();
echo $res->getBody();

Response

In case of success, the response body contains an array of available methods as well as a list of parameters of the fields you need to fill in to create the payout.

allowed_methods array

Available methods for payout:

  • GET

  • POST

  • HEAD

  • OPTIONS

actions object

The object contains information about parameters of the fields that should be filled in when creating a payout:

amount object

The object contains information about the amount field.

Show object fields
type string

The type of the field.

required boolean

If true, the field is required.

read_only boolean

If true, you cannot edit the field.

label string

The name of the field.

min_value integer

The minimum payout value.

address object

The object contains information about the address field.

Show object fields
type string

The type of the field.

required boolean

If true, the field is required.

read_only boolean

If true, you cannot edit the field.

label string

The name of the field.

max_length integer

The maximum string value length.

wallet object

The object contains information about the wallet field.

Show object fields
type string

The type of the field.

required boolean

If true, the field is required.

read_only boolean

If true, you cannot edit the field.

label string

The name of the field.

tracking_id object

The object contains information about the tracking_id field.

Show object fields
type string

The type of the field.

required boolean

If true, the field is required.

read_only boolean

If true, you cannot edit the field.

label string

The name of the field.

max_length integer

The maximum string value length.

confirmations_needed object

The object contains information about the confirmations_needed field.

Show object fields
type string

The type of the field.

required boolean

If true, the field is required.

read_only boolean

If true, you cannot edit the field.

label string

The name of the field.

min_value integer

The minimum payout value.

max_value integer

The maximum payout value.

fee_amount object

The object contains information about the fee_amount field.

Show object fields
type string

The type of the field.

required boolean

If true, the field is required.

read_only boolean

If true, you cannot edit the field.

label string

The name of the field.

min_value integer

The minimum fee value.

is_fee_included object

The object contains information about the is_fee_included field.

Show object fields
type string

The type of the field.

required boolean

If true, the field is required.

read_only boolean

If true, you cannot edit the field.

label string

The name of the field.

callback_url object

The object contains information about the callback_url field.

Show object fields
type string

The type of the field.

required boolean

If true, the field is required.

read_only boolean

If true, you cannot edit the field.

label string

The name of the field.

max_length integer

The maximum string value length.

applicant object

The object contains information about the applicant field.

Show object fields
type string

The type of the field.

required boolean

If true, the field is required.

read_only boolean

If true, you cannot edit the field.

label string

The name of the field.

message object

The object contains information about the message field.

Show object fields
type string

The type of the field.

required boolean

If true, the field is required.

read_only boolean

If true, you cannot edit the field.

label string

The name of the field.

max_length integer

The maximum string value length.

label object

The object contains information about the label field.

Show object fields
type string

The type of the field.

required boolean

If true, the field is required.

read_only boolean

If true, you cannot edit the field.

label string

The name of the field.

max_length integer

The maximum string value length.

regexp string

A list of regular expressions that can be used.

tag object

The object contains information about the tag field.

Show object fields
type string

The type of the field.

required boolean

If true, the field is required.

read_only boolean

If true, you cannot edit the field.

label string

The name of the field.

max_length integer

The maximum string value length.

tag_type object

The object contains information about the tag_type field.

Show object fields
type string

The type of the field.

required boolean

If true, the field is required.

read_only boolean

If true, you cannot edit the field.

label string

The name of the field.

max_length integer

The maximum string value length.

OPTIONS RESPONSE
{
  "data": {
    "renders": [
        "application/vnd.api+json"
    ],
    "parses": [
        "application/vnd.api+json",
        "multipart/form-data"
    ],
    "allowed_methods": [
        "GET",
        "POST",
        "HEAD",
        "OPTIONS"
    ],
    "actions": {
         "POST": {
            "amount": {
               "type": "decimal",
               "required": true,
               "read_only": false,
               "label": "Amount",
               "min_value": 0
            },
            "address": {
               "type": "string",
               "required": false,
               "read_only": false,
               "label": "Address",
               "max_length": 128
            },
            "wallet": {
               "type": "field",
               "required": false,
               "read_only": false,
               "label": "Wallet"
            },
            "tracking_id": {
               "type": "string",
               "required": false,
               "read_only": false,
               "label": "Tracking id",
               "max_length": 128
            },
            "confirmations_needed": {
               "type": "integer",
               "required": false,
               "read_only": false,
               "label": "Confirmations needed",
               "min_value": 0,
               "max_value": 100
            },
            "fee_amount": {
               "type": "decimal",
               "required": true,
               "read_only": false,
               "label": "Fee amount",
               "min_value": 0
            },
            "is_fee_included": {
               "type": "boolean",
               "required": false,
               "read_only": false,
               "label": "Is fee included"
            },
            "callback_url": {
               "type": "url",
               "required": false,
               "read_only": false,
               "label": "Callback url",
               "max_length": 256
            },
            "applicant": {
               "type": "field",
               "required": false,
               "read_only": false,
               "label": "Applicant"
            },
            "message": {
               "type": "string",
               "required": false,
               "read_only": false,
               "label": "Message",
               "max_length": 64
            },
            "label": {
               "type": "regex",
               "required": false,
               "read_only": false,
               "label": "Label",
               "max_length": 32,
               "regexp": "^[^\\`~$%^&_=+\\|\\[\\]{};:'\"*#@<>\\/]{0,32}$"
            },
            "tag": {
               "type": "string",
               "required": false,
               "read_only": false,
               "label": "Tag",
               "max_length": 64
            },
            "tag_type": {
               "type": "string",
               "required": false,
               "read_only": false,
               "label": "Tag type",
               "max_length": 64
            }
        },
        "GET": {
           "currency": {
               "lookup_expr": "exact",
               "regexp": "^[1-9][0-9]*$",
               "max_length": 8,
               "required": false
           },
           "wallet": {
               "lookup_expr": "exact",
               "required": false
           },
           "id": {
               "lookup_expr": "exact",
               "regexp": "^[1-9][0-9]*$",
               "max_length": 8,
               "required": false
           },
           "created_at_from": {
               "lookup_expr": "exact",
               "max_length": 32,
               "required": false
           },
           "created_at_to": {
               "lookup_expr": "exact",
               "max_length": 32,
               "required": false
           },
           "updated_at_from": {
               "lookup_expr": "exact",
               "max_length": 32,
               "required": false
           },
           "updated_at_to": {
               "lookup_expr": "exact",
               "max_length": 32,
               "required": false
           },
           "label": {
               "lookup_expr": "icontains",
               "max_length": 32,
               "required": false
           },
           "tracking_id": {
               "lookup_expr": "exact",
               "max_length": 128,
               "required": false
           },
           "commission": {
               "lookup_expr": "exact",
               "regexp": "[-+]?[0-9]*\\.?[0-9]*",
               "max_length": 32,
               "required": false
           },
           "address": {
               "lookup_expr": "exact",
               "required": false
           },
           "confirmations_needed": {
               "lookup_expr": "exact",
               "regexp": "^[1-9][0-9]*$",
               "max_length": 2,
               "required": false
           },
           "help_email": {
               "lookup_expr": "exact",
               "max_length": 64,
               "required": false
           },
           "status": {
               "lookup_expr": "exact",
               "choices": [
                 {
                  "value": 1,
                  "display_name": "Waiting for approve"
                 },
                 {
                  "value": 2,
                  "display_name": "Approved"
                 },
                 {
                  "value": 3,
                  "display_name": "Cancelled"
                 }
                ],
               "required": false
           },
           "time_limit": {
               "lookup_expr": "exact",
               "regexp": "^[1-9][0-9]*$",
               "max_length": 8,
               "required": false
           },
           "inaccuracy": {
               "lookup_expr": "icontains",
               "max_length": 32,
               "required": false
           },
           "target_amount_requested": {
               "lookup_expr": "exact",
               "max_length": 32,
               "required": false
           },
           "rate_requested": {
               "lookup_expr": "exact",
               "max_length": 32,
               "required": false
           },
           "expired_at_from": {
               "lookup_expr": "exact",
               "max_length": 64,
               "required": false
           },
           "expired_at_to": {
               "lookup_expr": "exact",
               "max_length": 64,
               "required": false
           },
           "target_paid": {
               "lookup_expr": "exact",
               "max_length": 64,
               "required": false
           },
           "enrolled": {
               "lookup_expr": "exact",
               "max_length": 64,
               "required": false
           },
           "target_paid_pending": {
               "lookup_expr": "exact",
               "max_length": 64,
               "required": false
           },
           "source_paid_pending": {
               "lookup_expr": "exact",
               "max_length": 64,
               "required": false
           },
           "source_paid": {
               "lookup_expr": "exact",
               "max_length": 64,
               "required": false
           },
           "source_commission": {
               "lookup_expr": "exact",
               "max_length": 64,
               "required": false
           },
           "source_amount_requested": {
               "lookup_expr": "exact",
               "max_length": 64,
               "required": false
           },
           "is_fee_included": {
               "lookup_expr": "exact",
               "required": false
           },
           "amount": {
               "lookup_expr": "exact",
               "regexp": "[-+]?[0-9]*\\.?[0-9]*",
               "required": false
           },
           "charged": {
               "lookup_expr": "icontains",
               "max_length": 32,
               "required": false
           }
         }
     },
   "custom": {
      "POST": {
        "address_masks": {
           "1000": [
             {
              "address_type": "legacy",
                    "mask": [
                       "^(m|n)[1-9a-km-zA-HJ-NP-Z]{25,33}$"
                     ],
              "is_default": false
             },
             {
              "address_type": "p2sh-segwit",
              "mask": [
                  "^2[1-9a-km-zA-HJ-NP-Z]{33,34}$"
                 ],
              "is_default": true
             },
             {
              "address_type": "bech32",
              "mask": [
                 "^bcrt1[02-9ac-hj-np-z]{6,85}$"
                ],
              "is_default": false
             }
           ],
            "1002": [
              {
              "address_type": null,
              "mask": [
                 "^0x[0-9a-fA-F]{40}$"
                ],
              "is_default": true
              },
              {
              "address_type": "duplicate",
              "mask": null,
              "is_default": false
              }
           ],
           "1125": [
              {
              "address_type": null,
              "mask": [
                 "^0x[0-9a-fA-F]{40}$"
                ],
              "is_default": true
              },
              {
              "address_type": "duplicate",
              "mask": null,
              "is_default": false
              }
           ],
            "2005": [
              {
              "address_type": "legacy",
              "mask": [
                 "^(m|n)[1-9a-km-zA-HJ-NP-Z]{25,33}$"
                ],
              "is_default": false
               },
               {
              "address_type": "p2sh-segwit",
              "mask": [
                 "^2[1-9a-km-zA-HJ-NP-Z]{33,34}$"
                ],
              "is_default": true
               },
               {
              "address_type": "bech32",
              "mask": [
                 "^bcrt1[02-9ac-hj-np-z]{6,85}$"
               ],
              "is_default": false
               }
             ],
            "2015": [
               {
               "address_type": null,
               "mask": [
                 "^0x[0-9a-fA-F]{40}$"
               ],
                "is_default": true
                },
                {
                "address_type": "duplicate",
                "mask": null,
                "is_default": false
                }
             ]
            }
        }
     }
  }
}

HTTP status codes

201 Success.

500 The request wasn’t completed due to an internal error on the server side.