Гайд · Bitcoin

Как принимать Bitcoin на сайте: без посредников и ошибок

Обновлено: 4 сентября 2026

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

Чем приём BTC отличается от приёма USDT

Если вы уже читали гайд про USDT TRC20 — механика похожа, но три отличия важны:

  • Курс. Счёт в BTC выставляется по курсу на момент создания и живёт ограниченное время: за час курс может уехать на проценты. Отсюда таймер на странице оплаты — это не украшение, а защита от курсового спора.
  • Скорость. Блок — в среднем раз в 10 минут. Платёж виден в сети через секунды после отправки, но надёжным становится через подтверждения: для BTC мы зачисляем после 2 блоков — обычно 10–30 минут.
  • Комиссия. Её платит отправитель, и она конкурентная: в час пик дешёвые транзакции ждут дольше. На приёме вас это почти не касается — платит клиент, а вот на выплатах feeRate выбираете вы (подробнее — в гайде про комиссии сетей).

Свежий адрес на каждый счёт — не паранойя, а сверка

Главная ошибка самодельного приёма — один адрес на все платежи. Причин выдавать новый адрес каждому счёту две, и обе практические:

  • Сверка. Уникальный адрес — единственный надёжный способ привязать платёж к заказу: в Bitcoin нет «комментария к переводу». Два клиента с одинаковой суммой на одном адресе — неразрешимая задача.
  • Приватность. Блокчейн публичен: по одному адресу любой клиент — и любой конкурент — видит всю вашу выручку. Свежие адреса из одного HD-кошелька рвут эту картинку, при этом баланс остаётся общим: HD-кошелёк — это одна seed-фраза, из которой детерминированно выводятся тысячи адресов.

Шлюз делает это автоматически: каждый счёт получает собственный native segwit-адрес (bech32, «bc1q…») — у таких транзакций комиссия ниже, чем у легаси-форматов.

Подтверждения и реорганизация: почему «видно в сети» ≠ «оплачено»

Транзакция появляется в сети мгновенно — но это лишь заявка, стоящая в очереди. Пока она не попала в блок, её можно вытеснить конфликтующей. И даже попадание в блок — не финал: последние блоки цепи изредка переигрываются (реорганизация, reorg), и транзакция из откатившегося блока возвращается в очередь — или исчезает.

Правило нулевых подтверждений
Никогда не выдавайте товар по факту «транзакция видна в сети». Zero-conf платёж — это обещание, а не деньги. Для BTC мы считаем платёж окончательным после 2 подтверждений, и вебхук об оплате приходит только тогда. Шлюз при этом следит за реорганизациями: если блок с платежом откатился — статус счёта честно вернётся, а не «зависнет оплаченным».

Почему именно 2, а не 1 и не 6? Одноблоковые реорганизации в Bitcoin случаются регулярно, двухблоковые — исключительная редкость. Для розничных сумм 2 блока — разумный баланс скорости и надёжности; биржи ждут 3–6, потому что у них другие суммы.

Недоплаты, переплаты, опоздания

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

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

Интеграция: те же три шага

Механика не отличается от USDT — регистрация, ключ, POST:

curl -X POST https://coinrail.net/v1/invoices \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "coin": "BTC",
    "amount": "0.01",
    "externalRef": "order-4821",
    "callbackUrl": "https://shop.example/webhook"
  }'

В ответе — свежий адрес, invoiceId и checkoutUrl: готовая страница оплаты с QR-кодом, таймером и живым статусом. Вебхук с подписью придёт после 2 подтверждений. Полный справочник — в документации; примеры на PHP, Python, Node и Java — там же.

Litecoin подключается тем же вызовом с "coin": "LTC" — блоки быстрее (2.5 минуты), подтверждений ждём 3, комиссии копеечные. Хороший вариант «быстрого BTC» для небольших сумм.

Частые вопросы

Сколько ждать зачисления Bitcoin-платежа?
Мы зачисляем после 2 подтверждений — в среднем 10–30 минут после отправки. Платёж виден почти сразу, и страница оплаты показывает его статус живьём, но вебхук «оплачено» приходит только после подтверждений — раньше выдавать товар небезопасно.
Почему нельзя принимать всё на один адрес?
Две причины: платежи перестают привязываться к заказам (в Bitcoin нет комментария к переводу), а публичный блокчейн показывает по одному адресу всю вашу выручку любому желающему. Свежий адрес на каждый счёт решает обе проблемы, баланс при этом остаётся общим — это один HD-кошелёк.
Что такое реорганизация цепи и правда ли это риск?
Последние блоки цепи изредка переигрываются, и транзакция из откатившегося блока может исчезнуть. Одноблоковые реорганизации — штатное явление сети, поэтому зачислять по одному подтверждению рискованно, а по нулю — нельзя. Шлюз отслеживает реорганизации и откатывает статус счёта, если блок с платежом выпал из цепи.
Клиент заплатил с биржи, и сумма пришла меньше. Это нормально?
Да, частый случай: биржа удерживает комиссию вывода из суммы. Счёт перейдёт в недоплату, клиент увидит остаток на странице оплаты и сможет дослать. Совет клиентам в таких случаях — выбирать «получатель получит ровно X», если их биржа это умеет.
Чьи ключи у кошелька, на который приходят BTC?
Кошелёк создаётся по BIP39, и seed-фразу можно забрать в кабинете в любой момент — средства восстанавливаются во внешнем кошельке без участия шлюза (потребуется ручное указание пути деривации — подробности в гайде про кастодиальность). Проверьте, может ли это ваш текущий сервис.

Дальше: комиссии сетей BTC/LTC/TRON — кто и за что платит; у кого ваш сид; технический справочник — в документации API.