Stripe · Decline codes
What does the Stripe approve_with_id decline code mean?
Checked
Stripe describes approve_with_id simply as "the payment can't be authorized." The card's bank did not approve the charge as it was sent. Stripe's advice is to attempt the payment again, and if it still fails, the customer should contact their card issuer. It is not described as a problem with the card number, funds or fraud, so one fresh attempt is reasonable, but repeated identical retries are not.
- Type
- Soft decline
- Who declined
- The card's bank
- Retry
- Yes, once; then the customer contacts the bank
- Shopper action
- Try once more, then call the bank or use another card
- Merchant action
- Allow one retry; do not loop the same charge
What PlatformDTC does
If the store has set PayPal card payments as its backup, PlatformDTC's checkout can offer to run the card again through PayPal after an approve_with_id decline (the shopper re-enters the card; risk checks still run). With Smart retry on, a renewal declined this way gets one retry 48 to 72 hours later, like do_not_honor; a second refusal asks the customer for a new payment method through a one-click link.
Why it happens
Stripe does not give more detail than "can't be authorized." The decline came from the bank's side, not from wrong card details reported to Stripe.
What the shopper can do
Try the payment one more time. If it fails again, contact the bank using the number on the card, or pay with a different card.
What the store can do
Let the customer retry once. If the same card keeps failing, point them to another payment method rather than resubmitting. Card networks cap reattempts: Visa allows up to 20 attempts in 30 days for declines that may be retried.
For developers
Read decline_code on last_payment_error and check outcome.advice_code. If it says do_not_try_again, stop. On Visa, network_decline_code gives the bank's raw response, which tells you more than the Stripe label.
Frequently asked questions
- Should I retry an approve_with_id decline?
- Stripe says to attempt the payment again, and if it still can't be processed, the customer needs to contact their card issuer.
- Does approve_with_id mean the card is fake or stolen?
- No. Stripe only says the payment can't be authorized. It does not describe it as fraud or a lost card.
Sources
Related
- call_issuer — The bank declined without a reason and wants the cardholder to contact it.
- do_not_honor — The bank declined the card without saying why.
- generic_decline — Declined for an unknown reason, or blocked by Stripe Radar or Adaptive Acceptance.
- try_again_later — Deprecated code: the bank declined for an unknown reason; try again later.
- card_not_supported — The card can't be used for this kind of purchase.
- card_velocity_exceeded — The card's balance, credit limit or amount limit has been reached.
- currency_not_supported — The card can't be charged in the currency of the payment.
- do_not_try_again — Deprecated code: declined for an unknown reason; don't charge this card again.