# Создание котировки (Prepare Order) Первый шаг для оплаты QR-кода СБП — создание котировки с фиксированным курсом. ## Endpoint ``` POST /orders/prepare ``` ## Параметры запроса | Параметр | Тип | Обязательный | Описание | | --- | --- | --- | --- | | `qrCode` | string | Да | QR-код СБП (URL или payload) | | `externalOrderId` | string | Нет | Ваш внутренний ID заказа | ## Пример запроса ```bash 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" }' ``` ## Пример ответа ```json { "id": "550e8400-e29b-41d4-a716-446655440000", "amountRub": 5000.00, "amountUsdt": 52.63, "rate": 95.00, "expiresAt": "2026-03-10T12:00:30Z", "isBalanceSufficient": true, "merchantName": "ООО Кофейня" } ``` ## Поля ответа | Поле | Тип | Описание | | --- | --- | --- | | `id` | uuid | ID котировки (используйте для accept) | | `amountRub` | number | Сумма в рублях | | `amountUsdt` | number | Сумма в USDT по текущему курсу | | `rate` | number | Курс RUB/USDT | | `expiresAt` | datetime | Время истечения котировки | | `isBalanceSufficient` | boolean | Достаточно ли средств на балансе | | `merchantName` | string | Название получателя (если доступно) | ## 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... ``` ## Ошибки | Код | Ошибка | Описание | | --- | --- | --- | | 400 | `Invalid QR code` | Невалидный QR-код | | 400 | `QR code parsing failed` | Ошибка парсинга QR | | 401 | `Unauthorized` | Неверный API-ключ | | 503 | `NSPK service unavailable` | Сервис НСПК недоступен | ## Что дальше? После получения котировки с `isBalanceSufficient: true`, переходите к [подтверждению оплаты](/guides/orders/accept-order).