Manual Retry は、決済の詳細ページまたは API からリクエストすると、失敗したサブスクリプションの更新決済を直ちに再試行します。サブスクリプションに保存されている決済手段に請求し、自動の Payment Retries スケジュールとは独立して実行されます。
Manual Retry とは?
更新決済に失敗すると、サブスクリプションはon_hold に移行し、Payment Retries がバックオフスケジュールに従って請求を再試行します。顧客がアカウントへのチャージを確認した場合や、サポートチームが顧客と通話中の場合など、すぐに決済が成功すると分かっていることもあります。Manual Retry を使うと、次のスケジュール済みリトライを数時間または数日待たずに、すぐに 1 回試行できます。
- 更新決済のみ: Manual Retry は、サブスクリプションが
on_holdの間の、サブスクリプション更新 invoice に適用されます。初回決済、1 回限りの決済、プラン変更による請求、オンデマンドの請求は対象外です。 - 顧客による操作は不要: サブスクリプションにすでに保存されている決済手段に請求します。
- 自動リトライとは独立: 手動リトライは自動スケジュールの試行回数を消費せず、次回のスケジュール済みリトライを移動させず、Payment Retries が無効の場合でも機能します。
- 決済ではなく invoice を再試行: 失敗した決済は入口にすぎません。Dodo Payments はその背後にある未払いの更新 invoice を検索して請求するため、invoice 上のどの失敗した決済から再試行するかは問題になりません。
ダッシュボードからの再試行
1
Open the failed payment
Transactions → Payments に移動し、失敗した更新決済をクリックして Transaction details ページを開きます。
2
Click Retry Payment Manually
右上の Retry Payment Manually をクリックします。このボタンは、決済が対象である間のみ使用できます。
3
Check the result
試行のために新しい決済が作成され、Activity Log に表示されます。請求が成功すると、サブスクリプションは
active に戻り、次回の請求日は通常どおり進みます。決済プロセッサがまだ請求を確定していない場合、payment.succeeded または payment.failed webhook が結果を通知するまで、決済は処理中として表示されます。
Retry Payment Manually on the transaction details page of a failed renewal
対象条件
以下のすべてのチェックに合格した場合のみ、手動リトライが送信されます。Reason code 列は API が返す値です。GET /payments/{payment_id}/retry では reason として、POST /payments/{payment_id}/retry では code エラーとして返されます。
Manual Retry は、自動リトライよりも 1 つの点で対象範囲が狭く、サブスクリプションが
on_hold であることが必要です。自動リトライは、active 以外の他のステータスでも実行されます。Subscription Status Transitions を参照してください。リトライ上限
各更新 invoice では、手動リトライを3 回まで実行でき、各リトライの間にはクールダウンがあります。
この上限は test mode と live mode の両方に適用されます。この理由でリトライが拒否されると、API は
MANUAL_RETRY_LIMIT_REACHED (HTTP 429) を返します。エラー body には code と message のみが含まれます。次回のリトライがいつ可能になるかを確認するには、リトライ状態を確認し、retry_available_at を読み取ってください。3 回すべてを使い切ると null になります。
自動リトライはこの上限にカウントされず、手動リトライも自動スケジュールの 8 回の試行にはカウントされません。
手動リトライと自動リトライの比較
API を使用した再試行
まず対象条件を確認し、その後リトライを送信します。どちらの endpoint も失敗した決済の ID を受け取ります。決済が再試行可能か確認する
GET /payments/{payment_id}/retry は、対象外の決済に対して失敗することはありません。代わりに reason code とともに can_retry: false を返すため、ダッシュボードやサポートツールで Dodo Payments ダッシュボードと同じ状態を表示できます。Viewer role が必要です。
Response
手動リトライを送信する
POST /payments/{payment_id}/retry は新しい決済を作成し、保存済みの決済手段に請求します。Editor role が必要です。
Response
エラーレスポンス
すべての code については、Error Codes reference で説明しています。
Webhooks
Manual Retry は通常の決済を作成するため、他の更新試行と同じ webhook が発火します。
これらの event の payment object では、
retry_attempt は 1 以上で、subscription_id が設定されます。これは自動リトライの場合とまったく同じです。手動試行とスケジュール済み試行を区別する必要がある場合は、リトライ response の payment_id を保持してください。
Payment Webhook Payloads
決済 event の完全な payload schema。
関連情報
Subscription Payment Retries
手動リトライと並行して実行される自動バックオフスケジュール。
Subscription Dunning
ハードディクライン後に決済手段を更新するよう顧客にメールします。
Handle Payment Failures
ディクラインコードを読み取り、リトライする価値があるタイミングを判断します。
Error Codes
すべての
MANUAL_RETRY_* code、そのトリガー、メッセージ。