Crynova API v1

Документация API Crynova

REST API для приёма криптоплатежей. Создавайте счета в крипте или фиате, получайте вебхуки об оплате, проверяйте статусы — за считанные минуты.

Безопасно

HMAC-подпись вебхуков, права ключа, IP-whitelist.

Крипто + фиат

Счёт в фиате — клиент выберет крипту при оплате.

Вебхуки

Мгновенные уведомления о статусах с ретраями.

Введение

Crynova API позволяет принимать криптоплатежи программно. Все запросы — через HTTPS, ответы — в формате JSON. Базовая интеграция: создать счёт, перенаправить клиента на checkout, получить вебхук об оплате.

Более 8 криптовалют и сетей: BTC, ETH, LTC, DOGE, TRON, USDT (TRC20/ERC20/BEP20).

Счета в 26 фиатных валютах с автоконвертацией в крипту по курсу.

Подписанные вебхуки на события invoice.created/paid/expired и другие.

Idempotency-ключи, права на ключ и защита по IP.

Базовый URL

Все эндпоинты начинаются с базового URL. Все ответы — JSON.

HTTP
https://crynova.io/api/v1
  • Только HTTPS. HTTP-запросы отклоняются.
  • Все суммы передаются как строки (string) с точностью до 18 знаков — без float.

Аутентификация

Передавайте API-ключ в заголовке Authorization (Bearer) или X-Api-Key. Ключ создаётся в кабинете проекта.

HTTP
Authorization: Bearer cryn_xxxxxxxxxxxxxxxx
# или через заголовок
X-Api-Key: cryn_xxxxxxxxxxxxxxxx

Никогда не передавайте ключ в query-параметрах или теле запроса — он попадает в логи и заголовки Referer. Только заголовок.

Настройка

  1. 1

    Зарегистрируйтесь и создайте проект в кабинете Crynova.

  2. 2

    Включите нужные валюты в настройках проекта.

  3. 3

    Создайте API-ключ: Проект, API ключи, Create new key. Скопируйте ключ сразу — он показывается только один раз.

  4. 4

    Укажите webhook URL в настройках, чтобы получать уведомления об оплате.

Права API-ключа

PermissionДоступ
currencies.readЧитать список валют
invoices.createСоздавать счета
invoices.readЧитать счета и статусы
invoices.cancelОтменять счета

Если при создании ключа не выбрано ни одного права — ключ имеет полный доступ.

GET /api/v1/currencies

Возвращает активные криптовалюты (с сетями, мин/макс, комиссией) и список фиатных кодов, доступных для счетов.

cURL
curl https://crynova.io/api/v1/currencies \
  -H "Authorization: Bearer cryn_xxx"

Ответ

JSON
{
  "data": [
    {
      "code": "USDT_TRC20",
      "name": "Tether USD (TRC-20)",
      "network": "tron",
      "contract_address": "TR7NHq...",
      "decimals": 6,
      "confirmations_required": 20,
      "min_amount": "1",
      "max_amount": null,
      "estimated_fee": "1.4",
      "supports_memo": false
    }
  ],
  "fiat": ["USD","EUR","GBP","JPY","CNY","RUB", ...]
}
GET /api/v1/balance

Возвращает балансы мерчанта по каждой валюте: доступно (available), в блокировке (locked) и всего (total). Нужно разрешение balance.read.

cURL
curl https://crynova.io/api/v1/balance \
  -H "Authorization: Bearer cryn_xxx"

Ответ

JSON
{
  "data": [
    {
      "currency": "USDT_TRC20",
      "network": "tron",
      "available": "152.40",
      "locked": "0",
      "total": "152.40"
    },
    {
      "currency": "BTC",
      "network": "bitcoin",
      "available": "0.0123",
      "locked": "0",
      "total": "0.0123"
    }
  ]
}
POST /api/v1/invoices

Создаёт счёт на оплату. В поле currency передайте крипто-код (прямая оплата) или фиат-код (клиент выберет крипту на checkout).

Параметры

ПолеТипОбязат.Описание
currencystringдаКрипто-код из /currencies (напр. USDT_TRC20) или фиат-код (USD, EUR, UAH).
amountstring|numberдаСумма в указанной валюте.
order_idstringнетВаш идентификатор заказа (до 255).
descriptionstringнетОписание (до 1000).
expires_inintegerнетTTL счёта в минутах (5–1440).
metadataobjectнетПроизвольные строковые пары, возвращаются в вебхуке.

Пример: прямой крипто-счёт

cURL
curl -X POST https://crynova.io/api/v1/invoices \
  -H "Authorization: Bearer cryn_xxx" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: order-1048" \
  -d '{
    "currency": "USDT_TRC20",
    "amount": "25.00",
    "order_id": "ORD-1048",
    "description": "Order #1048",
    "expires_in": 30,
    "metadata": { "customer_id": "42" }
  }'

Ответ

JSON
{
  "invoice_id": "9ae4cd13-...",
  "order_id": "ORD-1048",
  "status": "pending",
  "price_amount": "25",
  "price_currency": "USDT_TRC20",
  "pay_currency": "USDT_TRC20",
  "currency": "USDT_TRC20",
  "amount": "25.000000000000000000",
  "amount_received": "0",
  "pay_address": "TR7NHq...",
  "pay_memo": null,
  "expires_at": "2026-06-11T12:30:00+00:00",
  "checkout_url": "https://crynova.io/pay/9ae4cd13-...",
  "transactions": []
}

Счета в фиате

Передайте в currency фиатный код — счёт создаётся в фиате, а клиент сам выбирает криптовалюту на странице оплаты. Сумма конвертируется по текущему курсу (официальные источники) и фиксируется после выбора.

Поддерживаемые фиатные валюты:

USD, EUR, GBP, JPY, CNY, RUB, INR, AUD, CAD, SGD, HKD, TRY, AED, THB, MYR, PHP, IDR, VND, KZT, UAH, BYN, UZS, KGS, AMD, AZN, PLN

Запрос

JSON
{
  "currency": "UAH",
  "amount": "499.00",
  "order_id": "ORD-1001"
}

Ответ

JSON
{
  "status": "pending",
  "price_amount": "499",
  "price_currency": "UAH",
  "pay_currency": null,
  "amount": null,
  "pay_address": null,
  "checkout_url": "https://crynova.io/pay/..."
}
  1. 1 Создайте счёт с фиатным currency — получите checkout_url.
  2. 2 Перенаправьте клиента на checkout_url — он выберет крипту, увидит сумму по курсу.
  3. 3 После оплаты в вебхуке появятся pay_currency, amount, pay_address.
GET /api/v1/invoices/{invoice_id}

Возвращает полную информацию о счёте по его UUID.

cURL
curl https://crynova.io/api/v1/invoices/9ae4cd13-... \
  -H "Authorization: Bearer cryn_xxx"
GET /api/v1/invoices/{invoice_id}/status

Лёгкий эндпоинт для опроса статуса оплаты (polling).

JSON
{
  "invoice_id": "9ae4cd13-...",
  "status": "paid",
  "is_final": true,
  "amount": "25.0",
  "amount_received": "25.0",
  "currency": "USDT_TRC20",
  "confirmations": 20,
  "confirmations_required": 20,
  "paid_at": "2026-06-11T12:31:00+00:00"
}

Возможные статусы: pending, waiting_confirmations, paid, underpaid, overpaid, expired, refunded.

GET /api/v1/invoices

Возвращает список ваших счетов с пагинацией и фильтрами.

cURL
curl "https://crynova.io/api/v1/invoices?status=paid&per_page=50" \
  -H "Authorization: Bearer cryn_xxx"

Фильтры: status, order_id, currency, per_page (1–100).

POST /api/v1/invoices/{invoice_id}/cancel

Отменяет счёт. Только для pending/waiting_confirmations без полученных средств.

cURL
curl -X POST https://crynova.io/api/v1/invoices/9ae4cd13-.../cancel \
  -H "Authorization: Bearer cryn_xxx"
GET /api/v1/statistics

Агрегированная статистика по счетам за период: создано, оплачено, конверсия и оборот. Фильтры: date_from, date_to, currency. Нужно разрешение statistics.read.

cURL
curl "https://crynova.io/api/v1/statistics?date_from=2026-01-01&date_to=2026-06-30" \
  -H "Authorization: Bearer cryn_xxx"

Ответ

JSON
{
  "data": {
    "invoices_total": 1280,
    "invoices_paid": 1190,
    "invoices_pending": 14,
    "invoices_expired": 76,
    "conversion": 92.97,
    "paid_volume": [{ "currency": "USD", "amount": "84210.50" }],
    "period": { "from": "2026-01-01", "to": "2026-06-30" }
  }
}
POST /api/v1/withdrawals

Создаёт запрос на вывод средств. Сумма резервируется на балансе. Нужно разрешение withdrawals.create.

cURL
curl -X POST https://crynova.io/api/v1/withdrawals \
  -H "Authorization: Bearer cryn_xxx" \
  -H "Content-Type: application/json" \
  -d '{"currency":"USDT_TRC20","amount":"50","to_address":"TR7NHq...","memo":null}'

Ответ

JSON
{
  "withdrawal_id": "0c3f...",
  "status": "pending",
  "currency": "USDT_TRC20",
  "amount": "50",
  "to_address": "TR7NHq...",
  "tx_hash": null,
  "created_at": "2026-06-19T10:00:00+00:00"
}

Вывод создаётся со статусом pending и выполняется после подтверждения в админпанели. Список и детали — через GET-методы (разрешение withdrawals.read).

GET /api/v1/withdrawals · GET /api/v1/withdrawals/{id}
POST /api/v1/static-wallets

Выдаёт постоянный (статический) адрес для пополнений по валюте — получи-или-создай. Подтверждённые переводы на этот адрес автоматически зачисляются на баланс и отправляют вебхук wallet.deposit. Нужны разрешения wallets.read / wallets.create.

cURL
curl -X POST https://crynova.io/api/v1/static-wallets \
  -H "Authorization: Bearer cryn_xxx" \
  -H "Content-Type: application/json" \
  -d '{"currency":"BTC"}'

Ответ

JSON
{
  "currency": "BTC",
  "network": "bitcoin",
  "address": "bc1q...",
  "memo": null
}

H2H (host-to-host)

Прямой крипто-флоу без редиректа: создайте счёт с крипто-валютой (например BTC) — в ответе сразу возвращаются pay_address и pay_memo, которые можно показать клиенту в собственном интерфейсе. Подтверждение оплаты приходит вебхуком.

cURL
curl -X POST https://crynova.io/api/v1/invoices \
  -H "Authorization: Bearer cryn_xxx" \
  -H "Content-Type: application/json" \
  -d '{"currency":"BTC","amount":"0.0025","order_id":"H2H-1"}'

Ответ

JSON
{
  "invoice_id": "8a1c...",
  "status": "pending",
  "pay_currency": "BTC",
  "amount": "0.0025",
  "pay_address": "bc1q...",
  "pay_memo": null,
  "expires_at": "2026-06-19T10:30:00+00:00"
}

Встраивание чекаута (iframe)

Показывайте чекаут Crynova прямо на своей странице — без редиректа. Подключите загрузчик embed.js, смонтируйте инвойс, и ваша страница получит уведомление в реальном времени, как только он оплачен или истёк. Встраивание разрешено на всех страницах /pay/*.

Встроенный блок

HTML
<div id="crynova-checkout"></div>
<script src="https://crynova.io/embed.js"></script>
<script>
  Crynova.checkout({
    uuid: 'INVOICE_UUID',
    mount: '#crynova-checkout',
    onPaid:    function () { window.location = '/thank-you'; },
    onExpired: function () { alert('Payment expired'); }
  });
</script>

Модальное (всплывающее) окно

JS
Crynova.open({ uuid: 'INVOICE_UUID', onPaid: fn });

События

Iframe отправляет вашей странице сообщения (ready, resize, status). SDK превращает их в колбэки onReady, onResize, onStatus, onPaid и onExpired. Если слушаете вручную — всегда проверяйте, что event.origin совпадает с вашим хостом Crynova.

JSON
{ "source": "crynova", "type": "status", "uuid": "9ae4...", "status": "paid", "is_final": true }

onPaid в браузере — только для UX (редирект, чек). Всегда выполняйте заказ по подписанному вебхуку — именно он источник правды. Создавайте инвойс на сервере; никогда не раскрывайте API-ключ в браузере.

Вебхуки

Crynova отправляет POST-запрос на ваш webhook URL при изменении статуса счёта. Каждый запрос подписан HMAC-SHA256.

СобытиеКогда
invoice.createdСчёт создан.
invoice.waiting_confirmationsТранзакция в мемпуле/блоке, ожидает подтверждений.
invoice.paidОплачено полностью.
invoice.underpaidПолучено меньше суммы.
invoice.overpaidПолучено больше суммы.
invoice.expiredВремя вышло или отменено.
invoice.refundedВыполнен возврат.
wallet.depositПодтверждённый депозит на статический кошелёк (зачислено на баланс).

Пример payload

HTTP
POST {your_webhook_url}
X-Crynova-Event: invoice.paid
X-Crynova-Sig: sha256=hmac(secret, body)
X-Crynova-Delivery: 123

{
  "event": "invoice.paid",
  "invoice_id": "9ae4cd13-...",
  "order_id": "ORD-1048",
  "status": "paid",
  "price_amount": "499",
  "price_currency": "UAH",
  "pay_currency": "USDT_TRC20",
  "amount": "12.5",
  "received": "12.5",
  "metadata": { "customer_id": "42" }
}

Проверка подписи (PHP)

PHP
$payload = file_get_contents('php://input');
$signature = $_SERVER['HTTP_X_CRYNOVA_SIG'] ?? '';
$expected = 'sha256=' . hash_hmac('sha256', $payload, $YOUR_WEBHOOK_SECRET);

if (! hash_equals($expected, $signature)) {
    http_response_code(403);
    exit('Invalid signature');
}
// trusted — process the event
http_response_code(200);

Повторы при ошибке доставки: 5мин, 30мин, 2ч, 8ч, 24ч. Отвечайте кодом 2xx для подтверждения получения.

Коды ошибок

HTTPЗначение
200OK — успех.
401Неверный или отсутствующий API-ключ.
403Нет прав / IP не разрешён / мерчант неактивен.
404Счёт не найден.
422Ошибка валидации или недопустимое действие.
429Превышен лимит запросов.

Лимиты и безопасность

Rate limit: 60 запросов/мин на ключ (заголовки X-RateLimit-*).

Idempotency-Key: заголовок делает повторный POST безопасным — вернётся первый ответ в течение 24 часов.

IP-whitelist: можно ограничить ключ списком IP/CIDR в настройках ключа.

Права: выдавайте ключу только необходимые разрешения.

Готовы интегрироваться?

Создайте проект, получите API-ключ и примите первый платёж за считанные минуты.

Мы используем cookie, чтобы сайт работал корректно и чтобы улучшать ваш опыт. Продолжая пользоваться сайтом, вы соглашаетесь с нашей Политикой конфиденциальности.