Спроектируй refund flow для {{product}} на {{psp}}.
Шаг 1: триггеры возврата
- Пользователь сам запросил (self-service в UI)
- Запрос через support (email/чат)
- Chargeback от банка
- Автоматический возврат (failure, сбой сервиса, дубль)
- Policy-based (free trial → платёж за 1 день до окончания → возврат)
Зафиксируй: кто и как может инициировать. Каждый канал — отдельная воронка.
Шаг 2: policy (документ)
Обязательно описать
- Окно возврата: 7 / 14 / 30 / 90 дней (выбрать одно по сегменту)
- Что подлежит: подписка (pro-rated?), один-time, addon
- Что не подлежит: использованные часы/токены/доставленные товары
- Кто принимает решение: автомат / support / manager
- Срок обработки: 1-3 / 5-10 рабочих дней
Региональные правила
- EU: 14-дневный «cooling-off» для digital — обязателен (если не было opt-out)
- US: на твоё усмотрение, но публикуй
- РФ: ЗоЗПП — отдельный анализ
Partial vs full
- Полный — отмена за окно, никаких возражений
- Pro-rated — подписка с расчётом использованных дней
- Частичный — конкретная позиция (e-com), частичная компенсация (квалити-issues)
Шаг 3: self-service UX
Где располагать
- Billing / Settings → Subscription → «Cancel and refund»
- НЕ прятать в 4-х кликах — это бесит и ведёт к chargeback'у
Step-by-step
- Триггер: кнопка «Request refund» / «Cancel & refund»
- Reason picker: 4-6 вариантов причин (не obligatory free text)
- Слишком дорого / Не нашёл нужного / Технические проблемы / Случайно купил / Перешёл на другое / Другое
- Save attempt (если уместно): предложить downgrade / pause / скидку
- Подтверждение: показать сумму к возврату, на какую карту, в какой срок
- Confirmation screen: refund ID, email на почту, сроки
Шаг 4: коммуникация
Email после запроса
- Подтверждение получено
- Сумма
- Сроки (с конкретной датой)
- Что произойдёт с аккаунтом (downgrade / cancel / hold)
- Контакт support если что-то не так
Email после возврата
- Возврат отправлен в банк
- Когда ожидать на карте (3-10 раб. дней зависит от банка)
- Если есть вопросы — куда писать
- Опросник «почему ушёл» — опционально, не агрессивно
НЕ делать
- «Подумайте ещё раз» во второй раз, после явного выбора
- Тон обиды, длинный текст, эмоции
Шаг 5: логика (backend)
Сценарии
- Subscription, до billing period end → отмена + возврат pro-rated
- One-time, в окне → полный возврат
- Подписка, после нескольких циклов → возврат за последний (если есть unused время) или по policy
- Add-on → отдельно
Технические детали ({{psp}})
- Stripe:
refunds.create({ payment_intent, amount? }) - Webhook
charge.refunded→ обновить статус, отозвать доступ - Idempotency key — обязателен (двойные клики бывают)
- Журнал: кто, когда, причина, refund_id, сумма
Шаг 6: отзыв доступа
- Подписка отменена → доступ до конца оплаченного периода (если не fraud)
- Если fraud / chargeback → немедленный block
- Лицензии / API ключи — пометить как inactive (не удалять — для аудита)
Шаг 7: anti-fraud
- Refund после многократных трансакций с одной карты — флаг
- Refund + повторная регистрация — флаг
- Refund на другую карту, чем платил — нет (только на оригинал)
- High-value refund (>$X) — требует human approval
Шаг 8: метрики
Финансовые
- Refund rate (% от revenue)
- Refund rate by reason
- Time-to-refund (median, p95)
- Chargeback rate (отдельно — это страшнее)
Качественные
- Reasons distribution (тренды по месяцам)
- Repeat refund offenders (segment)
- Save-attempt acceptance rate (если предлагаешь downgrade)
Алерты
- Refund rate растёт > 2× baseline за неделю
- Chargeback rate > 1% — критично (могут отрубить от {{psp}})
- Один пользователь подал 3+ refund'а за месяц
Формат вывода
- Policy document (1 страница для публикации)
- Decision tree (что → что → что)
- UI wireframes / описания экранов
- Email templates (4 штуки: request, processed, denied, fraud)
- Backend pseudo-code для основных кейсов
- Список метрик и алертов
Анти-паттерны
- ❌ Прятать refund в 5+ кликов
- ❌ Требовать звонок / email вместо self-service
- ❌ Молчать после запроса (юзер пойдёт в банк = chargeback)
- ❌ Делать возврат на другую карту (fraud)
- ❌ «Возвращаем только в кредитах на счёт» — формальное жульничество, ведёт к chargeback
- ❌ Игнорировать chargeback'и (>1% — отрубят от платёжной системы)
- ❌ Save-attempt в виде wall-of-text — раздражает
- ❌ Refund без отзыва доступа — теряешь и деньги, и сервис
Похожие промты
site / auditFeatured
Полный UX-аудит сайта
Эвристическая оценка по Нильсену + проверка ключевых сценариев. На выходе — приоритизированный список проблем.
uxauditheuristics
Открыть
Средний15-30 мин
site / payments
Интеграция Stripe
Checkout, подписки, webhook'и, идемпотентность, тест-режим — production-ready stripe.
paymentsstripeintegration
Открыть
Продвинутый1-2 часа
site / payments
Subscription-флоу: upgrade, downgrade, cancel
Что происходит при смене плана, отмене, паузе — UX + биллинг.
paymentssubscription
Открыть
Продвинутый30-60 мин