There are several reasons why a credit card can be declined using the Payment for Stripe app. The reasons are generally surfaced in the app after a charge with a descriptive label outlining the reasoning. There are two possible reasons why a credit card payment can fail:
- Payments declined by the card issuer
- Blocked payments (Stripe Radar, fraud, etc)
Payments declined by card issuers
Card issuers have automated systems that determine whether the charge should be authorized or not. The algorithms look at various signals instantaneously, from spending habits, account balance and credit card information, as well as location of the charge. Unfortunately, not all of the information that led to the decline is shared with Stripe, and subsequently to the Payment app. In rare cases, card issuers may also provide helpful explanations, but generally, card decline reasons can be hard to track down.
In some cases, the type of restrictions on the credit card can also cause certain declines. For example, using an FSA/HSA card to create a charge for a non-medical payment.
In addition, geographic location can also play a role in declined or failed payments. If credit cards are issued in a different country than your Stripe account, you may be at a higher risk of fraud, and thus risk a higher rate of failed payments.
Payments blocked by Stripe Radar
Every Stripe account comes with automated fraud verification for every single charge made on the Stripe network. The reason this is helpful is simple: Stripe processes billions of dollars in transactions every single day, scanning and identifying trends that give your Stripe account real time feedback on fraud across a variety of mediums. In addition, the Radar prevention tool can also be used to scale up and down your protection, ultimately putting you in control of how finicky your payment protection should be.
How can card declines be avoided?
One of the easiest ways is by using a PCI-compliant card reader, such as Stripe Terminal. Not only does using a card reader give you an abundance of new ways to collect payment methods like Apple Pay and Google Pay, but you'll also be able to accept chip-enabled cards; further preventing fraud. Although manually inputting card numbers is supported by the Payment app, they are still treated by payment gateways and issuers like an online purchase would be, as there is no evidence that the card was “present” at the time of the transaction.
In some cases, it may also be helpful to provide additional information with the charge. At the very least, including a billing zip or postal code to be validated with the credit card can help exponentially, but other information including name on the card and billing address can also be validated and checked against known fraudulent transactions. Lastly, providing a billing email address also allows Stripe Radar to check to see if that email address has been used across the Stripe network (globally) for other types of fraud.
What are the bank decline codes?
Decline Code | Description |
---|---|
authentication_required | The card was declined as the transaction requires authentication. |
approve_with_id | The payment cannot be authorized. |
call_issuer | The card has been declined for an unknown reason. |
card_not_supported | The card does not support this type of purchase. |
card_velocity_exceeded | The customer has exceeded the balance or credit limit available on their card. |
currency_not_supported | The card does not support the specified currency. |
do_not_honor | The card has been declined for an unknown reason. |
do_not_try_again | The card has been declined for an unknown reason. |
duplicate_transaction | A transaction with identical amount and credit card information was submitted very recently. |
expired_card | The card has expired. |
fraudulent | The payment has been declined as Stripe suspects it is fraudulent. |
generic_decline | The card has been declined for an unknown reason. |
incorrect_number | The card number is incorrect. |
incorrect_cvc | The CVC number is incorrect. |
incorrect_pin | The PIN entered is incorrect. This decline code only applies to payments made with a card reader. |
incorrect_zip | The ZIP/postal code is incorrect. |
insufficient_funds | The card has insufficient funds to complete the purchase. |
invalid_account | The card, or account the card is connected to, is invalid. |
invalid_amount | The payment amount is invalid, or exceeds the amount that is allowed. |
invalid_cvc | The CVC number is incorrect. |
invalid_expiry_year | The expiration year invalid. |
invalid_number | The card number is incorrect. |
invalid_pin | The PIN entered is incorrect. This decline code only applies to payments made with a card reader. |
issuer_not_available | The card issuer could not be reached, so the payment could not be authorized. |
lost_card | The payment has been declined because the card is reported lost. |
merchant_blacklist | The payment has been declined because it matches a value on the Stripe user's block list. |
new_account_information_available | The card, or account the card is connected to, is invalid. |
no_action_taken | The card has been declined for an unknown reason. |
not_permitted | The payment is not permitted. |
offline_pin_required | The card has been declined as it requires a PIN. |
online_or_offline_pin_required | The card has been declined as it requires a PIN. |
pickup_card | The card cannot be used to make this payment (it is possible it has been reported lost or stolen). |
pin_try_exceeded | The allowable number of PIN tries has been exceeded. |
processing_error | An error occurred while processing the card. |
reenter_transaction | The payment could not be processed by the issuer for an unknown reason. |
restricted_card | The card cannot be used to make this payment (it is possible it has been reported lost or stolen). |
revocation_of_all_authorizations | The card has been declined for an unknown reason. |
revocation_of_authorization | The card has been declined for an unknown reason. |
security_violation | The card has been declined for an unknown reason. |
service_not_allowed | The card has been declined for an unknown reason. |
stolen_card | The payment has been declined because the card is reported stolen. |
stop_payment_order | The card has been declined for an unknown reason. |
testmode_decline | A Stripe test card number was used. |
transaction_not_allowed | The card has been declined for an unknown reason. |
try_again_later | The card has been declined for an unknown reason. |
withdrawal_count_limit_exceeded | The customer has exceeded the balance or credit limit available on their card. |
The list above is directly from Stripe. For a complete list, as well as suggested next steps, please visit: https://stripe.com/docs/declines/codes