Skip to content

Stripe decline codeStripe: processing_error (an error occurred while processing the card)

processing_error is the Stripe code for a card payment that failed while it was being processed. Stripe doesn’t say where it failed, and a second try often works. Let the customer try once more, and if it fails again, ask them to use another card or contact the bank.

Short answer

Show a message that the payment didn’t go through and offer a retry with the same PaymentIntent. If it fails a second time, suggest another card. On the server, reuse an idempotency key only when you repeat the same request after a timeout, and use a new key for a new attempt. For subscriptions, Smart Retries or your retry schedule will try the renewal again.

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

What processing_error means, and what to do

  1. 01

    The processing failed, not the card

    “An error occurred while processing the card. Try again later or with a different payment method.” Stripe, Error codes (processing_error)

    Stripe doesn’t say where the processing failed. It advises trying again, and the card may work on a second attempt. The code shows up on the error, in the PaymentIntent’s last_payment_error, and in the payment_intent.payment_failed webhook.

  2. 02

    Let the customer retry once

    “Ask the customer to attempt the payment again. If it still can’t be processed, the customer needs to contact their card issuer.” Stripe, Decline codes (processing_error)

    Keep the PaymentIntent and confirm it again. If the second try fails too, stop and offer another card instead of retrying in a loop.

    if (error?.code === 'processing_error' || error?.decline_code === 'processing_error') {
      showMessage('The payment didn’t go through. Try again, or use another card.');
    }
  3. 03

    Server retries need an idempotency key

    An idempotency key stops one attempt from being sent twice, for example after a network timeout. Stripe replays the first result for a key, failures included, so a deliberate retry after processing_error needs a new attempt: confirm the PaymentIntent again, or use a new key.

    // server side, saved card, customer not present
    await stripe.paymentIntents.create(
      { amount, currency: 'usd', customer: customerId, payment_method: pmId, off_session: true, confirm: true },
      { idempotencyKey: `order-${orderId}-attempt-${attempt}` },
    );
  4. 04

    Many payments fail at once

    A burst of processing errors across different cards points to a wider problem. Check the Stripe status page and your Dashboard before changing code.

Checked against the vendor’s docs on : Stripe docs: Decline codes; Stripe docs: Error 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 idempotency key errors · Stripe expired_card · Stripe do_not_honor decline · Stripe card_not_supported

Questions

More on this error

Was the customer charged?

A failed attempt doesn’t complete the payment. Check the PaymentIntent status in the Dashboard: it stays unpaid until an attempt succeeds.

Is it my code?

One failure rarely is. If every payment fails this way, check your integration and the Stripe status page.

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.