Большинство гайдов “как принимать крипту” пропускают самое важное: в момент когда клиент нажимает Pay, кто держит деньги? Кастодиальные gateway-сервисы — BitPay, Coinbase Commerce, NOWPayments, Plisio — принимают временное хранение средств. Этот один миг кастодии и есть регуляторный триггер, который тянет за собой merchant KYC, задержки выплат, заморозки, страновые баны и весь налогово-казначейский overhead, который идёт с ролью “мерчанта”. Non-custodial payment link роутит свап прямо из кошелька клиента в твой, и деньги вообще не оседают у третьей стороны. Этот гайд — про архитектуру, trade-off и как начать принимать платежи меньше чем за минуту.
Ландшафт 2026: custodial vs non-custodial vs self-hosted
Сегодня есть три реальные архитектуры приёма криптоплатежей, и маркетинговый язык между ними намеренно размыт. Если содрать брендинг, получается так:
| Gateway | Custodial? | Нужен аккаунт мерчанта | Бизнес-верификация | Клиент платит разными монетами | Получаешь в нужной монете | Self-host |
|---|---|---|---|---|---|---|
| BitPay | Да | Да | Да | Да | Ограниченно | Нет |
| Coinbase Commerce | Да (с модели 2024) | Да | Да | Да | Ограниченно | Нет |
| NOWPayments | Да | Да | По уровням | Да | Ограниченно | Нет |
| Plisio | Да | Да | По уровням | Да | Ограниченно | Нет |
| BTCPay Server | Нет (self-custody) | Нет | Нет | Да (с плагинами) | Ограниченно (нет встроенного свапа) | Да |
| SwapZilla Pay | Нет | Нет | Нет | Да | Да | Нет |
Первые четыре — gateway, которые берут custody, конвертируют и выплачивают тебе. BTCPay Server — self-hosted антипод: ты держишь Bitcoin-ноду и свой инвойс-сервер, деньги идут напрямую к тебе на кошелёк, но операционная нагрузка на тебе и проблему конвертации ты решаешь сам. SwapZilla Pay сидит между ними — хостится как gateway, но некастодиальный как BTCPay, и свап встроен в routing.
Если gateway может заморозить тебе выплату — он кастодиальный, что бы ни писали на главной.
Trade-off простой. Custodial: быстрый запуск, тяжёлый compliance, реальный риск заморозки. Self-hosted: максимальный суверенитет, недели на деплой, нет встроенного multi-coin свапа. Non-custodial hosted link: быстрый запуск, нет онбординга мерчанта, конвертация встроена, но ты полагаешься на routing агрегатора к провайдерам, а не на свою ноду.
Что на самом деле значит “non-custodial payment link”
Термин используют достаточно вольно, чтобы стоило быть точным. “Non-custodial” в этом контексте значит три вещи одновременно:
- Никакая третья сторона не держит твой settlement-баланс. Актив, который ты заказал, отправляется прямо на адрес кошелька, который ты указал. SwapZilla не держит merchant-баланс, очередь выплат или withdrawal flow.
- Деньги клиента не проходят через кошелёк SwapZilla. Когда клиент платит, депозит идёт на адрес, сгенерированный маршрутизированным провайдером под конкретный свап. Деньги проводят минимум времени в любом промежуточном кошельке — кошельке провайдера — и этот кошелёк существует на время одного свапа, не под твой аккаунт.
- На нашей стороне нет объекта “merchant account”. Твой адрес выплаты — это просто строка, которую ты вбил в форму. Мы не привязываем его к профилю, email, идентичности или налоговой записи.
Что это не значит:
- Это не значит, что ты сам владеешь ключами от промежуточного swap-кошелька — не владеешь. Им владеет провайдер на время свапа.
- Это не значит, что никакая сторона в цепочке не применяет KYC/AML процедуры. Провайдеры в routing применяют свои процедуры, особенно на крупных суммах. SwapZilla сама не идентифицирует тебя со стороны приёма.
- Это не освобождает тебя от собственных налоговых и учётных обязательств по выручке, которую ты получаешь.
Failure mode тоже разные. Кастодиальный gateway ломается, когда замораживает тебе выплату. Non-custodial link ломается, когда отдельный свап не проходит — но проваленный свап возвращается на refund-адрес клиента, а не на замороженный SwapZilla-баланс. Твой settlement либо приходит, либо нет; нет промежуточного состояния, где деньги “застряли на платформе”.
Как принять крипту меньше чем за 60 секунд через payment link
Самый быстрый путь — inline-форма создания на SwapZilla Pay. Пошагово:
- Выбери актив и сеть, в которых хочешь получать. USDT TRC-20 — самый частый выбор из-за низких комиссий; BTC — если копишь; XMR — если казне нужна приватность по умолчанию. Выбор не зависит от того, чем хочет заплатить клиент.
- Открой форму создания на /pay/. Без регистрации. Без поля email.
- Введи сумму получения. Это то, что придёт тебе на адрес. Страница клиента покажет эквивалент в той монете, которую он выберет для оплаты.
- Вставь адрес выплаты. По возможности — свежий адрес под каждый платёж. Учёт и налоговая сверка становятся радикально чище. Большинство современных кошельков генерируют новый receive-адрес по клику.
- (Опционально) reference и redirect. Короткий order ID для своих книг и thank-you URL, на который клиент попадёт после оплаты.
- Нажми create. Получаешь URL вида
/pay/r/{id}и QR-код. Отправляешь URL в инвойсе по email, вставляешь QR в страницу чекаута или кидаешь ссылку в чат.
Со стороны клиента всё так же просто. Он открывает ссылку, видит сумму в fiat-эквиваленте и в дефолтной монете, переключает pay-in монету если хочет, и отправляет одну on-chain транзакцию со своего кошелька. Регистрация с его стороны тоже не нужна.
С момента подтверждения депозита страница трекинга проходит через пять состояний: WAIT_DEPOSIT → CONFIRMING → EXCHANGING → SENDING → DONE. Когда видишь DONE — выбранный актив пришёл на твой адрес. Обычно от 5 до 25 минут, зависит от confirmation time pay-in монеты.
Pricing платежа и оплата любой монетой
Ментальная модель, на которой большинство мерчантов спотыкается — относиться к payment link как к фиксированному ценнику. Ссылка фиксирует сумму получения (что упадёт тебе на кошелёк), а страница клиента пересчитывает pay-in сумму в той монете, которую он выбрал.
Это решает две задачи сразу. Первое — не надо гнаться за ценой BTC каждый раз, когда выставляешь инвойс: если ты выставляешь в USDT, сумма получения стоит на месте. Второе — клиент не залочен в одну монету: платит тем, что у него уже есть, и SwapZilla-агрегатор параллельно роутит через провайдеров, чтобы найти лучший rate для конкретной пары в момент исполнения.
Non-custodial payment link — единственный checkout flow, где клиент платит одной монетой, ты получаешь другой, и ни одна третья сторона не имеет права заморозить ни одну из сторон.
Несколько важных вещей про pricing:
- Fiat-номинированная цена. Можно держать стоимость инвойса в USDT и считать его стабильным прокси USD. Если нужна строгая фиатная цена (например, инвойсы в EUR) — перевыставь ссылку с новой суммой получения, когда курс уплывёт. Авто-rerquote по уже оплаченной ссылке не делается.
- Комиссии. Нет отдельной платформенной комиссии поверх rate провайдера — spread сидит внутри swap route. Rate, который видит клиент при оплате, — это то что он платит; сумма получения, которую ты задал, — это то что получаешь.
- Slippage на волатильных парах. Для очень волатильных pay-in монет жди небольшую разницу между котировкой и исполнением, если используешь floating rate. Для инвойсной определённости — fixed-rate ссылки фиксируют котировку на короткое окно.
Если хочешь посмотреть как multi-provider routing работает под капотом — на странице How it works разобран стрим котировок агрегатора.
Интеграция в реальный checkout: ссылки, API, webhooks
Для разового инвойса или кнопки Pay в духе Stripe хостовой ссылки достаточно. Для автоматизированных систем заказов есть три формы интеграции:
1. Хостовая ссылка в инвойсе или email. Минимум усилий. Создаёшь ссылку вручную (или через форму) и вставляешь в шаблон инвойса. Клиент платит, актив падает, ты сверяешься, читая страницу трекинга или активность кошелька. Хорошо для консалтинга, фриланса, low-volume e-commerce.
2. API + webhooks. Создаёшь ссылку программно когда срабатывает твой чекаут, сохраняешь возвращённый id против своего order и слушаешь payment.completed на webhook endpoint. Webhook подписан HMAC-SHA256 в заголовке X-SwapZillaPay-Signature — проверяй его на сервере перед тем как пометить заказ оплаченным. Никогда не доверяй payload webhook сам по себе; непроверенный webhook — это бесплатная кнопка fulfillment для атакующего. Полная справка — в Pay docs.
3. Embedded redirect. То же что API + webhooks, только вместо вставки ссылки в iframe ты редиректишь клиента на хостовую страницу /pay/r/{id} после создания order, и он возвращается на твой redirect_url после оплаты. Так выглядит большинство современных чекаутов (стиль Stripe Checkout) — это правильный паттерн для e-commerce-платформ.
Для всех трёх: используй свежий idempotency key под каждый заказ, чтобы не плодить дубликаты ссылок если клиент дважды кликнул Pay, и сохраняй link id против своего order до редиректа — если клиент отвалился и вернулся на следующий день, ты покажешь ему ту же ссылку, а не создашь новую.
Частые ошибки, на которых мерчанты теряют деньги
Паттерны, которые мы видим раз за разом, когда мерчанты впервые поднимают payment-link flow:
- Используют один адрес выплаты на всех клиентов. Работает, но учёт превращается в боль, приватность на публичных чейнах слабеет, а возвраты усложняются. Большинство кошельков генерируют свежие адреса по запросу — пользуйся.
- Воспринимают underpayment как “близко к делу”. Если клиент отправил меньше, чем ожидала ссылка, свап не прошёл и деньги вернулись на его refund-адрес. Не выполняй заказ. Всегда читай статус на странице трекинга перед отгрузкой.
- Выбирают медленную settlement-сеть под малый чек. Если продаёшь digital-товар за $5 и получаешь в BTC main chain — клиент может ждать 30 минут confirmation, пока BTC fee съест ощутимый кусок платежа. Подбирай сеть под цену: USDT TRC-20 под маленькие чеки, BTC main chain под крупные, Lightning где поддерживается.
- Считают “нет аккаунта мерчанта” равным “нет compliance”. Non-custodial routing не освобождает от твоей налоговой отчётности, НДС/налога с продаж или отраслевого лицензирования. Если твой бизнес регулируемый — консультируйся. Платёжный рельс некастодиальный; твой бизнес всё ещё твой бизнес.
- Пропускают HMAC-верификацию на webhooks. Непроверенный webhook endpoint — самая частая security-ошибка в крипто-чекаутах. Каждый webhook должен быть проверен до того как триггернёт fulfillment.
- Не указывают refund-адрес со стороны клиента. Это забота клиента, но прилетает в твой саппорт: если клиент опечатался в депозите, провайдеру нужно куда-то вернуть. Убедись, что в инструкциях клиенту явно сказано выставить refund-адрес.
Когда non-custodial payment link — не тот инструмент
Будь честным с fit. Хостовая non-custodial ссылка отлично подходит для solopreneurs, indie SaaS, фрилансеров и small-to-mid e-commerce, которые хотят крипто-выручку без отношений с gateway. Это не тот инструмент для:
- High-volume retail с культурой chargeback. Крипто-платежи финальны. Если в твоей категории refund rate 15% из-за buyer’s remorse — ты потратишь на ручные возвраты больше, чем сэкономил на gateway-fee.
- Жёсткой fiat-first сверки. Если твоя учётка ждёт EUR-суммы до копейки и не переваривает мелкую разницу от swap routing — fiat on-ramp подходит лучше.
- Юрисдикций с обязательной лицензией PSP. Регулируемые индустрии (онлайн-гемблинг, ценные бумаги, отдельные финансовые сервисы) требуют лицензированного payment service provider независимо от custody-модели рельса. Non-custodial routing не закрывает лицензионный слой.
- Продуктов с экстремально частыми возвратами. Та же логика что у chargeback-heavy retail — каждый возврат это ручная исходящая транзакция со твоего кошелька по текущему курсу, а не one-click reversal.
Для большинства остальных бизнесов — кто продаёт софт, контент, услуги, консалтинг или физические товары крипто-aware аудитории — non-custodial payment link это самый низкофрикционный способ принимать крипту в 2026. Ты перестаёшь быть “мерчантом” в gateway-смысле и становишься человеком с адресом кошелька и ссылкой.