Guide
card_velocity_exceeded on Stripe: the customer hit a limit
Last updated 12 August 2026 · written by Bruce McGinley, who builds RecoverFlow
A limit on the card was reached. Stripe's decline codes reference: the customer has exceeded the balance, credit limit, or transaction amount limit available on their card. The documented next step is for the customer to contact their card issuer for more information.
Which of those three limits it was, and when it resets, is between the customer and their bank. What you can act on is the shape of the thing: limits are conditions that change, which makes this a decline where patience does real work.
On this page
What the code covers
Despite the word velocity, Stripe's documented description spans three different ceilings: the card's balance, its credit limit, and its transaction amount limit. A maxed out card, a card near its limit hit by a large charge, and a card whose issuer caps individual transactions all land on this same code.
The issuer does not tell Stripe which one applied, and it will not tell you either. Card issuers discuss the specifics of a decline only with their cardholders.
Will Stripe retry it, and should it?
Stripe retries it. card_velocity_exceeded is not one of the nine codes that stop retries, so the schedule keeps running, and here that is genuinely useful. Balances free up, statements close, and a charge that was over the line one week can be under it the next.
It has a family resemblance to insufficient_funds in that respect: the card is real, the account is real, and the obstacle is a number that moves. The same handling advice applies. Give the retry window room rather than compressing every attempt into the first few days.
When to involve the customer
Not immediately. On the first failure there is a fair chance the next scheduled attempt clears, and an email about a limit the customer may already be uncomfortably aware of does not improve anything.
If it persists across the retry window, Stripe's documented next step is the customer contacting their issuer, and your dunning email can also offer the practical alternative: a different card.
Questions people actually ask
Is card_velocity_exceeded a hard decline?
No. It is not on Stripe's list of nine codes that stop retries, and the underlying condition, a limit on the card, is the kind that changes over time. Stripe retries it on your schedule.
What limit did the customer exceed?
Stripe's docs name three possibilities: the card's balance, its credit limit, or its transaction amount limit. The issuer does not say which, and will only discuss it with the cardholder.
Will the payment work if I retry it later?
Sometimes, which is why Stripe keeps retrying it. Balances and limits move. If the charge keeps failing across your whole retry window, the documented path is the customer contacting their card issuer, and offering a different card is the practical fallback.
Should I email the customer about card_velocity_exceeded?
Not on the first failure. Let a retry or two run first. If it persists, one plain email offering a card update link works better than a sequence, since the customer usually knows the state of their own card.
Where this came from
Checked against primary sources on 12 August 2026. If Stripe changes something and this page has not caught up, tell us and it gets fixed.
- Stripe: Decline codes reference — the documented meaning and next steps for every code on this page.
- Stripe: Card declines — advice codes, and Stripe's guidance on reducing declines.
- Stripe: Smart Retries — the source for the nine code list that stops retries.
If you would rather not build this yourself
RecoverFlow watches your Stripe account for failed subscription payments, stops retrying the ones that cannot succeed, and emails the customers whose card simply needs replacing. It charges 25% of what it can attribute to a specific action it took, with a $29 monthly floor and a $299 monthly ceiling, and the floor is waived for the first 30 days.
It is early. It is run by one person. If Stripe's own free retry settings are enough for you, use those instead, and there is a page on this site that says exactly when that is the right call.
See how the pricing works
Recover