# blockwallets — Принимайте криптовалюту без знаний о криптовалюте

> Клиенты платят в USDT, USDC, BTC и ещё 14 монетах в 15 сетях. Деньги зачисляются на ваш баланс в долларах США, и вы выводите их на свой кошелёк. Платёжные ссылки не требуют кода; API, совместимые с Cryptomus, NOWPayments и Coinbase Commerce, автоматизируют остальное. Ключи, которые могут перемещать средства, никогда не хранятся на серверах с доступом в интернет.
>
> HTML: https://blockwallets.io/?lang=ru · English: https://blockwallets.io/index.md?lang=en

## Крипто-платежи

Клиенты платят в USDT, USDC, BTC и ещё 14 монетах в 15 сетях. Каждый платёж зачисляется на ваш баланс в долларах США. **Разбираться в блокчейне не нужно, а ключи, которые могут перемещать средства, никогда не хранятся на серверах с доступом в интернет.**
 Запросить доступКак приходят деньги

Закрытая бета · 1% за платёж, до 0.5% при росте месячного оборота · без абонентской платы, бесплатный вывод

0строк кода для старта. Просто отправьте платёжную ссылку

17монет: стейблкоины, BTC и нативные монеты сетей

2независимых источника подтверждают каждый платёж

15сетей. Клиент платит в той, которой пользуется

Впервые с криптовалютой?

### Три вещи, которые стоит знать.

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

Цены в USD

#### Колебания курса — не ваша забота

Вы назначаете цены в долларах и получаете зачисления в долларах. USDT, USDC и другие стейблкоины считаются 1:1; BTC и другие монеты пересчитываются по курсу, зафиксированному на 30 минут.

Сканируй и плати

#### Клиенты платят из привычных приложений

Они сканируют QR-код в приложении биржи или криптокошелька. Без границ и банковских часов; большинство платежей приходит примерно за минуту.

Окончательно

#### Без чарджбэков

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

Способы приёма

### Начните со ссылки. Автоматизируйте потом.

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

Без кода
#### Платёжные ссылки

Укажите сумму в кабинете и получите ссылку и QR-код. Отправьте в чат, разместите на сайте или в профиле; клиент открывает и платит.
 blockwallets.io/l/pl_940219e083e7b45cea11**Попробовать ↗** Годовая подписка+99.00

Предоплата · заказ 1042+42.00

Для разработчиков

#### Интеграция по API

Вызовите один эндпоинт при оформлении заказа и отправьте клиента на нашу страницу оплаты. Когда деньги придут, мы уведомим ваш сервер — заказы отгрузятся, а балансы пополнятся сами.

POST /v1/payment200

order_1042 · отгружен автоматически+42.00

topup_88 · зачислено на баланс пользователя+150.00

Как приходят деньги

### От оплаты до вашего баланса — за четыре шага.

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

order_1042TRON · USDT · свой адрес TX7k…q3Fd$42.00

Источник Aтот же перевод · сумма · адрес✓ виден

Источник Bнезависимый провайдер✓ виден

Уведомить ваш серверPOST /webhooks/blockwallets200 OK

Оба совпадают. Платёж подтверждён.

- 1
#### Вы запрашиваете платёж
Отправьте сумму и номер заказа; с платёжной ссылкой кабинет сделает это за вас. Один и тот же номер заказа, отправленный дважды, всё равно создаёт один счёт.

- 2
#### Клиент сканирует и платит
На нашей странице оплаты он выбирает монету и сеть и сканирует код. У каждого заказа свой адрес, поэтому платежи сопоставляются с заказами без комментариев.

- 3
#### Мы убеждаемся, что деньги действительно пришли
Мы проверяем блокчейн каждую минуту и ждём достаточного числа подтверждений; затем второй, независимый источник данных должен увидеть тот же перевод. Поддельные платежи не пройдут.

- 4
#### Деньги ваши
Они зачисляются на баланс в долларах, и вы можете запросить вывод в любой момент (каждую заявку проверяет человек; новый адрес для выплат ждёт 24 часа до первой выплаты). С API ваш сервер в тот же момент получает подписанное уведомление; если он недоступен, отправка повторяется около двух с половиной дней.

Мои деньги в безопасности?

0 
### 0 приватных ключей на серверах с доступом в интернет. Ключи, которые перемещают средства, — только в изолированной среде подписи.

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

#### Онлайн можно только принимать

Серверы хранят только ключ для чтения (`xpub`). Случайно вставленный приватный ключ будет отклонён.

#### Ваши адреса закреплены

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

#### Два источника должны совпасть

Платёж засчитывается, только когда его видят два независимых источника данных. Один недобросовестный узел его не подделает.

#### Деньги не обязаны оставаться у нас

Запрашивайте вывод в любой момент или настройте автоматические заявки при достижении выбранного баланса либо ежедневно. Каждую заявку проверяет человек, новый адрес ждёт 24 часа до первой выплаты, а у каждой выплаты видна запись в блокчейне.

#### Получатели ограничены

Транзакции, перемещающие средства, подписываются в среде, изолированной от онлайн-сервисов. Сбор средств идёт только на фиксированные адреса холодных кошельков; выплаты мерчантам одобряет человек, и они идут только на зарегистрированный мерчантом адрес вывода.

#### Лучше остановиться, чем рисковать

Если хоть одна защита отсутствует, эта сеть приостанавливает приём платежей.

Разработчикам

### Два фрагмента кода. Вот и вся интеграция.

Создайте платёж и получите ссылку на страницу оплаты; примите уведомление, проверьте подпись, отгрузите. Сначала бесплатно попробуйте в тестовой сети.

- 
#### Всего два вызова
Создайте платёж с суммой и номером заказа; проверьте уведомление и отгрузите по номеру заказа.- 
#### Бесплатно в тестовой сети
Тестовые учётные данные работают в публичных тестовых сетях, а на странице оплаты есть кнопка «симулировать оплату».- 
#### Повторы безопасны
Один и тот же `order_id` всегда возвращает один и тот же счёт.- 
#### Переходите с другого шлюза?
Совместимые API для Cryptomus, NOWPayments и Coinbase Commerce: те же пути, параметры, подписи и вебхуки. Смените домен и ключи. - https://api.cryptomus.com/v1/payment

+ https://blockwallets.io/v1/payment
Полное руководство по интеграции →

```
<span class="cl"><span class="t-k">import</span> crypto <span class="t-k">from</span> <span class="t-s">"node:crypto"</span>;</span><span class="cl"></span><span class="cl"><span class="t-k">const</span> body = JSON.<span class="t-f">stringify</span>({</span><span class="cl">  order_id: <span class="t-s">"order_1042"</span>,       <span class="t-c">// idempotency key</span></span><span class="cl">  amount: <span class="t-s">"42.00"</span>,              <span class="t-c">// any amount, in USD</span></span><span class="cl">  currency: <span class="t-s">"USD"</span>,</span><span class="cl">  url_callback: <span class="t-s">"https://shop.example.com/webhooks/crypto"</span>,</span><span class="cl">});</span><span class="cl"><span class="t-k">const</span> sign = crypto.<span class="t-f">createHash</span>(<span class="t-s">"md5"</span>)</span><span class="cl">  .<span class="t-f">update</span>(Buffer.<span class="t-k">from</span>(body).<span class="t-f">toString</span>(<span class="t-s">"base64"</span>) + process.env.BW_API_KEY)</span><span class="cl">  .<span class="t-f">digest</span>(<span class="t-s">"hex"</span>);</span><span class="cl"></span><span class="cl"><span class="t-k">const</span> res = <span class="t-k">await</span> <span class="t-f">fetch</span>(<span class="t-s">"https://blockwallets.io/v1/payment"</span>, {</span><span class="cl">  method: <span class="t-s">"POST"</span>,</span><span class="cl">  headers: {</span><span class="cl">    merchant: process.env.BW_MERCHANT,</span><span class="cl">    sign,</span><span class="cl">    <span class="t-p">"content-type"</span>: <span class="t-s">"application/json"</span>,</span><span class="cl">  },</span><span class="cl">  body,</span><span class="cl">});</span><span class="cl"><span class="t-k">return</span> <span class="t-f">redirect</span>((<span class="t-k">await</span> res.<span class="t-f">json</span>()).result.url);</span>
```

```
<span class="cl"><span class="t-k">import</span> crypto <span class="t-k">from</span> <span class="t-s">"node:crypto"</span>;</span><span class="cl"></span><span class="cl"><span class="t-k">export</span> <span class="t-k">async</span> function <span class="t-k">POST</span>(req: Request) {</span><span class="cl">  <span class="t-k">const</span> { sign, ...data } = JSON.<span class="t-f">parse</span>(<span class="t-k">await</span> req.<span class="t-f">text</span>());</span><span class="cl">  <span class="t-k">const</span> json = JSON.<span class="t-f">stringify</span>(data).<span class="t-f">replaceAll</span>(<span class="t-s">"/"</span>, <span class="t-s">"\\/"</span>);</span><span class="cl">  <span class="t-k">const</span> expected = crypto.<span class="t-f">createHash</span>(<span class="t-s">"md5"</span>)</span><span class="cl">    .<span class="t-f">update</span>(Buffer.<span class="t-k">from</span>(json).<span class="t-f">toString</span>(<span class="t-s">"base64"</span>) + process.env.BW_API_KEY)</span><span class="cl">    .<span class="t-f">digest</span>(<span class="t-s">"hex"</span>);</span><span class="cl">  <span class="t-k">if</span> (sign !== expected) <span class="t-k">return</span> <span class="t-k">new</span> <span class="t-f">Response</span>(<span class="t-s">"bad sign"</span>, { status: <span class="t-n">401</span> });</span><span class="cl"></span><span class="cl">  <span class="t-k">if</span> (data.status === <span class="t-s">"paid"</span> || data.status === <span class="t-s">"paid_over"</span>) {</span><span class="cl">    <span class="t-k">await</span> <span class="t-f">credit</span>(data.order_id, data.payment_amount_usd);</span><span class="cl">  }</span><span class="cl">  <span class="t-k">return</span> <span class="t-k">new</span> <span class="t-f">Response</span>(<span class="t-s">"ok"</span>);</span><span class="cl">}</span>
```

```
<span class="cl"><span class="t-k">POST</span> /webhooks/crypto</span><span class="cl"><span class="t-h">Content-Type:</span> application/json</span><span class="cl"></span><span class="cl">{</span><span class="cl">  <span class="t-p">"type"</span>: <span class="t-s">"payment"</span>,</span><span class="cl">  <span class="t-p">"uuid"</span>: <span class="t-s">"6f1c2a7e…"</span>,</span><span class="cl">  <span class="t-p">"order_id"</span>: <span class="t-s">"order_1042"</span>,</span><span class="cl">  <span class="t-p">"amount"</span>: <span class="t-s">"42.00"</span>,</span><span class="cl">  <span class="t-p">"payment_amount_usd"</span>: <span class="t-s">"42.00"</span>,</span><span class="cl">  <span class="t-p">"status"</span>: <span class="t-s">"paid"</span>,</span><span class="cl">  <span class="t-p">"is_final"</span>: true,</span><span class="cl">  <span class="t-p">"network"</span>: <span class="t-s">"tron"</span>,</span><span class="cl">  <span class="t-p">"payer_currency"</span>: <span class="t-s">"USDT"</span>,</span><span class="cl">  <span class="t-p">"txid"</span>: <span class="t-s">"9c1e…"</span>,</span><span class="cl">  <span class="t-p">"sign"</span>: <span class="t-s">"5f0c9b…e9a1"</span></span><span class="cl">}</span>
```

#### Скопируйте один промпт в свой ИИ
 
Вставьте его в ChatGPT, Claude, Cursor или любого помощника для кода. Он прочитает нашу документацию, запустит тестовый сценарий в тестовой сети и выдаст вам чек-лист приёмки.
 Открыть в ChatGPT ↗Откроет чат, который прочитает llms-full.txt Открыть в Claude ↗Откроет чат, который прочитает llms-full.txt
Сгенерировать промпт под ваш стек →

Интегрируй криптоплатежи blockwallets в мой проект. 1. Сначала прочитай https://blockwallets.io/llms-full.txt и https://blockwallets.io/agents.md. Следуй им, а не тому, что помнишь о других платёжных шлюзах. 2. Начни с тестовых учётных данных в тестовой сети (тестовый режим в кабинете blockwallets; на странице оплаты есть кнопка "симулировать оплату"). Не трогай боевые ключи, пока весь тестовый сценарий не пройдёт. 3. Создай платёж через POST https://blockwallets.io/v1/payment (amount, currency "USD", order_id, url_callback) и отправь клиента на result.url. 4. Проверяй каждый вебхук, прежде чем ему доверять: убери "sign", закодируй остальное в JSON, экранируя каждый "/" как "\/" (как json_encode($data, JSON_UNESCAPED_UNICODE) в PHP: не-ASCII символы остаются как есть), переведи в base64, допиши API key, возьми md5 в hex и сравни с "sign". 5. Считай статусы "paid" и "paid_over" оплаченными. Один и тот же order_id всегда возвращает один и тот же счёт, поэтому повторы безопасны; зачисляй каждый заказ только один раз. 6. Храни merchant ID и API key в переменных окружения, никогда не в коде. Когда закончишь, дай мне этот чек-лист приёмки, отметив или пояснив каждый пункт: - [ ] Тестовый платёж создаётся, и result.url открывает страницу оплаты - [ ] "Симулировать оплату" присылает вебхук, и его подпись проходит проверку - [ ] Вебхук с изменённым телом или sign отклоняется - [ ] Заказ помечается оплаченным ровно один раз, даже если вебхук придёт снова - [ ] Учётные данные берутся из переменных окружения - [ ] Что нужно изменить для перехода в боевой режим Сети

### Чем бы ни платили, вы получаете доллары.

Стейблкоины зачисляются по номиналу, без курса и спреда. BTC, LTC и нативные монеты котируются по курсу, зафиксированному на 30 минут.

| Сеть | Монеты | Время зачисления | Минимум |
| --- | --- | --- | --- |
| TRON | USDTTRX | ~1 мин | $1.00 |
| BNB Smart Chain | USDTUSDCUSD1FDUSDBNB | ~1 мин | $1.00 |
| Ethereum | USDTUSDCDAIETH | ~1–18 мин | $5.00 |
| Base | USDCDAIETH | ~1–25 мин | $1.00 |
| Polygon PoS | USDTUSDCPOL | ~1 мин | $1.00 |
| Arbitrum One | USDTUSDCDAIETH | ~1–30 мин | $1.00 |
| OP Mainnet | USDTUSDCETH | ~1–25 мин | $1.00 |
| Avalanche C-Chain | USDTUSDCAVAX | ~1 мин | $1.00 |
| X Layer | USDTUSDCOKB | ~1–20 мин | $1.00 |
| Dogecoin | DOGE | ~1–40 мин | $1.00 |
| Solana | USDTUSDCSOL | ~1 мин | $1.00 |
| TON | USDTTON | ~1 мин | $1.00 |
| Litecoin | LTC | ~3–15 мин | $1.00 |
| Bitcoin | BTC | ~10–30 мин | $5.00 |
| Bitcoin Cash | BCH | ~10–60 мин | $1.00 |

Выделенные монеты — стейблкоины, каждая зачисляется 1:1 в долларах США. Меньшее время — для платежей до $1,000. От $1,000 и ещё раз от $5,000 мы ждём больше подтверждений, поэтому крупные платежи могут идти до большего времени.

Цены

### Только за платёж. Чем больше оборот, тем дешевле.

Одна шкала для всех продавцов, ставка автоматически снижается по обороту прошлого месяца. Договариваться не нужно.

1%за платёж
 
До 0.5%. Комиссию сети платит клиент.
 Без абонентской платыБез платы за подключениеБесплатный выводБез минимального оборота

До $50,0001%

От $50,0000.9%

От $100,0000.8%

От $250,0000.7%

От $500,0000.6%

От $1,000,0000.5%

Вопросы

### Короткие ответы.

#### Какие монеты можно принимать?

17 монет в 15 сетях: USDT, USDC, USD1, FDUSD, DAI, BTC, LTC, DOGE и BCH, а также нативные монеты TRX, BNB, ETH, POL, AVAX, OKB, SOL и TON. Сети: TRON, BNB Smart Chain, Ethereum, Base, Polygon PoS, Arbitrum One, OP Mainnet, Avalanche C-Chain, X Layer, Dogecoin, Solana, TON, Litecoin, Bitcoin и Bitcoin Cash. Стейблкоины зачисляются 1:1 в долларах США; остальные монеты пересчитываются по курсу, зафиксированному на 30 минут.

#### Сколько это стоит?

1% за платёж, ставка автоматически снижается по обороту прошлого месяца: 0.9% от $50,000, минимум 0.5%. Без абонентской платы и платы за подключение, вывод бесплатный. Комиссию сети платит клиент.

#### Нужно ли разбираться в блокчейне?

Нет. Укажите сумму в кабинете, чтобы получить платёжную ссылку и QR-код; клиент сканирует и платит, а деньги зачисляются на баланс в долларах США. Адреса, подтверждения и сверку берёт на себя blockwallets.

#### Как вывести деньги?

Запрашивайте вывод на свой кошелёк из кабинета в любой момент или настройте автоматические заявки, когда баланс достигнет выбранной суммы, либо ежедневно. Каждую заявку проверяет человек, а новый адрес для выплат ждёт 24 часа до первой выплаты. Вывод бесплатный, и для каждого видна транзакция в блокчейне.

#### Где хранятся приватные ключи?

Ключи, которые могут перемещать средства, никогда не находятся на серверах, обслуживающих публичные запросы: они используются только в среде подписи, изолированной от онлайн-сервисов. Сбор средств идёт только на фиксированные адреса холодных кошельков; выплаты мерчантам одобряет человек, и они идут только на зарегистрированный мерчантом адрес вывода. Серверы с доступом в интернет хранят только публичный ключ для чтения (xpub): они создают адреса для приёма и читают балансы, но не могут отправлять средства.

#### Что меняется при переходе с Cryptomus, NOWPayments или Coinbase Commerce?

Только домен API и ключи. Для каждого из трёх у нас есть совместимый API: пути, параметры, алгоритм подписи и формат вебхуков совпадают с оригиналом, поэтому ваш код остаётся прежним.

#### Есть ли тестовый режим?

Да. У тестового режима свои учётные данные в публичных тестовых сетях, а на странице оплаты есть кнопка «симулировать оплату» — можно проверить создание платежа, оплату, вебхук и проверку подписи без реальных денег.

### Начнитесейчас.
 
Мы открываем blockwallets для продавцов постепенно. Расскажите немного о своём бизнесе, и мы напишем вам, чтобы настроить аккаунт. Впервые с криптовалютой? Спрашивайте что угодно в примечаниях.
 
Комиссия: 1% за платёж, снижается до 0.9%, когда оборот прошлого месяца достигает $50,000, и до 0.5% по мере роста. [Посмотреть цены →](https://blockwallets.io/pricing?lang=ru)
 - **1**Мы читаем каждую заявку и отвечаем по почте.- **2**После одобрения попробуйте всё в тестовом режиме, без реальных денег.- **3**Переходите в боевой режим, когда будете готовы. Запрашивайте вывод в любой момент.
