Ордер проходит через несколько статусов от создания до завершения.
┌─────────────┐
│ prepare │
│ (котировка)│
└──────┬──────┘
│ accept
▼
┌─────────────┐
│ created │
└──────┬──────┘
│
▼
┌─────────────┐
│ in_progress │
└──────┬──────┘
│
┌───────────────┼───────────────┐
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ success │ │ failed │ │ expired │
└──────┬──────┘ └──────┬──────┘ └─────────────┘
│ │
└───────┬───────┘
▼
┌─────────────┐
│ disputed │
└─────────────┘Ордер создан после успешного accept. Средства зарезервированы.
- Следующий:
in_progress - Действия: Ожидание
Платёж передан в обработку wallet-backend.
- Следующий:
success,failed,expired_no_taker,expired_by_system - Действия: Ожидание, мониторинг
paymentUntil
Платёж успешно выполнен. QR-код оплачен.
- Следующий:
disputed(при открытии диспута) - Действия: Готово
- Поле:
completedAtзаполнено
Платёж не удался.
- Следующий:
disputed(при открытии диспута) - Причины: Ошибка банка, недоступность получателя, таймаут
- Поле:
failureReasonсодержит описание - Средства: Разблокированы, возвращены на баланс
Платёж не был взят в обработку.
- Причины: Нет доступных исполнителей
- Средства: Разблокированы
Платёж отменён системой по таймауту.
- Причины: Превышен
paymentUntil - Средства: Разблокированы
Открыт диспут по ордеру.
- Доступно из:
success,failed - Действия: Ожидание решения администратора
При каждой смене статуса отправляется webhook:
{
"event": "order.status_changed",
"orderId": "550e8400-e29b-41d4-a716-446655440000",
"status": "success",
"amountUsdt": 52.63,
"amountRub": 5000.00,
"completedAt": "2026-03-10T12:00:45Z",
"failureReason": null,
"createdAt": "2026-03-10T12:00:00Z"
}curl -X GET 'https://b2b.lumowallet.io/orders/{id}' \
-H 'X-API-Key: YOUR_API_KEY'curl -X GET 'https://b2b.lumowallet.io/orders?status=success&limit=50' \
-H 'X-API-Key: YOUR_API_KEY'Параметры фильтрации:
status— фильтр по статусуlimit— количество записей (1-200, default 20)offset— смещение для пагинации
Следующие статусы являются финальными (изменение невозможно, кроме disputed):
successfailedexpired_no_takerexpired_by_system
- Подписывайтесь на webhooks — не полагайтесь только на polling
- Проверяйте
paymentUntil— планируйте таймауты в UI - Обрабатывайте все статусы — включая expired и failed
- Логируйте
failureReason— для анализа ошибок