Skip to content
Last updated

Создание котировки (Prepare Order)

Первый шаг для оплаты QR-кода СБП — создание котировки с фиксированным курсом.

Endpoint

POST /orders/prepare

Параметры запроса

ПараметрТипОбязательныйОписание
qrCodestringДаQR-код СБП (URL или payload)
externalOrderIdstringНетВаш внутренний 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,
  "expiresAt": "2026-03-10T12:00:30Z",
  "isBalanceSufficient": true,
  "merchantName": "ООО Кофейня"
}

Поля ответа

ПолеТипОписание
iduuidID котировки (используйте для accept)
amountRubnumberСумма в рублях
amountUsdtnumberСумма в USDT по текущему курсу
ratenumberКурс RUB/USDT
expiresAtdatetimeВремя истечения котировки
isBalanceSufficientbooleanДостаточно ли средств на балансе
merchantNamestringНазвание получателя (если доступно)

TTL котировки

Котировка действует 30 секунд. После истечения:

  • Котировка становится недействительной
  • Попытка accept вернёт ошибку 400 Quote expired
  • Необходимо создать новую котировку

Проверка баланса

Поле isBalanceSufficient показывает, достаточно ли средств для оплаты:

  • true — можно вызывать accept
  • false — сначала пополните баланс

Форматы QR-кода

Поддерживаются оба формата:

URL формат:

https://qr.nspk.ru/AS10003P3RCT8NTGH6LR6D3P815L3SHK?type=02&bank=100000000001&sum=50000&cur=RUB&crc=F4AB

Payload формат:

ST00012|Name=ООО Кофейня|PersonalAcc=40702810...

Ошибки

КодОшибкаОписание
400Invalid QR codeНевалидный QR-код
400QR code parsing failedОшибка парсинга QR
401UnauthorizedНеверный API-ключ
503NSPK service unavailableСервис НСПК недоступен

Что дальше?

После получения котировки с isBalanceSufficient: true, переходите к подтверждению оплаты.