card_velocity_exceededhighAffects MRR

Stripe card_velocity_exceeded Error — Causes, Fix & MRR Impact

The Stripe card_velocity_exceeded error occurs when the customer has exceeded the card's balance, credit limit, or transaction limit, causing the issuer to decline and potential MRR loss for SaaS businesses processing subscription payments.

What this means

The card's balance, credit limit, or transaction limit was exceeded. The customer may need to pay down the card, wait for limits to reset, or use another payment method.

Why it happens

Credit limit reached

The customer's credit card is at or over its credit limit, so the issuer declined the new charge.

Transaction or velocity limit

The issuer enforces a per-transaction or per-day limit that was exceeded.

Balance over limit

For debit or prepaid cards, the available balance was exceeded by the charge amount.

Multiple charges in short period

Several charges in a short time triggered the issuer's velocity or fraud controls.

MRR Impact

Limit and velocity declines reduce MRR; retries with backoff and offering an alternative payment method can recover some revenue.

Velocity and limit declines are common; retries and alternative payment options help protect MRR.

Avg. recovery rate: Variable; retries and dunning help; recovery improves when customer adds another card or resolves with bank.

Urgency: within 24h

How to fix it

  1. 1

    Handle decline_code in webhook or response

    When decline_code is card_velocity_exceeded, trigger retry logic with backoff and optionally send a dunning email asking the customer to ensure funds or use another card.

  2. 2

    Implement retries with backoff

    Retry the payment after a delay (e.g. 24–72 hours). Use Stripe's smart retry or your own schedule. Do not retry immediately; limits often reset daily or per cycle.

  3. 3

    Prompt for alternative payment method

    In-app or email: suggest adding another card or payment method so the subscription can be charged even if one card is at its limit.

  4. 4

    Avoid exposing internal reason

    You can show a message like 'Your card was declined. Please try another card or contact your bank.' Do not need to mention velocity or limit explicitly.

  5. 5

    Monitor and tune retry schedule

    Track recovery rate for card_velocity_exceeded. Adjust retry timing and dunning frequency based on what works for your cohort.

Detect card_velocity_exceeded automatically

Track card_velocity_exceeded volume; correlate with billing cycles or plan changes. Compare recovery vs insufficient_funds.

Monitor your Stripe health free →

FAQ

What is Stripe card_velocity_exceeded?
card_velocity_exceeded means the customer has exceeded the balance, credit limit, or transaction amount limit on their card. The issuer declined for limit reasons. Similar to insufficient_funds; recommend the customer contact their issuer or use another payment method. Retries may work later if limits reset.
Should I retry card_velocity_exceeded?
Retrying with backoff can work if the limit is per-day or resets (e.g. next billing cycle). Follow Stripe retry guidance. Also prompt the customer to use another card or resolve the limit with their bank. Do not retry aggressively without backoff.
How does card_velocity_exceeded differ from insufficient_funds?
insufficient_funds is specifically about available balance. card_velocity_exceeded can be balance, credit limit, or transaction/velocity limits. Handling is similar: retry with backoff, dunning, and offer to update payment method.
Does this affect SaaS MRR?
Yes. Failed charges from velocity or limit declines reduce MRR. Retries and clear messaging (use another card or contact bank) help recover a portion of failed payments.

Related errors