Подключение за 15 минут
Один REST-запрос — и у вашего покупателя касса со всеми монетами. Без KYC и без кастодии.
curl -X POST https://api.zerokyc-payments.com/v1/invoices \
-H "Authorization: Bearer pk_test_..." \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order-1042" \
-d '{
"amount": "49.00",
"base_currency": "USD",
"payment_currency": "any",
"order_id": "order-1042",
"ttl_minutes": 360,
"success_url": "https://yourapp.com/paid",
"webhook_url": "https://yourapp.com/webhooks/zkp",
"metadata": { "customer_id": "cust_8821" }
}'Два способа подключить
Оба начинаются в одной консоли и живут на одном API — выбирайте по нужной степени контроля.
Без кода, ~5 минут
Hosted-касса
Инвойс создаётся в консоли или одним вызовом, покупатель уходит по ссылке на кассу — QR-коды, живой статус и локализация уже встроены.
Начать в консолиПолный контроль
API
Инвойсы из вашего бэкенда, своя страница оплаты, подписанные вебхуки. Те же эндпоинты, на которых будет работать live-трафик.
Смотреть APIБлиже библиотеки? SDK для Node.js, PHP и Python плюс плагин WooCommerce.
SDK и плагинОт регистрации до первого подтверждённого вебхука
Семь шагов, рабочий код, никакого маркетингового тумана. Каждый сниппет запускается против production-API с тестовым ключом.
Создайте аккаунт
Регистрация — email, пароль и 2FA; KYC не запрашивается никогда. Вы стартуете на бесплатном тарифе (до $500/мес) и подключаете свои кошельки; покупатели платят сразу в ваш кошелёк, платформа средства не держит.
Возьмите тестовый ключ
Ключ pk_test лежит в разделе API keys. Песочница — тот же production-API (https://api.zerokyc-payments.com): контракт, вебхуки и подписи идентичны, платежи симулируются и подтверждаются мгновенно. Тестовый платёж можно запустить прямо со страницы инвойса в консоли.
Создайте инвойс
Один POST покрывает все включённые монеты: передайте payment_currency "any", и покупатель выберет на кассе. Шлите Idempotency-Key, чтобы ретраи не дублировали инвойс; суммы — в фиате (USD/EUR/RUB) или самой монете; metadata вернётся в каждом вебхуке.
curl -X POST https://api.zerokyc-payments.com/v1/invoices \ -H "Authorization: Bearer pk_test_..." \ -H "Content-Type: application/json" \ -H "Idempotency-Key: order-1042" \ -d '{ "amount": "49.00", "base_currency": "USD", "payment_currency": "any", "order_id": "order-1042", "ttl_minutes": 360, "success_url": "https://yourapp.com/paid", "webhook_url": "https://yourapp.com/webhooks/zkp", "metadata": { "customer_id": "cust_8821" } }'В ответе — по одному варианту на актив и URL hosted-касса:
{ "id": "inv_9f2k...", "status": "pending", "order_id": "order-1042", "amount": "49.00", "base_currency": "USD", "expires_at": "2026-09-06T18:20:11Z", "checkout_url": "https://app.zerokyc-payments.com/pay/inv_9f2k...", "options": [ { "asset": "USDT", "network": "tron", "amount_crypto": "49.00", "rate": "1.0", "status": "open" }, { "asset": "BTC", "network": "bitcoin", "amount_crypto": "0.000524", "rate": "93457.91", "status": "open" }, { "asset": "TON", "network": "ton", "amount_crypto": "9.81", "rate": "4.99", "status": "open" }, { "asset": "ETH", "network": "ethereum", "amount_crypto": "0.0101", "rate": "2970.29", "status": "open" }, { "asset": "BNB", "network": "bsc", "amount_crypto": "0.0815", "rate": "601.22", "status": "open" }, { "asset": "SOL", "network": "solana", "amount_crypto": "0.3267", "rate": "150.06", "status": "open" , { "asset": "XRP", "network": "ripple", "amount_crypto": "9.55", "rate": "2.19", "status": "open" , { "asset": "NEAR", "network": "near", "amount_crypto": "1.8182", "rate": "5.50", "status": "open" } ] }Отправьте покупателя на кассу
Редирект на checkout_url: все монеты с суммами и адресами, QR-код, живой таймер TTL и опрос статуса каждые 5 секунд. EN/RU и white-label встроены. Вот что видит ваш покупатель:
демо — меняется автоматически
Интерактивное демоH#1042HostCare
VPS и VPN хостинг
К оплате
$49.00
Истекает через 29:47
Способ оплаты
49.00 USDT TRC-20
TQn9Y2khES6uN9fgPqwPZLvWrRqXBqYm6B
Ожидаем платежЭто статическое демо. Живой чекаут доступен на /pay/[id] в кабинете мерчанта.
Выбирает покупатель; расчёт — в том же инвойсе.
USDT (TRON)TRXUSDC (Arbitrum)BTCLTCDOGEBCHSOLXRPNEARXMRTONETHBNB
Примите вебхук
payment.confirmed — денежное событие: id инвойса и заказа, оплаченный вариант, транзакция с хэшем, подтверждениями и ссылкой на эксплорер и ваш metadata. Отвечайте 2xx в течение 10 секунд; доставка at-least-once с ретраями 1м → 5м → 30м → 2ч → 12ч — сделайте обработчик идемпотентным по evt.id.
{ "type": "payment.confirmed", "created_at": "2026-09-06T14:02:33Z", "data": { "invoice_id": "inv_9f2k...", "order_id": "order-1042", "amount": "49.00", "base_currency": "USD", "option": { "asset": "TON", "network": "ton", "amount_crypto": "9.81", "paid_amount": "9.81" }, "tx": { "hash": "9d24...", "confirmations": 1, "explorer_url": "https://tonviewer.com/transaction/9d24...", "output_index": 0 }, "metadata": { "customer_id": "cust_8821" } } }Проверьте подпись
Каждый вебхук подписан. Заголовок X-ZKP-Signature несёт t= и v1=; HMAC-SHA256 считается от строки "{t}.{raw_body}" с окном 5 минут. Без этой проверки пейлоаду доверять нельзя.
import { createHmac, timingSafeEqual } from "node:crypto"; // X-ZKP-Signature: t=1694007753,v1=ade537fa... const [t, v1] = Object.fromEntries( req.headers["x-zkp-signature"].split(",").map((p) => p.trim().split("=")), ); const expected = createHmac("sha256", WEBHOOK_SECRET) .update(`${t}.${req.rawBody}`) .digest("hex"); const ok = timingSafeEqual(Buffer.from(expected, "hex"), Buffer.from(v1, "hex")); if (!ok || Math.abs(Date.now() / 1000 - Number(t)) > 300) return res.status(400).end();Перейдите в live
Замените pk_test на pk_live — код не меняется. Перед продом пройдите чек-лист: верификация HMAC включена; идемпотентность по evt.id; обработка underpaid/expired/canceled; Idempotency-Key при создании; учтены rate limits.
Чек-лист перед продом
- Верификация HMAC включена на каждом вебхук-эндпоинте
- Идемпотентность по evt.id на ретраях
- События underpaid, expired и canceled обработаны
- Idempotency-Key отправляется при создании инвойса
- Rate limits учтены (30 инвойсов/мин live)
Не хотите возиться с кодом? Подключим под ключ
Подключение силами команды, которая построила платформу.
- Ваши подключённые кошельки (только direct-касса)
- Касса встроена в ваш сайт или сервис (кнопка, редирект или API)
- Вебхук-ресивер с проверкой HMAC на вашем стеке
- Тестовый платёж в песочнице и контрольный live-платёж
- Краткий чек-лист эксплуатации переданный вам
от $99·Обычно 1–2 рабочих дня.
FAQ по подключению
Требуется ли KYC?
Нет. Регистрация — email, пароль и 2FA; KYC не запрашивается ни на одном этапе — ни в песочнице, ни для live-ключей.
Сколько времени занимает интеграция?
Hosted-касса — около 5 минут без кода. API-путь обычно занимает около часа вместе с проверкой подписи. Под ключ — 1–2 рабочих дня.
Можно принимать платежи вообще без кода?
Да: создайте инвойс в консоли и отправьте покупателю ссылку на кассу или QR. Остальное сделает hosted-страница.
Что нужно для live-ключей?
Подключите кошелёк для любого из 22 активов — live-ключ выдаётся в консоли сразу после. Бесплатный тариф покрывает до $500/мес.
Какие языки и фреймворки поддерживаются?
API — обычный REST поверх HTTPS с подписанными вебхуками. Официальные SDK покрывают Node.js, PHP и Python, есть плагин WooCommerce.
Можете сделать кастомную интеграцию под нас?
Да — это услуга «под ключ». Напишите нам в Telegram, и мы оценим задачу.
Начните принимать крипту сегодня
Аккаунт в песочнице бесплатный и создаётся по одному email.