Первый шаг для оплаты QR-кода СБП — создание котировки с фиксированным курсом.
POST /orders/prepare| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
qrCode | string | Да | QR СБП (URL/payload), строка ST00012 (ЖКХ) или gibdd:uin:{УИН} (штраф ГИБДД) |
externalOrderId | string | Нет | Ваш внутренний ID заказа |
curl -X POST 'https://b2b.lumowallet.io/orders/prepare' \
-H 'X-API-Key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"qrCode": "https://qr.nspk.ru/AS10003P3RCT8NTGH6LR6D3P815L3SHK?type=02&bank=100000000001&sum=50000&cur=RUB&crc=F4AB",
"externalOrderId": "order-12345"
}'{
"id": "550e8400-e29b-41d4-a716-446655440000",
"amountRub": 5000.00,
"amountUsdt": 52.63,
"rate": 95.00,
"paymentType": "nspk",
"expiresAt": "2026-03-10T12:00:30Z",
"isBalanceSufficient": true,
"merchantName": "ООО Кофейня"
}| Поле | Тип | Описание |
|---|---|---|
id | uuid | ID котировки (используйте для accept) |
amountRub | number | Сумма в рублях |
amountUsdt | number | Сумма в USDT по текущему курсу |
rate | number | Курс RUB/USDT |
paymentType | string | Тип платежа: nspk, st00012 (ЖКХ) или gibdd_uin (штраф ГИБДД) |
expiresAt | datetime | Время истечения котировки |
isBalanceSufficient | boolean | Достаточно ли средств на балансе |
merchantName | string | Название получателя (если доступно) |
Котировка действует 30 секунд. После истечения:
- Котировка становится недействительной
- Попытка accept вернёт ошибку
400 Quote expired - Необходимо создать новую котировку
Поле isBalanceSufficient показывает, достаточно ли средств для оплаты:
true— можно вызывать acceptfalse— сначала пополните баланс
Одно поле принимает три типа платежа — тип определяется автоматически и возвращается в paymentType:
QR СБП/NSPK (paymentType: nspk) — ссылка qr.nspk.ru, диплинк банка либо ссылка multiqr.ru / platiqr.ru:
https://qr.nspk.ru/AS10003P3RCT8NTGH6LR6D3P815L3SHK?type=02&bank=100000000001&sum=50000&cur=RUB&crc=F4ABЖКХ — строка ST00012 (paymentType: st00012), сумма берётся из поля Sum:
ST00012|Name=ООО УК Комфорт|PersonalAcc=40702810...|Sum=350075|Purpose=Оплата ЖКУШтраф ГИБДД по УИН (paymentType: gibdd_uin), сумма и реквизиты подтягиваются автоматически:
gibdd:uin:18810177230000000000Подробности и реквизиты получателя — в гайде Оплата ЖКХ и штрафов ГИБДД.
rate — это итоговый курс RUB/USDT с уже учтённой комиссией компании (qrRateOffsetBps). По нему рассчитан amountUsdt в этой котировке — именно эта сумма будет списана с баланса при accept. Сырой курс Rapira без комиссии и текущие лимиты на сумму можно посмотреть через GET /rates/current.
Каждой компании можно задать qrMinAmountRub / qrMaxAmountRub. По умолчанию: 0 ₽ ... 1 000 000 ₽. Если сумма QR не попадает в диапазон — endpoint вернёт 400 с сообщением Сумма ниже минимальной / Сумма выше максимальной. Изменение лимитов делается через техподдержку.
| Код | Ошибка | Описание |
|---|---|---|
| 400 | Invalid QR code | Невалидный QR-код |
| 400 | QR code parsing failed | Ошибка парсинга QR |
| 400 | Сумма ниже минимальной: N RUB | Сумма меньше qrMinAmountRub |
| 400 | Сумма выше максимальной: N RUB | Сумма больше qrMaxAmountRub |
| 400 | FINE_NOT_FOUND / FINE_ALREADY_PAID | Штраф ГИБДД не найден / уже оплачен |
| 401 | Unauthorized | Неверный API-ключ |
| 503 | NSPK service unavailable / DRIVER_HELPER_TRANSIENT | Сервис НСПК или проверки штрафов недоступен |
После получения котировки с isBalanceSufficient: true, переходите к подтверждению оплаты.