Stripe Decline Code · Glossary
card_velocity_exceeded fires when the customer has hit a spending ceiling, transaction frequency limit, or credit limit set by their issuing bank — the card itself is valid, the customer is real, and the account is active, but the bank's internal velocity controls are blocking any further charges until the limit resets or is increased.
What It Means
What It Means
card_velocity_exceeded fires when the customer has hit a spending ceiling, transaction frequency limit, or credit limit set by their issuing bank — the card itself is valid, the customer is real, and the account is active, but the bank's internal velocity controls are blocking any further charges until the limit resets or is increased. It is a soft-to-hard decline depending on the limit type — spending caps and daily limits reset automatically, making some occurrences highly recoverable; credit limit exhaustion requires customer action before any retry can succeed.
Not sure if this code is recoverable for your specific situation? Use the Stripe Failure Lookup →
Why It Happens
Why It Happens
What NOT to Do
What NOT to Do
✕ Don't retry immediately or repeatedly
card_velocity_exceeded from a transaction count or spending cap perspective is time-bound — retrying within the same velocity window that triggered the block will fail identically every time. Rapid successive retries are particularly damaging here: the bank's fraud engine may interpret multiple retry attempts on a velocity-blocked card as card testing behavior and escalate the block from a soft velocity cap to a harder fraud flag.
✕ Don't treat all occurrences identically — the reset window varies wildly
A daily spending cap resets at midnight. A monthly credit cycle resets in 30 days. A corporate card budget resets quarterly. Applying a flat "retry in 3 days" rule to all card_velocity_exceeded failures ignores this variance entirely — you'll retry too early for credit cycle resets and too late for daily cap resets, burning attempts inefficiently at both extremes.
✕ Don't send a generic "update your payment method" email first
Unlike expired_card or restricted_card where a new payment method is the only fix, many card_velocity_exceeded failures self-resolve when the velocity window resets. Leading with a card update CTA for a limit that will reset in 24–48 hours creates unnecessary friction and drives card update abandonment on accounts that would have recovered automatically with a simple retry.
Retry Timing
Retry Timing
card_velocity_exceeded requires limit-type-aware retry timing — the single most important variable is what type of velocity limit was hit.
Recovery Benchmark
Recovery Benchmark
| Metric | Result |
|---|---|
| Overall recovery rate (all sub-types) | 45–65% |
| Recovery on daily/weekly cap (silent retry) | 65–75% — resets automatically |
| Recovery on monthly credit cycle | 35–50% with timed retry + email |
| Recovery on corporate/virtual card budget | 15–25% (alternate method dependent) |
| Recovery with blind immediate retries | 10–15% (hits same velocity window) |
| Recovery with silent retry at correct reset window | +25–35% lift over generic timing |
A 60%+ overall recovery rate is achievable on card_velocity_exceeded when your retry scheduler is aware of velocity window types. The biggest single lever is silent retry timing precision — teams that retry at the correct reset window for each sub-type dramatically outperform those using a flat retry interval. For daily cap resets especially, a correctly timed 25-hour silent retry recovers 65–75% with zero customer interaction required.
At Scale
At Scale
Automated
Manual Escalation
FAQs
FAQs
What does the Stripe card_velocity_exceeded decline code mean?
card_velocity_exceeded means the customer has exceeded a spending limit, transaction count cap, or credit ceiling set by their issuing bank. The card is valid and the customer is genuine — the bank's velocity controls are blocking further charges until the limit resets or is increased. Recovery depends entirely on what type of limit was hit and when it resets.
What are the most common causes of a card_velocity_exceeded error in Stripe?
Common causes include hitting a daily or weekly transaction count limit, reaching a daily or monthly spending cap, exhausting available credit on a credit card, triggering a fraud velocity check from multiple rapid charge attempts, or hitting a programmatic budget limit on a corporate or virtual card issued by tools like Brex, Ramp, or Float.
Should I retry a payment after a card_velocity_exceeded decline?
Yes, but only at the correct reset window for the limit type. For daily spending caps, schedule a silent retry at 25–28 hours — the limit resets at midnight bank local time. For monthly credit cycles, retry at Day 10 and Day 20. For corporate card budget limits, skip retries entirely and route to an alternate payment method immediately.
Should I email my customer when Stripe returns card_velocity_exceeded?
Not immediately for daily or weekly cap sub-types. Attempt a silent background retry at the correct reset window first — if it succeeds, no customer email is needed. Only trigger customer notification if the silent retry also fails, or if the sub-type is a credit limit or corporate card budget that requires customer action to resolve.
What is the recovery rate for Stripe card_velocity_exceeded failures?
Overall recovery rates are 45–65% depending on limit type. Daily and weekly cap sub-types recover at 65–75% with a correctly timed silent retry. Monthly credit cycle sub-types recover at 35–50% with timed retries and a customer notification. Corporate card budget limits recover at 15–25% and require an alternate payment method switch.
What to do next
You are here
card_velocity_exceeded
Decline code reference
Check recoverability
Stripe Failure Lookup
See what's recoverable — and what isn't →
Then
Sign up for Recurflux
Automate recovery for every decline code →
Before you retry
Before you retry
Most card_velocity_exceeded failures are retried on the wrong schedule — which recovers the payment about 30% of the time. The other 70% leaves permanently. See what this code is actually costing at your MRR before deciding how to handle it.
Stop leaving revenue on the table
Recurflux handles code-specific retry scheduling, adaptive dunning, and dispute intelligence across all 30 Stripe decline codes. Connect in under 5 minutes.