Поддерживает платежи в BTC

Bitcoin API: приём платежей BTC без запуска ноды

Принимайте платежи в BTC через REST API. Генерируйте депозитные адреса, отслеживайте подтверждения и отправляйте выплаты без запуска полной Bitcoin-ноды.

7 дней бесплатно — для начала не нужна карта и KYC Некастодиальный — приватные ключи остаются под вашим контролем Тарифы от 49 €/мес (490 €/год) — посмотреть тарифы и лимиты запросов

Найдите Bitcoin API, и первым результатом будет справочник RPC от Bitcoin Core. Это канонический интерфейс к сети, и он предполагает, что вы управляете полной нодой: устанавливаете bitcoind, синхронизируете примерно несколько сотен гигабайт данных сети, держите машину онлайн и повторяете цикл обновлений при каждом релизе. Для некоторых проектов это верный путь. Если вы хотите принимать платежи в BTC в своём приложении, это крюк.

Bitcoin API от Chaingateway — это REST-альтернатива. Вы создаёте кошельки и депозитные адреса по обычному HTTPS, отправляете BTC одним POST-запросом и получаете вебхук, когда приходят монеты. Это BTC API в самом прямом смысле: HTTPS на входе, JSON на выходе. Аутентификация — Bearer-токен из бесплатного 7-дневного пробного периода — без ноды, без KYC для старта.

Bitcoin через REST вместо JSON-RPC

JSON-RPC Bitcoin Core хочет синхронизированную ноду перед первым полезным ответом. REST API хочет API-ключ. Разница видна в вашем календаре: первоначальная загрузка блоков занимает дни на типичном оборудовании, а после этого нода потребляет диск и пропускную способность и всё равно нуждается в мониторинге на протяжении всей жизни вашего продукта. Наша статья о blockchain API против blockchain node подробно сравнивает оба подхода. Запускайте собственную ноду, когда вам нужен контроль на уровне политики над вашим представлением о сети; используйте API, когда цель — платежи.

Повседневные вызовы чисто ложатся на REST-модель. Там, где интеграция с нодой оборачивает getnewaddress и listtransactions и опрашивает изменения, API назначает адреса и позволяет вебхуку заниматься наблюдением. Циклы опроса исчезают, а вместе с ними — cron-задачи, тихо ломающиеся по выходным.

Есть и второе отличие. Сырые методы RPC возвращают сырые данные. Chaingateway возвращает структурированный JSON с читаемыми полями, так что ответ может пойти прямо в вашу базу данных, минуя слой парсинга.

Что понадобилось бы с bitcoin-core RPC, рядом

Сравнение становится конкретным, как только вы перечисляете реальную работу. Предположим, задача — «дать каждому клиенту депозитный адрес и зачислить его счёт, когда придёт BTC».

ЗадачаС Bitcoin Core (JSON-RPC)С REST API
Предпосылкасинхронизированная полная нода: bitcoind плюс несколько сотен ГБ данных сетиAPI-ключ
Новый депозитный адресgetnewaddress на клиента, плюс режим резервного копирования кошелька, который вы пишете самиPOST /api/v2/bitcoin/wallets/{wallet}/addresses
Обнаружение входящего BTCнастройка walletnotify, либо опрос listsinceblock / gettransaction по таймеруподписанный POST вебхука на ваш сервер
Отправка BTCsendtoaddress, плюс горячий кошелёк в ноде, настройки комиссии и резервные копии файла кошелька, которые вы контролируетеPOST /api/v2/bitcoin/transactions
Отслеживание подтвержденийповторный опрос gettransaction, пока число не удовлетворит вашу политикуопрос GET /api/v2/bitcoin/transactions/{txid}/decoded, который несёт число подтверждений
Аудиторский следпарсинг вывода listtransactions и дедупликация в собственном кодеGET /api/v2/bitcoin/webhooks/notifications
Текущие затратыдиск, пропускная способность, обновления, мониторингпроблема провайдера

Исходящие платежи заслуживают более пристального взгляда. sendtoaddress выглядит как один вызов, но он предполагает горячий кошелёк внутри вашей ноды, настройки комиссии, которые вы контролируете, и протестированную резервную копию файла кошелька. Даже getbalance у́же, чем кажется: он сообщает баланс кошелька ноды, а не произвольного адреса, так что бухгалтерия в стиле биржи всё равно попадает в ваш код. Ничто из этого не критика Bitcoin Core — это эталонное программное обеспечение для управления сетью, и оно хорошо справляется с этой работой. Оно никогда не задумывалось как платёжный бэкенд веб-приложения, поэтому вокруг него накапливается столько связующего кода.

Отправка BTC через REST

REST-сторона пути отправки — это три эндпоинта. POST /api/v2/bitcoin/wallets создаёт кошелёк, зашифрованный паролем, который Chaingateway не хранит — потеряете его, и никто не сможет восстановить кошелёк, в этом и суть. POST /api/v2/bitcoin/wallets/{wallet}/addresses выводит под ним столько адресов, сколько вам нужно; один кошелёк несёт их все. А POST /api/v2/bitcoin/transactions отправляет:

curl -X POST https://app.chaingateway.io/api/v2/bitcoin/transactions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq",
    "amount": 0.0015,
    "walletname": "treasury",
    "password": "wallet-password",
    "speed": "medium"
  }'

Ответ несёт txid транслированной транзакции. speed принимает fast, medium или slow и задаёт уровень комиссии — компромисс между стоимостью и временем до первого подтверждения. Необязательный subtractfee: true вычитает сетевую комиссию из суммы вместо добавления её сверху, что нужно, когда клиент выводит весь свой баланс.

Это полный вызов отправки — создайте аккаунт и запустите его в testnet со своим собственным кошельком.

Всё необходимое для приёма BTC

Вебхуки (IPN)

Мгновенные уведомления о платежах для входящих транзакций, отправляемые сразу после расчёта соответствующей транзакции в сети. Задайте личный секрет в своём профиле, и каждое уведомление будет нести заголовок X-Signature, который может проверить ваш сервер. Доставки, завершившиеся неудачей, перечислены на GET /api/v2/bitcoin/webhooks/notifications/failed и могут быть повторно отправлены одним вызовом.

Предсказуемые REST-эндпоинты

Создавайте адреса и отслеживайте платежи через чистый, последовательный API. Запросы и ответы выглядят как остальная платформа Chaingateway, поэтому разработчик, интегрировавший одну сеть, читает ответы Bitcoin без руководства.

Безопасная обработка адресов

Некастодиальность по конструкции, со встроенной валидацией адреса. Некорректные или опечатанные адреса отклоняются прежде, чем что-либо коснётся сети.

Декодированные запросы

Данные транзакций приходят как структурированный JSON вместо сырого hex, включая суммы и состояние подтверждений, на которые действует ваш бэкенд.

Время блока и подтверждения: чего ожидать

Bitcoin добавляет блок примерно каждые десять минут, хотя отдельные интервалы сильно варьируются. Каждый новый блок, добытый поверх блока с вашей транзакцией, добавляет подтверждение, и каждое подтверждение усложняет разворот.

Размер платежаПодтверждений ожидать
Небольшой, до примерно $10001 (около 10 минут)
Средний, до примерно $10 0003 (около 30 минут)
Крупный6 (около часа)
Очень крупный, свыше $1 млн10 и более

Шесть подтверждений — около часа — де-факто стандарт «расчёта» со времён ранних бирж, и это остаётся верным по состоянию на середину 2026 года.

Десять минут — это в среднем, а не по расписанию

Корректировка сложности удерживает это со временем, но отдельные интервалы разбросаны широко вокруг этого значения — два блока в минуту случаются, как и сорокаминутные затишья. UX платежей должен это учитывать: «около десяти минут» — это среднее, а не обещание, поэтому ваша страница кассы должна говорить «обычно в течение часа», а не запускать таймер обратного отсчёта, который не может сдержать.

Почему не зачислять при нуле подтверждений?

Потому что до попадания в блок транзакция сидит в мемпуле, где её можно заменить или потратить дважды, и даже самый новый блок может выпасть из цепочки при реорганизации. API разбивает эту работу на две части. Вебхук срабатывает, как только транзакция расчитается в сети — payload несёт сумму, адрес, txid и номер блока, — так что ваш UI может отреагировать сразу. Дальше GET /api/v2/bitcoin/transactions/{txid}/decoded возвращает текущее число подтверждений, так что ваш реестр зачисляет только деньги, достигшие вашего порога. Показывайте прогресс рано, расчитывайте поздно.

UTXO: почему депозиты Bitcoin отличаются от EVM-сетей

У Bitcoin нет балансов аккаунтов. То, что хранит сеть, — это неизрасходованные выходы транзакций — UTXO, каждый — дискретный комок стоимости, привязанный к адресу. «Баланс» кошелька — это число, которое ваше ПО выводит, суммируя каждый UTXO, контролируемый его адресами; протокол никогда не хранит эту сумму нигде. Трата потребляет целые UTXO и создаёт новые, включая выход сдачи обратно к себе, — так же, как оплата счёта на 7 евро десятиевровой купюрой возвращает монеты.

Ethereum работает по противоположной модели. У аккаунта один баланс, сеть хранит его напрямую, и депозит — это приращение. В сетях EVM нормально дать клиенту один адрес и позволить сотне депозитов накапливаться на нём годами.

Для обработки депозитов модель UTXO даёт практическое преимущество: она подталкивает вас к одному адресу на клиента или на счёт, что и так является более чистым дизайном. Каждый входящий платёж — это новый выход на адрес, который вы отслеживаете, поэтому атрибуция однозначна — без разбора memo, без сопоставления по сумме. Это также означает, что «баланс адреса» — вопрос, на который отвечает индексатор, а не сеть, и именно эту бухгалтерию вы отдаёте на аутсорс, используя API с вебхуками вместо запуска этой машинерии самостоятельно. Уведомление сообщает вам: эта сумма, этот адрес, эта транзакция, этот блок. Остальное делает ваш реестр.

Поток депозита, шаг за шагом

Большинство интеграций Bitcoin в Chaingateway сосредоточены на депозитах: адрес на клиента, вебхук на платёж.

  1. Назначьте каждому клиенту депозитный адрес из вашего кошелька (POST /api/v2/bitcoin/wallets/{wallet}/addresses).
  2. Клиент отправляет BTC.
  3. Как только транзакция расчитается в сети, Chaingateway отправит POST с подписанным уведомлением на ваш сервер, несущим сумму, адрес, txid и номер блока.
  4. Ваш бэкенд проверяет подпись и зачисляет счёт, когда число подтверждений — прочитанное из GET /api/v2/bitcoin/transactions/{txid}/decoded — достигает вашего порога.

Две заметки по реализации. Доставка не строго однократна — неудачное уведомление, которое вы повторно отправляете через API, придёт снова целиком, — поэтому сделайте ваш обработчик идемпотентным и привязывайте зачисления к ID транзакции, а не считайте callback-и. И подтверждения существуют не просто так: самый новый блок всё ещё может стать сиротой при реорганизации, поэтому решение о зачислении принадлежит числу подтверждений, а не только вебхуку.

Полезно моделировать каждый депозит как небольшой конечный автомат, а не булево значение. Заказ начинается с awaiting_payment, переходит в detected, когда срабатывает вебхук, продвигается через confirming, пока ваш поллер отслеживает число подтверждений, и попадает в settled, как только достигнут порог, — с underpaid и expired как явными боковыми выходами. Клиенты, отправляющие 0,00095 BTC против счёта в 0,001 BTC, существуют — обычно потому что их кошелёк вычел сетевую комиссию из введённой суммы; решите заранее, поглощает ли ваш допуск недостачу, или заказ ждёт доплаты. И дайте счетам срок истечения. Курсы обмена движутся, поэтому адрес, соответствовавший сумме счёта в понедельник, не должен расчитываться по устаревшей цене на следующей неделе.

Для аудита и сверки каждое уведомление, полученное вашим аккаунтом, можно перечислить через API:

cURL
curl https://app.chaingateway.io/api/v2/bitcoin/webhooks/notifications \
  -H "Authorization: Bearer YOUR_API_KEY"

Сначала testnet

Добавьте заголовок X-Network: testnet, и каждый вызов на этой странице выполнится против тестовой сети Bitcoin: те же маршруты, те же формы ответов, монеты без ценности. Краники бесплатно раздают тестовый BTC, так что весь поток депозита — адрес, платёж, вебхук, подтверждения — можно отрепетировать от начала до конца, не потратив ни одного сатоши.

Держите заголовок за конфигурацией, а не разбросанным по коду, и дайте вашему staging-окружению отдельный callback URL, чтобы тестовые депозиты не могли просочиться в продакшн-реестр. Когда репетиция сработает, уберите заголовок. Больше ничего в интеграции не меняется, в этом и суть: первый депозит в mainnet должен быть скучным.

Когда что-то ломается

Платёжный бэкенд зарабатывает свою репутацию в плохие дни, так что планируйте пути сбоев явно.

На уровне HTTP правила стандартны для REST. 401 означает, что Bearer-токен неверен или отсутствует; исправьте ключ, а не повторяйте. Другие ответы 4xx указывают на сам запрос — логируйте тело, называющее проблему, и относитесь к этому как к багу. Ответы в диапазоне 5xx и таймауты временны; повторяйте их с задержкой.

Специфичные для Bitcoin сценарии сбоя живут выше HTTP. Депозит, который никогда не подтверждается, обычно заплатил слишком маленькую комиссию и застрял в мемпуле; он может подтвердиться часы спустя или полностью выпасть, поэтому detected и settled должны оставаться отдельными состояниями в вашей системе. Уведомление о сумме ниже суммы счёта — это бизнес-решение, а не ошибка; обрабатывайте это в коде, а не в очереди поддержки. И если ваша конечная точка вебхука была недоступна, неудачные доставки ждут вас: GET /api/v2/bitcoin/webhooks/notifications/failed перечисляет их, POST /api/v2/bitcoin/webhooks/notifications/{id}/retry повторно отправляет каждую, а полный список на GET /api/v2/bitcoin/webhooks/notifications позволяет сравнить с реестром и зачислить пропущенное. Запускайте это сравнение каждую ночь, даже когда ничего не выглядит неправильным. Сверка, запускающаяся только после инцидентов, находит свои баги в продакшене.

Нужны стейблкоины рядом с BTC?

У самого Bitcoin нет USDT или USDC — стейблкоины живут в других сетях. Что даёт общая платформа — это форa: ваша интеграция Bitcoin уже говорит на том же API, что и наши эндпоинты Ethereum и TRON. Принимайте BTC сегодня, добавьте USDT на TRON в следующем спринте тем же ключом и тем же обработчиком вебхуков. Обзор blockchain API перечисляет все семь поддерживаемых сетей.

Практический порядок для большинства команд: сначала запустите депозиты BTC, потому что это то, что клиенты просят по имени, затем позвольте платёжным данным подсказать, какой стейблкоин-рельс добавить вторым. В Chaingateway этот второй рельс переиспользует вашу проверку подписи, вашу задачу сверки и ваш конечный автомат депозита без изменений.

Почему разработчики строят на Bitcoin

  • У него самая долгая история среди всех блокчейнов, работающая с 2009 года, и самое широкое признание среди конечных пользователей.
  • Сеть расчитывается круглосуточно. Нет банковских часов и региональных отсечек.
  • Подтверждения следуют предсказуемому ритму, с новым блоком примерно каждые десять минут, что упрощает рассуждения о платёжных потоках.
  • Принятие — крупнейшее среди всех криптосетей, поэтому «принимаете ли вы Bitcoin?» всё ещё первый вопрос, который задают клиенты.

Ни одно из этих свойств не появилось из обновления дорожной карты; это те же гарантии, с которыми сеть была выпущена. Эта стабильность — аргумент в пользу BTC для продуктов с долгим горизонтом: интеграция, построенная в этом году, не устареет из-за поворота протокола в следующем — а это больше, чем может заявить большинство платёжных стеков.

Построено для реальных платёжных сценариев

Очевидный случай — касса: клиент выбирает Bitcoin, и ваше приложение назначает адрес; вебхук подтверждает платёж. Те же строительные блоки несут и более тяжёлые нагрузки. Биржи и игровые платформы держат по одному депозитному адресу на пользователя и зачисляют балансы при подтверждении. Потоки выплат и денежных переводов проталкивают трансграничные переводы без корреспондентских банков посередине. Подписные сервисы генерируют свежий адрес счёта каждый цикл и позволяют вебхуку закрывать его.

Что объединяет эти случаи — это форма работы. Bitcoin занимается расчётами; ваше приложение — состоянием. API находится между ними и превращает события сети в HTTP-вызовы, которые ваш фреймворк уже умеет маршрутизировать, — поэтому случай кассы и случай биржи работают на одной и той же горстке эндпоинтов.

Интеграция за три шага

Step 1

Получите API-ключ. Регистрация бесплатна, и пробный период начинается без KYC.

Step 2

Выполните первый запрос. Подтвердите ключ через GET /api/account, затем создайте кошелёк и ваши депозитные адреса.

Step 3

Настройте вебхуки и запустите продакшен. Направьте уведомления на вашу конечную точку, проверьте HMAC-подпись, затем уберите заголовок X-Network: testnet — идентичный код заработает в mainnet.

Что работает в какой сети

Bitcoin — единственная строка без столбца переводов токенов: у сети нет стандарта токенов, поэтому нативный BTC работает через собственную модель кошелька вместо вызова в стиле ERC-20. Вот как это выстраивается рядом с другими шестью сетями.

СетьАдресаПереводы токеновВебхуки депозитов
BitcoinPOST /api/v2/bitcoin/wallets/{wallet}/addresses— (нет стандарта токенов)GET /api/v2/bitcoin/webhooks/notifications
EthereumPOST /api/v2/ethereum/addresses/importERC-20: POST /api/v2/ethereum/transactions/erc20GET /api/v2/ethereum/webhooks/notifications
TRONPOST /api/v2/tron/addresses/importTRC-20 и TRC-10: POST /api/v2/tron/transactions/trc20 и .../trc10GET /api/v2/tron/webhooks/notifications
SolanaPOST /api/v2/solana/addressesSPL: POST /api/v2/solana/transactions/SPL
BNB Smart ChainPOST /api/v2/bsc/addresses/importBEP-20: POST /api/v2/bsc/transactions/bep20GET /api/v2/bsc/webhooks/notifications
PolygonPOST /api/v2/polygon/addresses/importERC-20: POST /api/v2/polygon/transactions/erc20GET /api/v2/polygon/webhooks/notifications
ArbitrumPOST /api/v2/arbitrum/addresses/importERC-20: POST /api/v2/arbitrum/transactions/erc20GET /api/v2/arbitrum/webhooks/notifications

Две сноски для правильного прочтения таблицы. Во-первых: TRON — самая глубокая интеграция на платформе. Помимо перечисленных выше маршрутов, в справочнике описаны стейкинг (POST /api/v2/tron/freeze и /delegate), параметры сети и пара для самостоятельного подписания — /transactions/trc20/build для построения транзакции и /transactions/broadcast для отправки транзакции, подписанной локально. Если ваша служба комплаенса настаивает, что приватные ключи никогда не покидают ваши серверы, этот паттерн build-and-broadcast — ваш путь.

Во-вторых: прочерк означает, что текущий справочник не документирует маршрут v2 для этой ячейки, а не то, что сеть второсортна. У Bitcoin нет стандарта токенов, поэтому ячейка токенов пуста — нативный BTC работает через собственную модель кошелька: создайте зашифрованный паролем кошелёк через POST /api/v2/bitcoin/wallets, деривируйте депозитные адреса под ним и отправляйте через POST /api/v2/bitcoin/transactions. Справочник Solana охватывает создание адресов, переводы SOL и SPL, а также запросы баланса и блоков, но пока без вебхуков. Для всего, что не перечислено здесь, актуальное состояние — в справочнике API.

Часто задаваемые вопросы

Да. Это работает как Bitcoin payment API: генерируйте депозитный адрес на клиента, зарегистрируйте вебхук и зачисляйте заказ, когда входящий BTC подтвердится, без запуска полной ноды или использования кастодиана. Выплаты уходят через POST /api/v2/bitcoin/transactions. Весь цикл приёма и расчёта работает через REST.

Кошельки защищены паролем и хранятся зашифрованными, а архитектура некастодиальная: без ваших учётных данных средства не могут быть перемещены.

Нет. Chaingateway управляет инфраструктурой; ваше приложение говорит по HTTPS. Если вы взвешиваете самостоятельную ноду против API, наше сравнение нод честно раскрывает сторону обслуживания.

Да. Добавьте X-Network: testnet к любому запросу, и он выполнится против тестовой сети, с теми же эндпоинтами и форматами ответов, но бесполезными монетами.

Это зависит от вашей толерантности к риску. Вебхук сообщает вам, что платёж расчитался; текущее число подтверждений приходит из GET /api/v2/bitcoin/transactions/{txid}/decoded. Так что вы задаёте порог по сумме: небольшой заказ может отгрузиться после первого подтверждения, крупный вывод — после нескольких. Раздел о времени блоков выше перечисляет пороги, которые используют большинство платформ.

Блоки приходят примерно каждые десять минут в среднем, с большим разбросом в обе стороны. Транзакция с достаточной комиссией достигает первого подтверждения через десять минут в среднем; классический стандарт в шесть подтверждений занимает около часа. Уровень комиссии тоже важен: транзакция, недоплатившая в загруженный период, дольше ждёт первого блока, иногда часами.

Реорганизация заменяет самый новый блок или блоки конкурирующей цепочкой, и любая транзакция, существовавшая только в заменённых блоках, возвращается в статус ожидания. Однобло́чные реорганизации редки, а более глубокие — ещё реже, но именно из-за них существуют пороги подтверждений. Зачисляйте только после вашего порога, и реорганизации останутся статистикой, а не инцидентом.

Атрибуция. На общем адресе вам приходится сопоставлять платежи с клиентами по сумме или времени, что ломается в тот день, когда два счёта складываются в одну и ту же сумму. Выделенный адрес делает каждый входящий выход самоидентифицирующимся, и поскольку создание адресов ничего не стоит, экономить на них нет причины.

Процессор обычно берёт депозит средств под опеку, расчитывается позже и требует KYC перед выплатами. Chaingateway — это API поверх самой сети: депозиты попадают на адреса, привязанные к вашему собственному кошельку, и что происходит дальше — решение вашего кода. Вы получаете сырые строительные блоки, а не готовое мнение о кассе.

Да. Тот же API покрывает Ethereum, TRON, Solana, BNB Smart Chain, Polygon и Arbitrum. Маршруты различаются только сегментом сети в пути.

Тарифы и их лимиты перечислены на странице тарифов. Каждый тариф начинается с бесплатного 7-дневного пробного периода. Самый быстрый способ оценить — прогон в testnet. Создайте аккаунт и направьте вебхук на request bin. Отправьте себе тестовый BTC; если поток подходит, mainnet — на расстоянии одного заголовка.

Готовы принимать платежи в Bitcoin?

Создайте аккаунт на app.chaingateway.io/register, создайте кошелёк и отправьте тестовый перевод BTC в testnet. Полный справочник эндпоинтов — в документации, а тарифы и лимиты запросов — на отдельной странице.