# Stripe: card_decline_rate_limit_exceeded

> Stripe returns card_decline_rate_limit_exceeded after a card is declined too many times; it can be retried after 24 hours. Check for card testing first.

Canonical: https://app369.com/fix/stripe-card-decline-rate-limit-exceeded/
Last updated: 2026-11-10

card_decline_rate_limit_exceeded is the Stripe error for a card that has been declined too many times. Stripe says it can be charged again after 24 hours. One customer retrying is the mild case; a spike in declines across many cards can be a sign of card testing, which Stripe describes separately.

**Short answer**

For one customer, ask them to check their card details or use another card; the same card can be tried again after 24 hours. If many cards fail at once, check for card testing: refund suspicious payments, move to Stripe Checkout or the latest Payment Element, and limit how often your own endpoint can create payments.

Rather not fix it yourself? [**Stripe Billing Fix and Setup**](https://app369.com/fixed-price/stripe-billing-setup/) handles it at a fixed price, agreed before work starts.

## **Why the card hit the limit, and the fix**

1. 01 ### **A customer kept retrying a bad card**
  > “This card has been declined too many times. You can try to charge this card again after 24 hours.” [**Stripe, Error codes (card_decline_rate_limit_exceeded)**](https://docs.stripe.com/error-codes) Stripe suggests checking that the customer entered all details correctly and that there is no issue with the card. Show the decline message clearly after the first failure so they fix the details or use another card.
2. 02 ### **Someone is testing stolen cards**
  > “A spike in suspicious payments with low transaction amounts, often with nonsensical customer names and emails.” [**Stripe, Card testing**](https://docs.stripe.com/disputes/prevention/card-testing) A spike in failed payments, many small amounts and nonsense names or emails point to card testing. Refund what got through so it doesn’t turn into disputes.
3. 03 ### **The checkout is easy to script**
  > “If you use the latest Stripe Payment Element or Checkout, we have many automated and manual controls in place to mitigate card testing” [**Stripe, Card testing**](https://docs.stripe.com/disputes/prevention/card-testing) A custom form that creates a payment on every submit, with no sign-in or CAPTCHA, lets a script try a large number of cards. Stripe recommends its own integrations, which carry its built-in protections, plus your own limits on the endpoint.
4. 04 ### **Blocking by IP alone**
  > “simple firewall rules or filters based on a single heuristic such as IP addresses are usually not sufficient to prevent card testing on their own.” [**Stripe, Card testing**](https://docs.stripe.com/disputes/prevention/card-testing) Also check: a firewall rule on a few IP addresses rarely stops it. Card testers use a wide variety of techniques, so a rule on a single signal is usually not enough. Combine several.

Checked against the vendor’s docs on November 10, 2026: [Stripe docs: Error codes](https://docs.stripe.com/error-codes); [Stripe docs: Card testing](https://docs.stripe.com/disputes/prevention/card-testing); [Stripe docs: Decline codes](https://docs.stripe.com/declines/codes).

## **Rather hand it over?**

Fixed scope, fixed price, paid upfront. The work happens in writing; no call needed.

- [$950**Stripe Billing Fix and Setup**Subscriptions, webhooks, customer portal and failed payments set up or fixed, tested in Stripe test mode.**See scope and start**](https://app369.com/fixed-price/stripe-billing-setup/)
- [from $450**App Fix Ticket**One reproducible bug in an existing mobile or web app, diagnosed and fixed.**See scope and start**](https://app369.com/fixed-price/flutter-firebase-bug-fix/)
- [from $450**AI-Built App Rescue**A Lovable, Bolt or Cursor app checked end to end in 3 days, then its worst problems fixed at a fixed price.****No issues worth fixing, no charge.**** If the Launch Check finds nothing rated medium or higher, Simon refunds the full $450. You keep the report either way. This applies to the first 10 Launch Checks bought after October 30, 2026.**See scope and start**](https://app369.com/fixed-price/ai-app-rescue/)

[**All 127 Fiverr reviews**](https://app369.com/reviews/)

Related: [**Stripe card_velocity_exceeded**](https://app369.com/fix/stripe-card-velocity-exceeded/) · [**Stripe card declined: fraudulent**](https://app369.com/fix/stripe-card-declined-fraudulent/) · [**Stripe rate limit 429**](https://app369.com/fix/stripe-rate-limit-429/) · [**Stripe card declined**](https://app369.com/fix/stripe-card-declined-generic-decline/)

Questions

## **More on this error**

<details>

<summary>**Is it the same as card_velocity_exceeded? **+</summary>

No. card_velocity_exceeded is a decline code: Stripe says the customer has exceeded the balance, credit limit or transaction amount limit on the card. card_decline_rate_limit_exceeded is an error code that says the card has been declined too many times and can be tried again after 24 hours.

</details>

<details>

<summary>**Can the customer pay with the same card today? **+</summary>

Not with that card for now. Stripe says it can be tried again after 24 hours; another card works straight away.

</details>

<details>

<summary>**Can you fix it for me? **+</summary>

If one bug is the whole problem, the App Fix Ticket covers it: a written diagnosis first, then the fix. If the app has more going on, the Launch Check is a written check of the whole app. Each issue found is rated critical, high, medium or low, with where it is and how it was confirmed. No issues worth fixing, no charge. If the Launch Check finds nothing rated medium or higher, Simon refunds the full $450. You keep the report either way. This applies to the first 10 Launch Checks bought after October 30, 2026.

</details>

A different error?

## **Describe it and get a written quote**

Send the error and what you were doing. You get a written scope, a fixed price and a timeline; Simon replies by email, usually within one business day.

[**Describe your problem **→](https://app369.com/contact/) [**All fixes**](https://app369.com/fix/)