Invoice methods

Invoice object

payment_page string

The URL of a payment page displayed to payers. The page data includes the address, tag, QR code and registered incoming transfers.

address_type string

The address type. Refer to Address types for a list of supported values.

tracking_id string or number

The client-provided identifier of a payment in an external system.

confirmations_needed number

The client-provided number of confirmation blocks for sending an additional callback.

time_limit number

The time period after which an invoice expires, in seconds. After an invoice expires, its status is changed to Canceled.

callback_url string

URL for callback notifications.

inaccuracy string

The rate variance expected to occur during the invoice expiration time, which allows you to hedge risks arising from rate variations. This value is added to or subtracted from the target_amount_requested value.

target_amount_requested string

The required amount of funds to be paid in the wallet currency. After the payment, the invoice status is set to Paid.

status number

The invoice status. Possible values:

  • 2Invoice. An unpaid or newly created invoice.

  • 3Paid. The requested amount is successfully deposited.

  • 4Canceled. The invoice time limit is expired and no payment was deposited.

  • 5Unresolved (Action required). An issue requiring a user’s action. For example, a payment exceeds the sum of a requested amount and inaccuracy value, the payment was made after the invoice expiration time and so on.

rate_requested string

The rate of a wallet (target) currency to a source (payment) currency. The rate is frozen for at least 15 minutes.

rate_expired_at string

The date and time when the rate_requested value expires. If a payment is made after the expiration time, the value is set to the actual date and time of the payment.

invoice_updated_at string

The date and time when the time limit or invoice status was last updated.

source_amount_requested string

The required amount of funds to be paid in the payment currency. After the payment, the invoice status is set to Paid.

address string

Address for received payment.

destination object

All possible options to specify the address of the invoice: an object if there is only one possible option, array of objects if there are several options. Each object contains three string fields: address — actual address, address_type — type of the address, tagdestination tag (if required), used in conjunction with address tag_type — 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

assets object

Amounts of incoming transfers in different currencies. The information is relevant for tokens, if both tokens and coins can be sent to a single address. In this case, the funds are credited not only to the wallet from the wallet field, but also to other wallets in other currencies. The alpha code of the currency is used as a key. Aggregated amounts are values.

label string

The invoice name for convenient search. The string value length cannot exceed 32 characters.

currency object

The invoice payment currency. Contains currency id (refer to Currency codes for supported values).

wallet object

The wallet with which the transaction is associated. Contains wallet id and link to the wallet.

INVOICE OBJECT
{
  "data": {
    "type": "deposit",
    "id": "80",
    "attributes": {
      "status": 2,
      "address": "0x72492b84b83e41cc50c13107b57450ee5f08599c",
      "address_type": "",
      "label": "Deposit API example",
      "tracking_id": "i-994",
      "confirmations_needed": 1,
      "time_limit": 900,
      "callback_url": "https://example.com",
      "message": null,
      "inaccuracy": "5.000000000000000000",
      "target_amount_requested": "300.500000000000000000",
      "rate_requested": "1239.509699999999972988",
      "rate_expired_at": "2022-11-11T15:06:03.710160Z",
      "invoice_updated_at": "2022-11-11T15:05:53.599287Z",
      "payment_page": "https://payment.page.example",
      "target_paid": "0.00",
      "source_amount_requested": "0.242434569088083786",
      "target_paid_pending": "0.00",
      "destination": {
        "address_type": null,
        "address": "0x72492b84b83e41cc50c13107b57450ee5f08599c"
      }
    },
    "relationships": {
      "currency": {
        "data": {
          "type": "currency",
          "id": "1002"
        }
      },
      "wallet": {
        "data": {
          "type": "wallet",
          "id": "1"
        }
      }
    }
  }
}

Get invoice

Request

id string

The invoice identifier.

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

GET[base]/deposit/{id}

$ curl --request GET \
       --url https://[base]/deposit/ \
       --header 'authorization: Bearer eyJ0eXAiOiJKV1QiLC...' \
       --header 'content-type: application/vnd.api+json'
import requests

url = 'https://[base]/deposit/'

headers = {
    'Authorization': 'Bearer <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://[base]/deposit/', [
        '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, an invoice object or an array of objects (if id was not specified) is returned.

Response codes

200 Success.

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

404 Invoice with given id not found.


Create invoice

Before creating an invoice, 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.

Request

walletobject required

The identifier of the wallet to which the payments will be credited.

label string

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

callback_url string

URL to send callback notifications. Specify this value to receive a callback when a new transaction occurs. Refer to Invoice callback for more details.

confirmations_needed number

Required number of confirmation blocks to trigger an additional callback. Specify this value to receive an additional callback before or after the transaction is confirmed. Refer to Invoice callback for more details.

tracking_id string or number

The invoice identifier in your system. This ID is used in callbacks.

time_limit number

The time period after which an invoice expires, in seconds. After an invoice expires, its status is changed to Canceled.

inaccuracy string

The rate variance expected to occur during the invoice expiration time, which allows you to hedge risks arising from rate variations. This value is added to or subtracted from the target_amount_requested value.

target_amount_requested string

The required amount of funds to be paid in the wallet currency. After the payment, the invoice status is set to Paid.

address_type string

Address type, depends on a currency. Refer to Address types for supported values.

currency object

The invoice payment currency. Indicates the currency in which the payer will pay. The field also determines the blockchain and the rate at which the payment currency will be exchanged to the wallet currency and credited to the user wallet. If the field is blank, the invoice payment currency will be selected by a payer manually.

POST[base]/deposit/

$ curl --request POST \
       --url https://[base]/deposit/ \
       --header 'authorization: Bearer eyJ0eXAiOiJKV1QiLC...' \
       --header 'content-type: application/vnd.api+json' \
       --data '{
            "data": {
              "type": "deposit",
              "attributes": {
                "label": "Deposit API example",
                "tracking_id": "i-994",
                "confirmations_needed": 1,
                "time_limit": 900,
                "inaccuracy": 5,
                "target_amount_requested": "500.5"
              },
              "relationships": {
                "wallet": {
                  "data": {
                    "type": "wallet",
                    "id": "1"
                  }
                },
                "currency": {
                  "data": {
                    "type": "currency",
                    "id": "1002"
                  }
                }
              }
            }
          }'
import requests

url = 'https://[base]/deposit/'

headers = {
    'Authorization': 'Bearer <Change to your access token>',
    'Idempotency-Key': '<UUID - generate version 4>',
    'Content-Type': 'application/vnd.api+json',
}

data = {
   "data": {
     "type": "deposit",
     "attributes": {
        "label": "Deposit API example",
        "tracking_id": "i-994",
        "confirmations_needed": 1,
        "time_limit": 900,
        "inaccuracy": 5,
        "target_amount_requested": "500.5"
                     },
     "relationships": {
        "wallet": {
        "data": {
            "type": "wallet",
            "id": "1"
                }
                   },
        "currency": {
             "data": {
                "type": "currency",
                "id": "1002"
                     }
                }
            }
        }
    }

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

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

$client = new GuzzleHttp\Client();
try {
    $res = $client->post('https://[base]/deposit/', [
        'json' => [
            'data' => [
                'type' => 'deposit',
                'attributes' => [
                    'label' => 'Deposit API example',
                    'tracking_id' => 'i-994',
                    'confirmations_needed' => 1,
                    'time_limit': 900,
                    'inaccuracy': 5,
                    'target_amount_requested': "500.5",
                ],
                'relationships' => [
                    'wallet' => [
                        'data' => [
                            'type' => 'wallet',
                            'id' => '1',
                        ],
                    ],
                    'currency' => [
                       'data' => [
                         'type' => 'currency',
                         'id' => '1002',
                        ]
                    ],
                ],
            ],
        ],
        'headers' => [
            'Authorization' => 'Bearer <Change to your access token>',
            'Idempotency-Key' => '<UUID - generate version 4>',
            'Content-Type' => 'application/vnd.api+json',
        ]
    ]);
    echo $res->getBody();
} catch (RequestException $e) {}

Response

In case of a successful response, a newly created invoice object is returned, containing an address that your payers can use to send funds.

Response codes


Invoice 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:

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 an invoice. 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 invoice transaction, a callback is sent to your server if the invoice request body includes a valid callback URL. You can use a callback to make changes in your system and notify your payers.

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 If the manual resending is required, you can do it on the Wallet management > Events page.

A callback consist of two parts: the invoice itself (data) and the transaction received for this invoice (included).

The deposit parameters (data) are as follows:

address string

The identifier of the wallet to which the payment is credited.

created_at string

The time of the transfer update as per ISO 8601 with μs precision and timezone included: YYYY-MM-DDThh:mm:ss[.SSSSSS]±hh:mm.

tracking_id string or number

The invoice identifier in your system.

source_amount_requested string

The required amount of funds to be paid in the payment currency. After the payment, the invoice status is set to Paid.

target_amount_requested string

The required amount of funds to be paid in the wallet currency. After the payment, the invoice status is set to Paid.

status number

The invoice status. Possible values:

  • 2Invoice. An unpaid or newly created invoice.

  • 3Paid. The requested amount is successfully deposited.

  • 4Canceled. The invoice time limit is expired and no payment was deposited.

  • 5Unresolved (Action required). An issue requiring a user’s action. For example, a payment exceeds the sum of a requested amount and inaccuracy value, the payment was made after the invoice expiration time and so on.

time_limit number

The time period after which an invoice expires, in seconds. After an invoice expires, its status is changed to Canceled.

inaccuracy string

The rate variance expected to occur during the invoice expiration time, which allows you to hedge risks arising from rate variations. This value is added to or subtracted from the target_amount_requested value.

destination object

All possible options to specify the address of the invoice: an object if there is only one possible option, an array of objects if there are several options. Each object contains three string fields: address — actual address, address_type — type of the address, tagdestination tag (if required), used in conjunction with address tag_type — the type of a tag or memo, applicable for XLM. Possible values:

  • 1 — a 64-bit unsigned integer

  • 2 — a string up to 28-bytes long

currency object

The transaction currency. Contains the currency id (refer to Currency codes for supported values).

wallet object

The identifier of a wallet to which payments will be credited.

transfer object

The transaction identifier.

meta.time string

The date and time when a callback was sent, as per ISO 8601 with μs precision and timezone included: YYYY-MM-DDThh:mm:ss[.SSSSSS]±hh:mm.

meta.sign string

The HMAC signature used for callback authentication. To verify that the callback was sent by B2BinPay, generate an HMAC signature using SHA-256 as algorithm: provide a SHA-256 hash of a concatenated string including your login and password as a key, and a concatenated string including the transfer.status, transfer.amount, deposit.tracking_id, meta.time fields as a message. Refer to Callback verification for a sign-in verification example..

Transaction parameters (included) are described in Invoice object.

CALLBACK BODY
{
  "data": {
    "type": "deposit",
    "id": "79",
    "attributes": {
      "address": "0x26dbe0a1727d4ffe49bee794dd9eee7b4692e129",
      "created_at": "2022-11-11T15:02:26.949705Z",
      "tracking_id": "i-994",
      "target_paid": "299.41",
      "source_amount_requested": "0.241109653220129728",
      "target_amount_requested": "300.50",
      "status": 3,
      "time_limit": 900,
      "inaccuracy": "5.00",
      "destination": {
        "address_type": null,
        "address": "0x26dbe0a1727d4ffe49bee794dd9eee7b4692e129"
      }
    },
    "relationships": {
      "currency": {
        "data": {
          "type": "currency",
          "id": "1002"
        }
      },
      "wallet": {
        "data": {
          "type": "wallet",
          "id": "1"
        }
      }
    }
  },
  "included": [
    {
      "type": "currency",
      "id": "1002",
      "attributes": {
        "iso": 1002,
        "name": "Ethereum",
        "alpha": "ETH",
        "alias": null,
        "exp": 18,
        "confirmation_blocks": 3,
        "minimal_transfer_amount": "0.001000000000000000",
        "block_delay": 60
      }
    }
  ],
  "meta": {
    "time": "2022-11-11T15:03:34.340148+00:00",
    "sign": "c7435e40c5124287693fdebc0bdd840e59d0ea1c774d28f3e11806144fcf9be4"
  }
}

Callback verification

The following example illustrates a callback verification process.

Callback verification example
<?php

# set API user login and password
$login = 'E8kOq803ktB7';
$password = 'E8kOq803ktB7';

# parse callback data
$callback_payload = json_decode(
    '
{
  "data": {
    "type": "payout",
    "id": "26",
    "attributes": {
      "address": "2NBr9k5xhvE2PxAAiFuczqQkeN76ShMdRZ6",
      "created_at": "2021-09-30T13:01:49.930612Z",
      "tracking_id": "12",
      "fee_amount": "0.00000823",
      "is_fee_included": false,
      "amount": "0.00010000",
      "destination": {
        "address_type": "legacy",
        "address": "2NBr9k5xhvE2PxAAiFuczqQkeN76ShMdRZ6"
      }
    },
    "relationships": {
      "wallet": {
        "data": {
          "type": "wallet",
          "id": "19"
        }
      },
      "currency": {
        "data": {
          "type": "currency",
          "id": "1000"
        }
      },
      "transfer": {
        "data": {
          "type": "transfer",
          "id": "145"
        }
      }
    }
  },
  "included": [
    {
      "type": "currency",
      "id": "1000",
      "attributes": {
        "iso": 1000,
        "name": "Bitcoin",
        "alpha": "BTC",
        "alias": null,
        "exp": 8,
        "confirmation_blocks": 3,
        "minimal_transfer_amount": "0.00000546",
        "block_delay": 3600
      }
    },
    {
      "type": "transfer",
      "id": "145",
      "attributes": {
        "confirmations": 3,
        "risk": 0,
        "risk_status": 4,
        "op_id": 26,
        "op_type": 2,
        "amount": "0.00010000",
        "commission": "0.00000000",
        "fee": "0.00000823",
        "txid": "c3cc36f4569fdbfaacdbc14647e5046d9f239ab1af0268b531a5a213411a8fc9",
        "status": 2,
        "message": null,
        "user_message": null,
        "created_at": "2021-09-30T13:01:50.273446Z",
        "updated_at": "2021-09-30T13:02:33.743770Z"
      },
      "relationships": {
        "currency": {
          "data": {
            "type": "currency",
            "id": "1000"
          }
        }
      }
    }
  ],
  "meta": {
    "time": "2021-09-30T13:02:34.059939+00:00",
    "sign": "8ef2a0f0c6826895593d0d137cf6ce7353a4bbe999d4a6c363f92f1e9d7f8e32"
  }
}
',
    true
    );

$callback_sign = $callback_payload['meta']['sign'];
$callback_time = $callback_payload['meta']['time'];

# retrieve transfer and deposit attributes
$included_transfer = array_filter(
    $callback_payload['included'],
    function ($item) {
        return $item['type'] === 'transfer';
    }
);
$included_transfer = array_pop($included_transfer)['attributes'];
$deposit = $callback_payload['data']['attributes'];

$status = $included_transfer['status'];
$amount = $included_transfer['amount'];
$tracking_id = $deposit['tracking_id'];

# prepare data for hash check
$message = $status . $amount . $tracking_id . $callback_time;
$hash_secret = hash('sha256', $login . $password, true);
$hash_hmac_result = hash_hmac('sha256', $message, $hash_secret);

# print result
if ($hash_hmac_result === $callback_sign) {
    echo 'Verified';
} else {
    echo 'Invalid sign';
}
echo PHP_EOL;

Invoice options method

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

Request

No request parameters.

OPTIONS[base]/deposit

$ curl --request OPTIONS \
       --url https://[base]/deposit/ \
       --header 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...' \
       --header 'Content-Type: application/vnd.api+json: ' \
       --data '{
            "data": {
              "type": "auth-token",
              "attributes": {
                "login": "<Change to your API key>",
                "password": "<Change to your secret>"
              }
            }
          }'
import requests
import json

url = "https://[base]/deposit/"

payload = json.dumps({
  "data": {
    "type": "deposit",
    "attributes": {
      "label": "test label",
      "tracking_id": "U-988",
      "confirmations_needed": 1,
      "callback_url": "https://my.client.url/cb/"
    },
    "relationships": {
      "currency": {
        "data": {
          "type": "currency",
          "id": "1000"
        }
      },
      "wallet": {
        "data": {
          "type": "wallet",
          "id": "1255"
        }
      }
    }
  }
})
headers = {
  'Authorization': 'Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9....',
  'Content-Type': 'application/vnd.api+json'
}

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

print(response.text)
<?php
$client = new Client();
$headers = [
  'Authorization' => 'Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...',
  'Content-Type' => 'application/vnd.api+json'
];
$body = '{
  "data": {
    "type": "deposit",
    "attributes": {
      "label": "test label",
      "tracking_id": "U-988",
      "confirmations_needed": 1,
      "callback_url": "https://my.client.url/cb/"
    },
    "relationships": {
      "currency": {
        "data": {
          "type": "currency",
          "id": "1000"
        }
      },
      "wallet": {
        "data": {
          "type": "wallet",
          "id": "1255"
        }
      }
    }
  }
}';
$request = new Request('OPTIONS', 'https://[base]/deposit/', $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 invoice.

allowed_methods array

The methods available for deposit:

  • GET

  • POST

  • HEAD

  • OPTIONS

actions object

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

wallet object

The object provides the following 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 deposit wallet.

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.

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 field name.

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 field name.

min_value integer

The minimum string value length.

max_length integer

The maximum string value length.

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 field name.

max_length integer

The maximum string value length.

address-type object

The object contains information about the address-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 field name.

max_length integer

The maximum string value length.

THE OPTIONS RESPONSE
{
  "data": {
    "renders": [
      "application/vnd.api+json"
    ],
    "parses": [
      "application/vnd.api+json",
      "multipart/form-data"
    ],
    "allowed_methods": [
      "GET",
      "POST",
      "HEAD",
      "OPTIONS"
    ],
    "actions": {
      "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",
          "max_length": 256,
          "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": 2,
              "display_name": "Invoice"
            },
            {
              "value": 3,
              "display_name": "Paid"
            },
            {
              "value": 4,
              "display_name": "Expired"
            },
            {
              "value": 5,
              "display_name": "Overpaid"
            },
            {
              "value": 6,
              "display_name": "Refund"
            }
          ],
          "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
        }
      },
      "POST": {
        "wallet": {
          "type": "field",
          "required": true,
          "read_only": false,
          "label": "Wallet"
        },
        "label": {
          "type": "regex",
          "required": false,
          "read_only": false,
          "label": "Label",
          "max_length": 32,
          "regexp": "^[^-\\`~$%^&=+\\|\\[\\]{};:'\"*#@<>\/]{0,32}$"
        },
        "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
        },
        "callback_url": {
          "type": "url",
          "required": false,
          "read_only": false,
          "label": "Callback url",
          "max_length": 256
        },
        "address_type": {
          "type": "string",
          "required": false,
          "read_only": false,
          "label": "Address type",
          "max_length": 16
        }
      }
    }
  }
}

Response codes

201 The request was successful.

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