Skip to the tool
MoveAheadPayments Toolbox

Stripe decline code: card_velocity_exceeded

Stripe's wording: "The customer has exceeded the balance, credit limit, or transaction amount limit available on their card." The customer needs to contact their card issuer for more information.

card_velocity_exceededRetryable

The same request can succeed later. Retry with backoff.

What it means

A limit on the card has been reached — a balance, a credit line, or a cap on transaction value or frequency within the issuer's window. The name says velocity, but Stripe's description covers value limits as well, which is why it overlaps with both ISO 8583's 61 (amount limit) and 65 (frequency limit). It is often self-inflicted by retry logic: a loop that reattempts declines will exhaust a frequency allowance and turn one bad transaction into a blocked card.

Common causes

  • Genuine heavy use of the card within the issuer's counting window.
  • A retry loop on your side consuming the allowance — the most common avoidable cause.
  • Several pre-authorisations against the same card in quick succession.
  • A card with a deliberately low limit, common on prepaid and virtual cards.

How to fix it

  1. Stop retrying immediately. Every attempt consumes the allowance a later, better-timed attempt would need.
  2. Wait for the issuer's window to reset — usually a day — before trying the card again.
  3. Audit your decline handling. An immediate reattempt on any decline manufactures this code within minutes.
  4. Follow Stripe's documented step where it persists: the customer needs to contact their issuer.

Tools that help

Frequently asked questions

Did my retry logic cause this?
If it appeared shortly after a burst of declines on the same card, almost certainly. Velocity limits count attempts rather than successes, so a handler that retries every decline immediately will exhaust the allowance in under a minute and then fail every subsequent transaction on that card regardless of how good it is.