decline_code and decline_type, and the PaymentIntent returns to
requires_payment_method. Confirming the PaymentIntent returns 402 with
code PAYMENT_DECLINED and the same fields.
Where to read the code
A PaymentIntent’s
charges list is ordered oldest first, so use
latest_charge_id for the most recent attempt.
Decline types
retryable: true means the same card could succeed on a later attempt, for
example after funds are deposited or a limit resets. It does not mean an
immediate retry will succeed.
Codes
Authorization declines
retryable
The card does not have enough available funds.
retryable
The card reached an amount or frequency limit.
retryable
The card reached a limit on the number of transactions.
retryable
The issuer declined without giving a reason.
retryable
The card was declined for an unspecified reason.
retryable
The card cannot be used for this payment, including when the cardholder stopped recurring payments to the merchant.
not retryable
The card has expired.
not retryable
The card number is invalid.
not retryable
The security code is incorrect.
not retryable
The payment was declined as a duplicate of a recent one.
Authentication declines
These codes report a fraud signal from the issuer.not retryable
The card was reported stolen.
not retryable
The card was reported lost.
not retryable
The issuer suspects fraud.
not retryable
The issuer asked for the card to be retained.
not retryable
The card is restricted.
not retryable
The issuer reported a security violation.
Infrastructure declines
retryable
An error occurred while processing the payment.
retryable
The card issuer could not be reached.
retryable
The payment could not be completed now.
not retryable
The payment was rejected before it reached the card issuer, for example because the card type is not supported.
Messages the buyer sees
Ionic-hosted checkout and hosted invoice pages show the buyer one message per code.
Every authentication code shows the same neutral message, so the buyer does
not learn which fraud signal the issuer reported. Use the same approach on
payment pages you build.
Other payment outcomes
See Errors for the error envelope and every status
code.
Test declines
In test mode, a charge under $1.00 declines withgeneric_decline. To test how your
integration handles a specific code on a subscription renewal, arm a
collection scenario
with that decline_code. See Test cards.
