API для вашего магазина
Четыре метода, чтобы подключить оплату криптовалютой.
Принимайте BTC, LTC, TRX и USDT TRC20 и переводите средства, когда вам удобно.
${URL}/api/v1Что понадобится для подключения
Попросите у менеджера три вещи:
URL— адрес API, который начинается сhttps://.ACCOUNT_ID— ID вашего аккаунта.Transfer Key— секретный ключ для переводов и настройки уведомлений.
Подставьте эти данные в примеры ниже. В URL уберите слеш в конце адреса. Transfer Key храните на сервере вашего магазина.
Как указывать суммы
API принимает целые числа в минимальных единицах валюты:
- 1 BTC или LTC = 100 000 000 единиц
- 1 TRX или USDT = 1 000 000 единиц
Например, для 0,001 BTC укажите 100000, а для 1 USDT — 1000000.
Как проходит оплата: настройте уведомления → получите адрес для заказа → проверьте поступление. Перевести средства можно в удобный момент.
В примерах — условные данные. Подставьте свои значения; сама страница ничего не отправляет.
Получить адрес
Без Transfer Key/accounts/{account}/addressesПолучите адрес и покажите его покупателю при оплате. Сохраните адрес вместе с заказом — так вы поймёте, за какую покупку пришли деньги.
| Параметр | Описание |
|---|---|
currencyобязательно | btc, ltc, trx или usdt@trx. |
callbackнеобязательно | Отдельное уведомление для этого адреса. В data можно передать номер заказа. |
addr-typeнеобязательно | BTC: p2sh-p2wpkh по умолчанию или p2wpkh. LTC: p2wpkh. TRX/USDT: generic. |
Каждый успешный запрос создаёт новый адрес. Если ответ не пришёл, не повторяйте запрос автоматически: адрес уже мог быть создан.
У TRX и USDT общий список адресов TRON. Всегда указывайте валюту, которую хотите принять.
curl --request POST "${URL}/api/v1/accounts/${ACCOUNT_ID}/addresses" \
--header 'Content-Type: application/json' \
--data-raw '{
"currency": "btc",
"callback": {
"url": "https://merchant.example/payments/callback",
"method": "POST",
"data": {
"order_id": "ORDER_1001"
}
}
}'Ответ 200 JSON
{
"account": "00000000000000000000000000000001",
"currency": "btc",
"address": "YOUR_RECEIVING_ADDRESS",
"created": "2026-09-05T12:00:00.000000",
"type": "p2sh-p2wpkh",
"callback": {
"url": "https://merchant.example/payments/callback",
"method": "POST",
"data": {
"order_id": "ORDER_1001"
}
}
}Перевести средства
Нужен Transfer Key/accounts/{account}/transferПереведите средства на нужный адрес. В примере переводится весь доступный баланс выбранной валюты за вычетом комиссии сети и сервиса.
| Параметр | Описание |
|---|---|
currencyобязательно | Валюта перевода. |
transfer-keyобязательно | Ваш секретный Transfer Key из 32 символов. |
destinationsобязательно | Адрес получателя address и сумма amount. Укажите "100%" для всего баланса или целое число для конкретной суммы. |
feeнеобязательно | Используйте normal. |
addressesнеобязательно | Список ваших адресов, с которых нужно списать средства. Можно не передавать: сервис выберет их сам. Для конкретной суммы TRON может выбрать один адрес с достаточным балансом. |
fee-limitprocessing-fee-limitнеобязательно | Максимальная комиссия сети и сервиса в минимальных единицах валюты. Если лимиты не заданы, используются комиссии, рассчитанные перед переводом. |
Сохраните id из ответа. Статус success означает, что транзакция отправлена в сеть. Подтверждение проверяйте методом 03. У TRX/USDT сначала может прийти pending, ещё без TXID.
Комиссии и ответ, который не пришёл
Для одного получателя с суммой 100% обе комиссии вычитаются автоматически. Для конкретной суммы комиссии добавляются сверху; чтобы вычесть их из суммы, передайте subtract-fee-from-amount: true. Комиссии USDT оплачиваются в USDT, а необходимый для исполнения TRX предоставляет платформа.
Не повторяйте POST автоматически: можно отправить средства ещё раз. Если ответ потерялся или пришла ошибка 500/503, сначала проверьте результат перевода. Отсутствие ID или ответ 404 ещё не означают, что перевод не принят. Если результат неизвестен, обратитесь к менеджеру перед новой отправкой.
У TRON возможен частичный перевод: часть средств уже отправлена. Проверьте сохранённую операцию; повторять POST нельзя.
curl --request POST "${URL}/api/v1/accounts/${ACCOUNT_ID}/transfer" \
--header 'Content-Type: application/json' \
--data-raw '{
"currency": "btc",
"transfer-key": "YOUR_TRANSFER_KEY",
"destinations": [
{
"address": "YOUR_DESTINATION_ADDRESS",
"amount": "100%"
}
],
"fee": "normal"
}'Ответ 200 · основные поля JSON
{"account":"00000000000000000000000000000001","currency":"btc","type":"payment","id":"8312c94cb8d4a9025f7d1c783f2be9a446c0e837965219b46792ac8523d9f068","status":"success","txs":["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]}Проверить транзакцию
Без Transfer Key/accounts/{account}/history/{id}Проверьте поступление или исходящий перевод вашего аккаунта. Для поступления передайте TXID из уведомления, а для исходящего перевода — id из ответа метода 02. Этот ID работает и до появления TXID.
| Параметр | Описание |
|---|---|
idв пути запроса | TXID поступления или ID перевода: 64 шестнадцатеричных символа в нижнем регистре. |
currencyв строке запроса | Рекомендуем передавать всегда. Для USDT TRC20 укажите usdt@trx. |
Найдите адрес заказа в items[].address и сложите суммы его поступлений из items[].amount. Перед выдачей товара сверьте аккаунт, валюту и сумму, проверьте is_confirmed и свежесть данных as_of. Общая сумма ответа может включать несколько адресов.
ID перевода и TXID блокчейна — разные значения. Метод показывает операции вашего аккаунта, которые уже обнаружил сервис.
503 означает, что сейчас проверить подтверждение не удалось. Повторите проверку через время из Retry-After. Не считайте заказ неоплаченным только из-за этой ошибки. 404 — операция не найдена для этого аккаунта.
curl --get "${URL}/api/v1/accounts/${ACCOUNT_ID}/history/${TXID_OR_PAYMENT_ID}" \
--data-urlencode 'currency=btc'Ответ 200 · входящий платёж JSON
{
"account": "00000000000000000000000000000001",
"currency": "btc",
"created": "2026-09-16T12:00:00.000000",
"type": "receipt",
"id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"items": [
{
"txid": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"created": "2026-09-16T12:00:00.000000",
"vout": 0,
"event_kind": "utxo_output",
"address": "YOUR_RECEIVING_ADDRESS",
"amount": 100000,
"block": {
"hash": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
"height": 101,
"deleted": false
},
"is_confirmed": true
}
],
"amount": 100000,
"is_confirmed": true,
"observation_status": "recorded",
"as_of": {
"height": 120,
"block_hash": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
"checked_at": "2026-09-16T12:00:01.000000",
"source_height": 120,
"lag_blocks": 0
}
}Настроить уведомления
Нужен Transfer Key/accounts/{account}Укажите, куда присылать вашему магазину уведомления об оплате. Такой callback будет использоваться для новых адресов, если вы не задали отдельный для заказа.
| Параметр | Описание |
|---|---|
currencyобязательно | Валюта, для которой настраиваются уведомления. У TRX и USDT общие настройки, у BTC и LTC — отдельные. |
transfer-keyобязательно | Ваш секретный Transfer Key. |
callback.urlобязательно | Адрес обработчика на вашем сайте, доступный по HTTPS. Переадресации и адреса локальной сети не поддерживаются. |
callback.methodнеобязательно | POST по умолчанию: данные в JSON. Либо GET: данные в строке запроса. |
callback.dataнеобязательно | Ваши данные, которые вернутся вместе с уведомлением. Например, номер заказа. |
Чтобы выключить уведомления, передайте callback: {}. Значение null у callback адреса включает общие настройки аккаунта. Изменения действуют на новые события; уже созданные уведомления отправляются по прежним настройкам.
Что делать с уведомлением
- Сохраните уведомление. Повторную доставку можно определить по
X-Coinkun-Event-ID. Одно и то же поступление в транзакции учитывайте только один раз. - Проверьте TXID методом 03: валюта, адрес и сумма должны соответствовать заказу. Заголовки callback не являются криптографической подписью.
- Ответьте кодом
200, сContent-Type: text/plainи телом ровно*ok*, включая звёздочки.
Если ответить *ok* на pending, уведомление confirmed уже не придёт: подтверждение нужно будет проверять методом 03. Чтобы дождаться подтверждения через callback, не возвращайте *ok* для pending. Уведомления об изменениях, например dropped, могут прийти и после подтверждения доставки.
Пока вы не подтвердили доставку, сервис повторяет уведомление после нового обработанного блока BTC/LTC или каждых пяти блоков TRON в пределах срока доставки. Возможны повторы и изменение порядка уведомлений.
curl --request PATCH "${URL}/api/v1/accounts/${ACCOUNT_ID}" \
--header 'Content-Type: application/json' \
--data-raw '{
"currency": "btc",
"transfer-key": "YOUR_TRANSFER_KEY",
"callback": {
"url": "https://merchant.example/payments/callback",
"method": "POST",
"data": {}
}
}'Ответ 200 · основные поля JSON
{"account":"00000000000000000000000000000001","currency":"btc","callback":{"url":"https://merchant.example/payments/callback","method":"POST","data":{}}}Пример уведомления JSON
{"account":"00000000000000000000000000000001","currency":"btc","value":100000,"input_address":"YOUR_RECEIVING_ADDRESS","confirmations":1,"input_transaction_hash":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","network":"mainnet","event":"confirmed","status":"confirmed","event_kind":"utxo_output","position":0,"data":{"order_id":"ORDER_1001"}}