Skip to content

Stripe decline codeStripe: lost_card and stolen_card declines

lost_card and stolen_card are Stripe decline codes for a card the bank has reported lost or stolen. Stripe says not to tell the customer the reason: show the same message as a generic decline. Never retry that card.

Short answer

Show a generic “Your card was declined” message and ask for another payment method. Don’t reveal the lost or stolen reason, and don’t retry the card. Log the decline code for your own review, and check whether the account shows other signs of card testing.

Rather not fix it yourself? Stripe Billing Fix and Setup handles it at a fixed price, agreed before work starts.

What the codes mean, and the fix

  1. 01

    The bank reported the card lost

    “The payment was declined because the card is reported lost.” Stripe, Decline codes (lost_card)

    The cardholder reported the card lost, or the bank flagged it. The person paying may be the owner using an old card, or someone else.

  2. 02

    The message shows the real reason

    “Don’t report more detailed information to your customer. Instead, present it in the same manner as generic_decline.” Stripe, Decline codes (stolen_card)

    Telling a fraudster that a card is flagged helps them test other cards. Use exactly the same text you show for generic_decline, and keep the real code in your server logs. Never send decline_code or the raw Stripe message to the browser.

    // server side: log the real code, send one generic message
    const GENERIC = 'Your card was declined. Please try another payment method.';
    
    function declineMessage(err) {
      console.warn('decline', err.decline_code); // server logs only
      return GENERIC; // same text for lost_card, stolen_card and generic_decline
    }
  3. 03

    Retrying the card

    Retrying a card the bank has reported lost or stolen is unlikely to succeed and adds failed attempts. For a subscription, stop retrying that card and ask the customer to add a new one.

  4. 04

    Many declines in a short time

    A run of lost, stolen or generic declines from new accounts can be card testing. Add rate limits on payment attempts per account and per IP, add CAPTCHA to checkout, turn on Radar rules for card testing, and review the payments in the Dashboard.

Checked against the vendor’s docs on : Stripe docs: Decline codes.

Rather hand it over?

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

“Working with Simon makes everything run so smoothly and better than I could ask for it. Amazingly communicative, extremely knowledgeable of coding and the backend processes. I strongly recommend.”
A buyer in the United States, January 2026. App development on Fiverr
All 127 Fiverr reviews

Related: Stripe generic_decline · Stripe do_not_honor · Stripe incorrect_zip · Stripe fraudulent decline

Questions

More on this error

Should I block the customer?

Not on one decline: an honest customer can use an old card. Watch for repeated declines on one account and act on the pattern.

What is lost_or_stolen_card?

The same reason, reported by some payment partners under one code. Stripe says to present it as partner_generic_decline, the generic decline for that payment partner.

Can you fix it for me?

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.

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.