What each Stripe decline code means and what to do next
As a developer or founder handling payments through Stripe, you've likely encountered the frustrating experience of a payment being declined. But not all declines are created equal. Understanding what each decline code means and how to respond can help you reduce failed payments and improve your revenue collection.
In this guide, we'll break down the most common Stripe decline codes, what they actually mean, whether retrying helps, and what you should tell your customers.
do_not_honor
What it means: This decline code indicates that the customer's card issuer has specifically declined the transaction without providing a more specific reason. It's essentially a catch-all "we're not allowing this transaction" response from the bank.
Should you retry? Generally no. The issuer has explicitly declined the transaction, and retrying is unlikely to succeed. Multiple retries might even increase the risk of the card being flagged for suspicious activity.
What to tell the customer: "Your bank has declined this transaction. Please contact your bank card issuer or try a different payment method."
More details: Understanding do_not_honor declines
generic_decline
What it means: This is another catch-all decline code that indicates the transaction was declined for unspecified reasons. It's similar to do_not_honor but comes from a different part of the payment processing chain.
Should you retry? Possibly, but not immediately. Wait a few hours or try the next day before attempting again. If it fails multiple times, advise the customer to contact their bank.
What to tell the customer: "We're unable to process this payment. Please try again later or use a different payment method."
More details: Understanding generic_decline
insufficient_funds
What it means: This is straightforward - the customer's account doesn't have enough money to cover the transaction.
Should you retry? Not immediately. The customer would need to add funds to their account first. You might want to set up a retry for a few days later if this is a subscription payment.
What to tell the customer: "There are insufficient funds in your account. Please ensure you have enough balance or try a different payment method."
More details: Understanding insufficient_funds
expired_card
What it means: The card being used has passed its expiration date.
Should you retry? No, not with the same card. The customer will need to provide a new card with a valid expiration date.
What to tell the customer: "Your card has expired. Please update your payment information with a new card."
More details: Understanding expired_card declines
incorrect_cvc
What it means: The card verification code (CVC/CVV) provided doesn't match what the bank has on file for that card.
Should you retry? Not immediately. The customer should double-check the CVC they entered. If they continue to receive this error, they may need to contact their bank as there could be an issue with their card.
What to tell the customer: "The card verification code you entered doesn't match our records. Please double-check and try again."
More details: Understanding incorrect_cvc declines
card_declined
What it means: This is a general decline code that doesn't specify the exact reason. It could be due to various factors including daily limits, suspected fraud, or other restrictions.
Should you retry? Possibly, but not right away. Wait a few hours or try the next day. If it continues to fail, advise the customer to contact their bank.
What to tell the customer: "We're unable to process this payment. Please try again later or use a different payment method."
More details: Understanding card_declined
Handling declines in your application
When implementing payment handling in your application, it's important to:
- Capture the specific decline code from Stripe's response
- Display appropriate messages to your customers based on the code
- Implement proper retry logic where appropriate
- Consider implementing dunning processes for subscription payments
For a more comprehensive guide to decline codes and solutions, check out Stripe decline codes guide and solutions.
If you're experiencing higher-than-expected decline rates, you might want to use the free in-browser CSV check to identify potential revenue leakage in your Stripe account.
This article was written with AI assistance.
Top comments (0)