Short answer
Show Stripe’s error message next to the card field and let the customer type the number again or pick another card. Collect cards with Stripe Elements or Checkout, which check the number as it is typed. Don’t retry the same card automatically.
Rather not fix it yourself? Stripe Billing Fix and Setup handles it at a fixed price, agreed before work starts.
Why the card number fails, and the fix
01
The customer mistyped the number
“The card number is incorrect. Check the card’s number or use a different card.” Stripe, Error codes (incorrect_number)
A swapped digit or an old card saved in browser autofill is enough. Keep the form filled in apart from the card field, and show the message so the customer can fix it.
02
Your form skips Stripe’s checks
A custom form that handles raw card numbers skips those checks and puts you in PCI scope. The Payment Element and Checkout flag an incomplete or invalid number before the customer pays.
03
You need to test the error
“Use a card number that fails the Luhn check, such as 4242424242424241.” Stripe, Testing (declined payments)
In test mode, a card that fails the number check shows the error. The Payment Element and Checkout block it in the browser, so to test your server-side handling, send the number to the API directly.
04
Your code retries the same card
“The customer needs to try again using the correct card number.” Stripe, Decline codes (incorrect_number)
An automatic retry with the same number fails again and creates another failed payment. Wait for the customer to change the details.
Checked against the vendor’s docs on : Stripe docs: Decline codes; Stripe docs: Error codes; Stripe docs: Testing.
Rather hand it over?
Fixed scope, fixed price, paid upfront. The work happens in writing; no call needed.
- $950Stripe Billing Fix and SetupSubscriptions, webhooks, customer portal and failed payments set up or fixed, tested in Stripe test mode.See scope and start
- from $450App Fix TicketOne reproducible bug in an existing mobile or web app, diagnosed and fixed.See scope and start
- from $450AI-Built App RescueA Lovable, Bolt or Cursor app checked end to end in 3 days, then its worst problems fixed at a fixed price.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.See scope and start
“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.”
Related: Stripe incorrect_cvc · Stripe incorrect_zip · Stripe expired_card · Stripe card_not_supported