Generate a temporary crypto address for deposit [Private]

Generates and returns a temporary deposit address for cryptocurrencies.

🚧

Available for Merchant accounts only!

📘

To call any private endpoint, headers should include authorization key(s).

You may use a single API key or a public-private key pair based on your current tasks. Here you may find typical Header configurations for both options.

Method name:/v4/deposit/private/crypto/generateMerchantAddress
Request type:POST

Data dictionary

NameTypeParameter typeRequiredRangeDescription
currencystringBODYYES-Cryptocurrency code. All available cryptocurrency assets are available through "Get information about available currencies" endpoint.
sourcestringBODYYES-Blockchain name for which you want to get the address to deposit into the account, e.g. BTC, ETH, TRX.
callbackUrlstringBODYNO-After the deposit is completed, a POST request will be created to the callbackUrl.
referenceIdstringBODYNO-External reference id from merchant side.

📘

source for TRC20 and ERC20 tokens:

USDT TRC20 and other TRC20 tokens - TRX.
USDT ERC20 and other ERC20 tokens - ETH.

You can learn more about all the blockchains in our knowledge base.

If the cryptocurrency asset has only its own blockchain, then currency and source should repeat the name of the asset, for example for BTC: "currency": "BTC", "source": "BTC".
If the cryptocurrency asset has more than one blockchain, then the source should specify the name of the blockchain, for example for USDT in the TRC20 network: "currency": "USDT", "source": "TRX".

Exemplary request

const apiKey = "YOUR_API_KEY"; // put here your Api key

const url = "https://api.kuna.io";
const path = "/v4/deposit/private/crypto/generateMerchantAddress";
const body = {
    "currency": "XRP",
    "source": "XRP",
    "callbackUrl": "https://webhook.site/93bb7724-8ef1-4464-9156-c0c10d7ca509",
    "referenceId": "your-id-001"
}; // request to generate an address for XRP asset in XRP network

const options = {
    method: "POST",
    headers: {
        accept: "application/json",
        "Content-Type": "application/json",
        "api-key": apiKey,
    },
    body: JSON.stringify(body),
};

fetch(url + path, options)
    .then((response) => response.json())
    .then((showResponse) => console.log(showResponse.data));
import requests

api_key = "YOUR_API_KEY"  # put here your Api key

url = "https://api.kuna.io"
path = "/v4/deposit/private/crypto/generateMerchantAddress"
headers = {
    "accept": "application/json",
    "Content-Type": "application/json",
    "api-key": api_key,
}
body = {
    "currency": "XRP",
    "source": "XRP",
    "callbackUrl": "https://webhook.site/93bb7724-8ef1-4464-9156-c0c10d7ca509",
    "referenceId": "your-id-001"
}  # request to generate an address for XRP asset in XRP network

request = requests.post(url + path, headers=headers, json=body)
print(request.json())

How to call private endpoints here

Swagger here

Response

You will get a JSON object as a response to the request:

{
  "id": "c52b6646-fb91-4760-b147-a4f952e8652c",             // ID of the address.
  "source": "XRP",                                          // Blockchain name for which you want to get the address to deposit into the account.
  "address": "rEZnowWMyrY8YoGwLatyPBxx8QkJeimgAb",          // Your deposit address.
  "memo":"3531527918"                                       // Memo tag
}

After the deposit is completed, a POST request will be created for the callbackUrl and it will return a JSON object like this:

{
  "id": "83c2a31c-c933-582a-835e-f4a0f871291c",
  "fee": "0.38761",
  "memo": "3531527918",
  "txId": "40EE4697FD293A945E51161F081F9BA4A07F247609985F80A6A000FB0F624C17",
  "type": "Deposit",
  "asset": "XRP",
  "amount": "38.761",
  "reason": [],
  "status": "Processed",
  "userId": "13e6030c-52ef-4c67-bd89-fdad411c20eb",
  "address": "rEZnowWMyrY8YoGwLatyPBxx8QkJeimgAb",
  "createdAt": "2023-06-15T07:11:20.405Z",
  "updatedAt": "2023-06-15T07:11:20.405Z",
  "callbackId": "your-id-001",
  "merchantId": "16214228-5c0c-5abc-be6a-c90259b21d4e",
  "paymentCode": "XRP",
  "processedAmount": "38.37339"
}

Also, if the deposit has not passed the AML check, then this transaction was credited to your generated wallet address but was not credited to your Kuna account because the transaction has a higher risk:

{
  "id": "83c2a31c-c933-582a-835e-f4a0f871291c",
  "fee": "0.38761",
  "memo": "3531527918",
  "txId": "40EE4697FD293A945E51161F081F9BA4A07F247609985F80A6A000FB0F624C17",
  "type": "Deposit",
  "asset": "XRP",
  "amount": "38.761",
  "reason": [],
  "status": "Pending",
  "userId": "13e6030c-52ef-4c67-bd89-fdad411c20eb",
  "address": "rEZnowWMyrY8YoGwLatyPBxx8QkJeimgAb",
  "createdAt": "2023-06-15T07:11:20.405Z",
  "updatedAt": "2023-06-15T07:11:20.405Z",
  "callbackId": "your-id-001",
  "merchantId": "16214228-5c0c-5abc-be6a-c90259b21d4e",
  "paymentCode": "XRP",
  "processedAmount": "38.37339",
  "alerts": [
        {
            "service": null,
            "category": "sanctions",
            "alertLevel": "SEVERE",
            "categoryId": 3,
            "externalId": "620174ae-587a-41a1-897c-836011767e4f",
            "alertAmount": 3.25,
            "riskPercent": 6.5,
            "exposureType": "INDIRECT"
        },
        {
            "service": null,
            "category": "high risk jurisdiction",
            "alertLevel": "HIGH",
            "categoryId": 25,
            "externalId": "3d00ddef-3f47-4b29-93f9-30a19cf3895a",
            "alertAmount": 3.25,
            "riskPercent": 6.5,
            "exposureType": "INDIRECT"
        }
    ],
    "riskPerCent": 13
}

In this case, please contact our support.

❗️

For high-risk transactions we send several callbacks.

You can read more about it in the "Merchant API" guide.