Плейбук инцидентов в платежах
TL;DR
Инцидент в платежах — это управляемая операция: быстро классифицируй → стабилизируй UX (фейловер/деградация) → сохрани деньги (идемпотентность/блок-правил) → прозрачно коммуницируй → восстанови → зафиксируй RCA. Главные SLO: MTTA, MTTR, TtW/TtR, AR, Webhook p95, нулевая терпимость к double charge/refund.
1) Матрица серьезности (Severity & Impact)
Триггеры: алерты SLA/казначейства/сверки, пики саппорта, мониторинг AR/latency/webhooks.
2) Роли и канал связи
Incident Commander (IC) — владелец таймлайна и решений.
Payments Tech Lead — маршрутизация, идемпотентность, фич-флаги.
Treasury Lead — ликвидность, prefunding, stress-резервы.
Risk/AML — санкции, блок-правила, SoF/SoW.
Comms Manager — шаблоны для саппорта/партнеров, статус-апдейты.
Recon/Finance — сверка, сторно/журналы, оценки потерь.
Штаб: #payments-incident-warroom (чат), Zoom-бридж + живой документ таймлайна (UTC).
3) Универсальный цикл (for any incident)
1. Detect & Triage → подтвердить метрики/охват, присвоить Sev.
2. Stabilize UX → фейловер роутинга, деградация фич, заморозка опасных автодействий.
3. Money Safety → включить идемпотентность/блоки (refund/payout), зафиксировать журналы.
4. Communicate → внутренний апдейт (15/30/60 мин), внешние сообщения (статус/ETA/обходные пути).
5. Recover → пошаговый откат/открытие, верифицировать SLO.
6. Reconcile → сравнить леджер/PSP/банк, рассчитать financial impact.
7. RCA (≤5 р.д.) → корень, действия, предотвратители, задачи.
4) Типовые сценарии и Runbook’и
4.1 Auth Drop / Latency Spike (карты/A2A)
Симптомы: AR↓, soft declines↑, p95 auth>1–2 s.
Действия:- Smart-routing: PSP_A→PSP_B, увеличить 3DS-challenge на уязвимых BIN.
- Ограничить ретраи (backoff+джиттер), защитить идемпотентность `auth_key`.
- Сегмент-toggle: high-risk в «строгий» сценарий; снизить high-ticket лимиты.
- Коммуникации: «заметка о деградации», рекомендовать альтернативный метод.
- Восстановление: поэтапный возврат доли трафика, контроль AR в разрезе BIN×GEO.
4.2 Webhooks Delay / Duplicate
Симптомы: p95>3–5 c, пропуски capture/refund/payout, дубликаты.
Действия:- Перейти на polling; усилить TTL идемпотентности.
- Заморозить авто-рефанды и рискованные авто-выплаты.
- Анти-дубль: store-once по `idempotency_key/provider_txid`.
- Провести catch-up обработку; сверка с реестрами PSP.
- Восстановление: включить webhooks, сравнить консистентность с отчетами.
4.3 Payout Fail / TtW Degradation
Симптомы: Success%↓, TtW p95↑, возвраты/тайм-ауты.
Действия:- Фейловер на резервный рельс (RTP/SEPA/другой PSP).
- Treasury: prefund top-up payout-пула, StressRes активация.
- Payout-lock для high-risk, приоритизация VIP.
- Коммуникации: ETA и альтернативы, прозрачность статусов в личном кабинете.
4.4 Refund Errors / Double Refund Risk
Симптомы: Refund error rate↑, спорные/дублирующие возвраты.
Действия:- Глобальный refund-freeze на авто-маршруте, только ручной с правами.
- Жесткая идемпотентность `payment_id+amount+reason`; row-lock на остаток.
- Повторная сверка по PSP report; сторно дублей в леджере, кейсы в DLQ.
- Коммуникации:模板 для карт (T+1–T+5 б.д.), instant — до 60 с.
4.5 Settlement Delay / PSP Batch Mismatch
Симптомы: D+N не зачислилось, diff в суммах/fee.
Действия:- Treasury: включить StressRes, ограничить мгновенные выплаты.
- Recon: пометить батч «SUSPENSE», поднять тикет PSP, запросить statement.
- FX/Fees: принять временную «истину» (policy) или ждать корректировку.
- Коммуникации: Q&A для саппорта (безопасность средств, сроки урегулирования).
4.6 Crypto On/Off-Ramp Degradation
Симптомы: TtH↑, слippage↑, дефицит ликвидности площадки.
Действия:- SOR→альтернативный CEX/OTC, уменьшить размер лота (TWAP).
- Перевод входящих в стейбл/фиат, лимит depeg-экспозиции.
- Kill-switch при расхождении оракула > лимита bps.
4.7 Voucher/Wallet Anomalies
Симптомы: Invalid PIN spike, velocity, гео-миск.
Действия:- Лимиты/кулдаун, привязка redeem к устройству, payout-lock+turnover.
- Запрос чеков/SoF, пополнение блок-листов (email/device/ASN/retailer).
5) Чек-листы действий
5.1 Пять первых минут (P0/P1)
- Назначить IC, открыть war-room.
- Зафиксировать Sev, охват, старт таймлайна (UTC).
- Включить безопасные фич-флаги (идемпотентность, freeze нужных автопроцессов).
- Запустить фейловер/деградацию функций.
- Первый внутренний апдейт (контекст, меры, след. ETA).
5.2 Перед закрытием инцидента
- Восстановлены SLO (AR/latency/webhooks/TtW/TtR).
- Проведена сверка (internal↔PSP↔банк), нет «черных дыр».
- Финансовый impact оценен, сторно/журналы оформлены.
- Внешний апдейт/пост в статус-канале.
- Назначен владелец RCA и задачи предотвращения.
6) Мониторинг, алерты и дашборды
Ключевые алерты:- `AR_gross↓ > 3 п.п. (к p7 медиане)` → P1/P0 по охвату.
- `Auth p95>1.5 s / Webhook p95>5 s / Capture Success<98%` → P1.
- `Payout TtW p95> SLO` или `Success%<99%` → P1.
- `Refund Error>0.3%` или `Double Refund>0` → P0.
- `Settlement on-time<99%` / `Report Delivery SLA breach` → P1.
1. Фанел Attempt→Auth→Capture (сравнение к линии базиса).
2. Heatmap AR по BIN×GEO×PSP.
3. Webhook p50/p95, дубликаты, дребезг.
4. Payout/Refund Health (Success%, TtW/TtR).
5. Treasury: баланс L0, prefund, StressRes.
6. Recon: Mismatch Rate, Aging DLQ.
7) Коммуникации (шаблоны)
Внутренний (15 мин):8) Сверка и деньги (после стабилизации)
Прогнать авто-сверку: provider_txid/idem_key/amount/time-bucket.
Выделить DLQ: orphan/duplicate/amount mismatch/fee drift.
Оформить сторно/коррекции в леджере, пересчитать Cost/GGR и Fraud Loss.
Казначейство: закрыть временные меры (StressRes, payout-lock), ребаланс пулов.
9) Шаблон RCA (Root Cause Analysis)
Контекст: дата/время (UTC), Sev, охват, метрики.
Симптомы: что увидели (графики/скриншоты).
Причина: корень (тех/процессы/контрагент).
Что сработало/не сработало: фейловер, фич-флаги, коммуникации.
Финансовый эффект: списания/невыплаты/комиссии/кредиты SLA.
- Тех: лимиты, идемпотентность, ретраи, тесты.
- Процессы: обновление плейбука, QBR с PSP, SLA изменения.
- Дедлайны и владельцы задач.
10) Автоматизация и интеграции
Feature-flag platform: мгновенный роутинг/деградация по стране/BIN/методу.
Runbook-бот: команды `/failover PSP_A→B`, `/freeze refunds`, `/enable polling`.
Anomaly-детектор: статистическое отклонение AR/latency со знанием сезонности.
Post-incident macros: автоматическое открытие RCA-шаблона, сбор логов/графиков, чек-лист сверки.
11) Drill-календарь и UAT
Ежемесячно: «Auth drop» drill (15 мин от детекта до фейловера).
Квартально: «Webhook outage» + «Refund double-strike» (идемпотентность).
Раз в полгода: «Settlement delay + Treasury stress» (StressRes).
UAT-пакет: тест-кейсы идемпотентности, фейловера, сверки, коммуникаций.
12) Метрики успеха плейбука (операционные KPI)
MTTA/MTTR: медиана/п95 по P0/P1.
Percent auto-failover within 10 min.
Incidents preventing double charge/refund (=100%).
Post-incident recon complete ≤ D+1.
Service credits recovered / month (по SLA).
User impact minutes (сумма по инцидентам).
13) Частые ошибки и как их избежать
Поздняя активация фейловера (нет автоматических порогов).
Отсутствие «freeze» на авто-рефанды при дребезге webhooks.
Нет row-lock/версионирования → partial refund > остатка.
Коммуникации без фактов/ETA → эскалация в саппорт.
Нет связки с казначейством → TtP/TtW выходят из SLO.
Пропуск сверки → «черные дыры» в выручке.
14) Приложения (ссылочные блоки внутри вашей wiki)
SLA с платежными провайдерами — пороги алертов и кредиты.
Сверка платежей и отчетов PSP — процедуры recon/DLQ.
Казначейство: ликвидность и резервы — StressRes/Prefunding.
KPI платежного контура — формулы AR/TtW/TtR/Refund Health.
Частичные и полные рефанды — идемпотентность и политика.
Резюме
Рабочий плейбук — это сценарные runbook’и + автоматизация + дисциплина пост-мортемов. Он сокращает MTTR, защищает деньги (идемпотентность/сверка/казначейство), минимизирует пользовательский ущерб и системно улучшает отношения с PSP по SLA. Результат — AR выше, TtW/TtR в коридорах, ноль дублей, предсказуемые флоу денег.