メインコンテンツへスキップ

Overview

Dodo Payments returns a detailed failure reason whenever a payment attempt is unsuccessful. These reasons are standardized across payment methods and providers, so you can implement consistent handling in your application. When a payment fails, the payment.failed webhook and the payment object expose:
  • error_code — a standardized failure reason from the table below.
  • error_message — a human-readable explanation.
  • retry_attempt0 for the original charge, 1 or higher for each scheduled subscription renewal retry.
Understanding these failure reasons lets you give customers clear feedback, decide whether a retry is worthwhile, and recover more revenue.

Handle Payment Failures

A step-by-step developer guide for reading these codes from webhooks and the API, surfacing them to customers, and deciding when to retry.

Soft vs. Hard Declines

Every failure code falls into one of two categories. This distinction drives whether you should retry the same payment method or ask the customer for a new one. For subscription renewals, Dodo Payments applies this distinction automatically: soft declines are re-attempted by Subscription Payment Retries, while hard declines end the retry chain immediately and are best handled with Subscription Dunning.
Never reveal the real reason for STOLEN_CARD, LOST_CARD, PICKUP_CARD, or FRAUDULENT to the customer. Surfacing these can tip off a fraudulent actor. Always show the customer a generic decline message (for example, “Your card was declined. Please contact your bank or use another card.”) and only log the specific code internally.

Transaction Failure Reasons

The following table lists every failure code, its decline type, whether the customer can resolve it, a description, and the recommended action.
User Error indicates whether the payment decline can be resolved by the customer. When Yes, the customer can take action to fix the issue (for example, entering correct card details). When No, the decline is due to system-level issues or bank restrictions that the customer cannot resolve directly.
カードは、発行銀行のリスクエンジンがカード所有者をハイリスク顧客としてフラグ付けした場合にも却下されることがあります。このような拒否には、一般的なコードが表示されることがあり、たとえばDO_NOT_HONORGENERIC_DECLINECARD_DECLINEDTRANSACTION_NOT_APPROVED、またはFRAUDULENTなどがあります。この場合、銀行は特定の理由を共有しないため、Dodo Paymentsも販売者も決定を覆すことはできません。顧客に銀行へ連絡してフラグを解決するよう依頼するか、別のカードや支払い方法を使用するように促してください。

プログラムによる失敗の処理

error_codepayment.failed webhookまたは支払いオブジェクトから読み取り、上記の推奨アクションにマップし、再試行するかどうかを判断します。サブスクリプションの更新の場合、ソフト拒否は自動的に再試行されます — サブスクリプション支払いの再試行を参照してください。 カード拒否でないAPIレベルおよびビジネスロジックエラー(例:PAYMENT_NOT_SUCCEEDEDまたはREFUND_WINDOW_EXPIRED)については、エラーコードリファレンスを参照してください。

関連

失敗した支払いの検出、表示、再試行に関するエンドツーエンドガイド。 非拒否エラーのAPIおよびビジネスロジックエラーコード。 サブスクリプションの更新でソフト拒否を回復する自動再試行。 支払い方法の更新を促すことでハード拒否を回復するメールシーケンス。

サポート

取引の失敗や統合の問題についての追加のヘルプが必要な場合は、support@dodopayments.comまで弊社のサポートチームにお問い合わせください。
最終更新日 2026年6月26日