Lumo отправляет следующие события на ваш webhookUrl в дополнение к событиям ордеров (см. Webhooks).
Все события подписаны одним webhookSecret компании, заголовок X-Lumo-Signature (HMAC-SHA256 от JSON-тела).
Карта выпущена — приходит после асинхронного выпуска (когда исходный вызов POST /cards/request вернул status: pending).
{
"event": "card.assigned",
"data": {
"cardId": "8c7f1823-...",
"requestId": "2077f4ef-...",
"maskedPan": "4466 ** ** 1234",
"expiry": "03/29",
"assignedAt": "2026-04-23T12:00:00Z"
}
}Получен 3DS-код из почты эквайера. См. 3DS OTP.
{
"event": "card.otp_received",
"data": {
"cardId": "8c7f1823-...",
"code": "582130",
"receivedAt": "2026-04-23T12:00:10Z",
"expiresAt": "2026-04-23T12:02:10Z"
}
}Новая транзакция по карте (purchase / refund / ...). Шейп — тот же, что у GET /cards/:id/transactions.
Карта закрыта (см. Закрытие карты). Остаток за вычетом комиссии за закрытие возвращён на баланс компании.
{
"event": "card.closed",
"data": {
"cardId": "8c7f1823-...",
"closingBalance": 24.5,
"feeUsdt": 1,
"refundUsdt": 23.5
}
}Пополнение успешно завершилось.
{
"event": "card.recharge.succeeded",
"data": {
"rechargeId": "7f2b12a4-...",
"cardId": "8c7f1823-...",
"targetAmountUsd": 50,
"totalDebitUsdt": 51.96
}
}Отклонено эквайером. totalDebitUsdt автоматически возвращён на баланс.
{
"event": "card.recharge.failed",
"data": {
"rechargeId": "7f2b12a4-...",
"cardId": "8c7f1823-...",
"failureReason": "Insufficient issuer funds"
}
}Успешное пополнение было позже возвращено (например, отменено эквайером). Средства вернулись на баланс.
Пополнение зависло — требуется ручное вмешательство нашей стороны. Средства пока списаны. Связывайтесь с support с rechargeId.
- At-least-once: одно событие может прийти несколько раз.
- Используйте
data.cardId/data.rechargeIdкак idempotency-ключ на своей стороне. - Порядок не гарантируется:
card.recharge.succeededможет прийти раньше соответствующегоcard.transaction.created, если эквайер быстрее подтвердил пополнение, чем обновил историю.