Перейти к содержимому
Последнее обновление

Покупка USDT за рубли

Ваш клиент платит рубли по QR СБП из приложения своего банка, а вы получаете USDT на карту клиента или на баланс компании. Вся цепочка идёт через наш API: верификация клиента, курс, выпуск QR и зачисление.

POST /sbp/customers ──▶ POST /sbp/customers/{id}/kyc ──▶ клиент проходит проверку паспорта
                                                                 │
                         webhook sbp.customer.kyc_updated (canBuy: true)
                                                                 │
POST /sbp/quotes ──▶ POST /sbp/orders (QR) ──▶ клиент платит ──▶ USDT на карте / балансе
                                                                 │
                         webhook sbp.order.status_changed (status: completed)

Что важно понять до интеграции

Каждый покупатель проходит верификацию. Купить можно только после проверки внутреннего паспорта РФ. Ссылку на проверку выдаём мы, клиент проходит её один раз с телефона: фото паспорта и селфи. Результат приходит вебхуком.

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

Платить нужно с телефона, указанного при регистрации. Банк привязывает QR к номеру клиента и отклоняет оплату с другого номера. Если клиент платит с чужого телефона, оплата не пройдёт.

Цена окончательная до оплаты. Котировка (POST /sbp/quotes) уже показывает, сколько USDT получит клиент. Все комиссии, включая пополнение карты, сидят внутри amountUsdt и rate, отдельных строк с комиссией нет. Если курс на рынке изменится, пока клиент платит, вы всё равно получите сумму из котировки.

Свою наценку ставите вы. Передайте её в котировке (partnerFeeBps), она удержится из купленного и останется на балансе компании. Подробнее — в разделе Ваша наценка.

Можно продавать и саму карту. Задайте цену карты в рублях, клиент оплатит её по QR, и мы выпустим карту сразу после оплаты. Подробнее — в разделе Выпуск карты за рубли.

Зачисляем один раз и только после оплаты. Пока заказ не стал completed, ничего не зачислено и ничего не списано.

Доступность

Покупка подключается отдельно и по умолчанию выключена. Если запросы к /sbp/* отвечают 403 SBP_BUY_NOT_ENABLED, напишите менеджеру.

Ключу нужны права sbp.read (чтение) и sbp.create (регистрация клиентов, котировки и заказы). Подробнее — в разделе Команда и права.

Куда идут купленные USDT, задаётся при подключении:

РежимЧто это значит
Только на картуВ котировке обязателен cardId, USDT сразу пополняют карту
На карту или на балансБез cardId USDT ложатся на баланс компании

Для зачисления на карту у компании должна быть подключена программа карт.

Курс и лимиты

GET /sbp/rate
curl 'https://b2b.lumowallet.io/sbp/rate' -H 'X-API-Key: YOUR_API_KEY'
{
  "rate": "86.467005",
  "minAmountRub": "5000",
  "maxAmountRub": "50000",
  "minFeeRub": "100.00",
  "quotedAt": "2026-10-24T10:15:02.114Z"
}

rate здесь ориентировочный: сколько рублей стоит 1 USDT на баланс компании. Для витрины этого достаточно, но окончательную цену даёт только котировка: в ней учтены комиссия пополнения карты и ваша наценка.

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

Границы суммы меняются вместе с лимитами банка, поэтому читайте их из GET /sbp/rate и не зашивайте в код.

У банка есть и лимиты на самого покупателя: сколько QR он может выпустить и оплатить за сутки, на какую сумму за сутки и за месяц. Мы заранее эти лимиты не отдаём. При превышении создание заказа отвечает 429 SBP_LIMIT_EXCEEDED, причина в details.providerCode.

Брошенные QR вредят клиенту. Несколько неоплаченных QR подряд банк считает подозрительными и может временно запретить покупки. Если клиент передумал, отменяйте заказ (POST /sbp/orders/{id}/cancel), а не ждите, пока он истечёт.

Дальше