Эта инструкция — для владельца VPN-сервиса, который продаёт подписки через сайт, панель или Telegram-бота и хочет принимать криптовалюту. Важно не только получить платёж, но и сразу выдать доступ: создать пользователя в панели или продлить его и отдать клиенту ссылку на подписку — без ручной работы.
Зачем крипта: оплата не зависит от того, в какой стране выпущена карта клиента и какой у него банк. SnapEX Pay не требует KYC ни от вас, ни от ваших клиентов и не ограничивает страны. Правила приёма криптовалюты в разных странах разные — уточните у юриста, как они касаются вашего сервиса.
- 1%комиссия с платежа — из суммы или сверху для клиента
- $0,50минимальный счёт в USDT TRC20, ERC20, BEP20 — хватает и на тариф за пару долларов
- 70+монет на странице оплаты, вам всё приходит в USDT
Как проходит оплата VPN-подписки
От выбора тарифа до ссылки на подписку
Модуль не доверяет телу вебхука: получив уведомление, он заново запрашивает счёт в API SnapEX Pay и выдаёт доступ только при статусе paid. Сервисы для Remnawave, Marzban, 3X‑UI и бот выдают доступ один раз, даже если один и тот же вебхук пришёл дважды или две копии пришли одновременно.
Шаг 1. Выберите модуль под свою панель
- Docker-сервис
Создаёт активного пользователя со сроком, лимитом трафика и внутренними сквадами или продлевает существующего, отдаёт ссылку на подписку.
Remnawave 2.2+ и 3.x · архив на pay.snapex.pro
- Docker-сервис
Новый пользователь получает все протоколы, для которых в панели есть inbound. Существующий продлевается от текущей даты окончания.
Версия 1.1.0 · архив на pay.snapex.pro и GitHub
- Docker-сервис
Своего биллинга у 3X‑UI нет — сервис добавляет клиента в inbound или продлевает его. UUID и subId не меняются, конфиг клиента продолжает работать.
3X‑UI 2.x и 3.x · архив на pay.snapex.pro
- Плагин
Ставится через менеджер плагинов Xboard (для V2Board — класс в
app/Payments). Клиент уходит на страницу оплаты, заказ открывается сам.Версия 1.3.0 · архив на pay.snapex.pro и GitHub
- Бот
Тарифы — кнопками в чате, кнопка ведёт на страницу оплаты, ссылка на подписку приходит в тот же чат. Работает с Marzban, 3X‑UI и Remnawave.
Бот на вашем сервере · архив на pay.snapex.pro
- API
Счёт создаётся одним запросом к REST API, в ответе — ссылка на страницу оплаты. О статусе сообщает подписанный вебхук.
Документация и тестовый режим — те же, что у модулей
Сервисы для Remnawave, Marzban и 3X‑UI — небольшой контейнер рядом с панелью. Ваш бот или сайт просит у него ссылку на оплату (POST /v1/checkout), а статус заказа и ссылку на подписку забирает через GET /v1/orders/{invoice_id}. Если бота ещё нет — возьмите готовый Telegram VPN-бот.
Шаг 2. Заведите аккаунт мерчанта и API-ключ
- Зарегистрируйтесь на pay.snapex.pro. Аккаунт обменника snapex.pro подходит — это один аккаунт. Документы не нужны.
- Создайте API-ключ с правами
invoices.readиinvoices.write. - Добавьте адрес вебхука. SnapEX Pay доставляет вебхуки только на публичный адрес
https://, поэтому поставьте контейнер за Caddy, nginx или Traefik. Секрет подписи сохраните вSNAPEX_WEBHOOK_SECRET. - Каждое уведомление подписано HMAC-SHA256 с меткой времени. Если ваш сервер не ответил, SnapEX Pay повторит доставку — всего до 5 попыток.
Шаг 3. Запустите модуль и задайте тарифы
Для Remnawave, Marzban, 3X‑UI и бота порядок один: скачайте архив со страницы модуля, заполните .env, выполните docker compose up -d и проверьте /health. Тарифы задаются одной переменной в формате id:дни:цена_usd:трафик_байт, 0 — безлимит:
PLANS=month:30:5.00:0,quarter:90:12.00:107374182400
Здесь месяц стоит $5 без лимита, квартал — $12 со 100 ГБ трафика.
- Remnawave: токен берите в Remnawave Settings → API Tokens, не JWT админского входа. В
REMNAWAVE_SQUADSукажите UUID внутренних сквадов — без сквада у пользователя нет inbound и подписка будет пустой. - Xboard: Плагины → загрузить ZIP → Установить → Включить «SnapEX Pay». Если цены в панели не в долларах, задайте курс пересчёта. Все настройки — в гайде по Xboard и V2Board.
Шаг 4. Проверьте покупку на тестовом счёте
Поставьте SNAPEX_ENVIRONMENT=test (в Xboard — Environment = test в настройках способа оплаты) и купите тариф сами. Тестовый счёт подтверждается сам примерно через 10 секунд после выбора монеты, реальные деньги не двигаются. Проверьте, что пользователь появился в панели, а ссылка на подписку дошла до клиента. Затем верните live: в Xboard тестовый счёт не откроет заказ, пока способ оплаты в боевом режиме.
Шаг 5. Включите боевой режим и настройте вывод
- Комиссия 1%.
SNAPEX_FEE_ON=merchant— удерживается из суммы,customer— добавляется клиенту сверху. - Монеты под дешёвые тарифы. USDT в сетях TRC20, ERC20, BEP20, а также LTC, ETH и TRX — от $0,50 за счёт; BTC — на небольшие суммы, если позволяет комиссия сети. Остальные монеты и USDT в Solana и других сетях — в счетах от $8.
- Только полная оплата. Доступ модуль выдаёт за счёт со статусом
paid. При недоплате счёт ждёт доплату на тот же адрес, иначе закрывается как частично оплаченный — пришедшая сумма зачисляется на ваш баланс. - Срок счёта — 30 минут по умолчанию, можно от 1 минуты до 24 часов.
- Вывод — баланс в USDT, вывод из кабинета на криптоадрес без холда. Сервисной комиссии за вывод нет, только сетевая; минимум — от $0,50 до $10 в зависимости от монеты.
Минимальная сумма счёта по монетам
- USDT TRC20 / ERC20 / BEP20, LTC, ETH, TRXот $0,50
- Остальные монеты и сетиот $8
Шкала — от 0 до $10. Тариф за $2–5 оплачивается в монетах первой строки.
Продления и баланс в боте
Повторная оплата не создаёт второго пользователя: дни добавляются к текущей дате окончания, а если подписка уже истекла — отсчитываются от момента оплаты. Лимит трафика ставится по оплаченному тарифу — клиент получает свежую квоту. Подробнее — в гайде о продлении VPN-подписок.
Если в вашем боте есть внутренний баланс, клиенту можно выдать постоянный адрес пополнения — через API, по customer_id вашего клиента. Сети: USDT TRC20, ERC20, BEP20 и Polygon, USDC Polygon, BTC, LTC, ETH и TRX. Пополнение зачисляется в USDT за вычетом обычной комиссии, минимум — $0,50, о каждом приходит вебхук. Готовые модули работают со счетами, постоянные адреса подключаются через API.
Чек-лист перед запуском
Перед тем как открыть оплату криптой клиентам
- Модуль выбран под вашу панель: Remnawave, Marzban, 3X‑UI, Xboard или Telegram-бот.
- API-ключ с правами
invoices.readиinvoices.writeсоздан, вебхук указан на адресhttps://, секрет подписи сохранён. - Тарифы в
PLANS(или цены в Xboard) совпадают с теми, что видит клиент. - Remnawave: токен API и сквады заданы — подписка нового пользователя не пустая.
- Тестовая покупка с
environment=testпрошла: пользователь создан один раз, ссылка дошла. - Комиссия: решено, кто платит 1% — вы или клиент.
- Адрес для вывода USDT готов, минимум вывода для своей монеты известен.
Если у вас уже есть способ оплаты
Отказываться от него не нужно: SnapEX Pay можно поставить вторым способом рядом с текущим — клиент сам выберет, чем платить. Обзор всех модулей для VPN — на странице «Криптоплатежи для VPN-сервисов».