WebCare Studios

Stripe says paid but WooCommerce says pending

The short answer

If Stripe shows a successful payment but WooCommerce leaves the order pending, do not charge the customer again. Match the payment to the order, then inspect webhook delivery, gateway logs and order notes. A blocked or rejected event is one possible cause. Confirm the payment state before retrying events or changing fulfilment.

The request usually sounds like this:

Stripe says paid, but the order still says pending. We check the PaymentIntent, order reference and event delivery first. A fix is handled by repairing the verified delivery or processing fault, then testing one matched event safely. Prevention adds webhook checks and checkout testing after gateway updates.

Start with the payment, not the order label

Confirm whether Stripe shows a successful charge, an authorisation or an incomplete payment. Check the amount, currency, account and order reference. Keep fulfilment paused until the records agree. Do not collect card details, issue a second charge or mark every pending order paid.

Reconcile without duplicate side effects

Take a backup and inspect gateway logs with sensitive values redacted. Correct the identified fault first. Event replay can trigger email, stock or fulfilment actions, so confirm the gateway handles repeated events safely. Test with Stripe test mode on staging, then reconcile the specific live payment with an audit note.

Keep checkout changes under care

Gateway updates need checkout tests, not just a successful homepage load. Commerce care is for WooCommerce and includes checkout, cart and payment monitoring. Agree checks for the gateway and extensions you actually use.

Trace the fault safely

Symptoms, possible causes, safe tests and repairs
SymptomPossible causeSafe testFix
No matching delivery attemptWrong account, mode or webhook endpointMatch the live PaymentIntent and configured destinationCorrect the endpoint and selected events
Delivery gets 403Firewall or access rule blocks StripeInspect delivery response and firewall logsAdjust the specific verified rule without disabling protection sitewide
Signature check failsEndpoint signing secret does not matchCompare endpoint configuration without exposing secretsConfigure the correct endpoint secret and retest
Delivery returns 500Gateway or extension errorReview redacted logs and reproduce in stagingRepair the identified conflict or handler
Delivery returns 200 but order stays pendingReference mismatch or processing faultCompare order notes, event ID and gateway logsRepair mapping or processing and reconcile the matched order
Stripe payment is not succeededAuthorisation or incomplete paymentInspect the actual PaymentIntent stateFollow the gateway payment flow rather than forcing paid status

Commerce is $349/mo. Review the plan on pricing.

Start with an Emergency Fix

Emergency Fix is $249. We confirm the technical scope before work starts. First response: 8 to 12 hours.

Discuss the Emergency Fix

Choose the next step

Frequently asked questions

Should I ask the customer to pay again?

Not until you have checked Stripe and matched the payment. A second attempt can create a duplicate charge.

Can I resend the webhook?

Only after matching the event to the order and correcting the fault. Check repeat handling and side effects before replaying a live event.

Is every pending order a webhook failure?

No. Payment may be incomplete, the order reference may not match or a gateway extension may fail while handling a delivered event.

All problems