生徒都合のキャンセルは24時間前まで全額返金、24時間以内は原則返金なし。講師都合の場合は全額返金。シンプルですが、Stripe 上ではそれぞれ処理が違います。下のシミュレーターで確認できます。
全額返金。講師への送金はまだなので、決済を返金するだけ。
全額返金原則返金なし。レッスンは実施扱いとなり、講師へ80%が支払われます。
返金なし時間にかかわらず全額返金。講師への支払いは行われません。次回クーポンを付与。
全額返金+クーポン全額返金+再予約クーポン。ManaV 負担でお詫び対応。
全額返金+補償レッスン料金 ¥3,500(講師へ80% = ¥2,800)を例に計算します。
※ ManaV は「レッスン完了+返金期限の経過後」に送金する設計なので、通常は「まだ」の状態でキャンセルを受けます。「送金済み」は例外対応の確認用です。
実行される処理:
| ケース | ManaV の挙動 | 関連する Stripe 処理 |
|---|---|---|
| 決済は成功したが予約レコードが作られなかった | Webhook で検知して予約を復旧。復旧不能なら自動全額返金+アラート | payment_intent.succeeded 受信時に予約を冪等 upsert |
| 同じ枠に二重予約が入った | 先着のみ確定。後発は即時全額返金し、他の枠を案内 | refunds.create(full) |
| 講師がオンボーディング未完了のまま予約された | 予約を受け付けない(payouts_enabled=false の講師は枠を公開しない) | account.updated を監視して公開状態を制御 |
| レッスンが途中で切れた(回線不良など) | 実施時間・ログを確認し、半額返金または再レッスンを提示(部分返金) | refunds.create({ amount }) + 送金額を調整 |
| 生徒がカード会社に不正利用を申告(チャージバック) | 証跡(予約・出席ログ・通話記録の有無)を提出。確定したら講師送金を差し戻し | charge.dispute.created → transfer_reversals.create |
| 返金したのに Stripe 決済手数料が戻らない | 少額のため原則 ManaV 負担。多発する講師にはヒアリング | Stripe の返金では決済手数料は返還されない(前提として設計) |
※ ここに書いた挙動・金額はデモ用の想定です。実装時は Stripe の最新仕様と、確定した利用規約に合わせて調整します。