Initial assessment without passwords Quote before intervention One accountable specialist from start to finish

WooCommerce Critical

WooCommerce Payment Completed but Order Shows Failed: Reconcile Before Editing

A successful gateway payment and failed WooCommerce order are two systems disagreeing. Reconcile the transaction before changing status.

What matters first: The customer may have paid even though WooCommerce recorded a timeout, callback failure or local fatal error. The gateway transaction is the financial source of truth for whether funds moved.

What this symptom actually tells you

Changing the order to Processing without evidence can fulfil an unpaid order, while retrying payment can create a duplicate charge.

Capture evidence before changing anything

  • Record order ID, amount, currency, gateway reference and exact time.
  • Check the gateway dashboard for captured, authorised, failed or refunded state.
  • Match gateway webhook/API logs with WooCommerce logs and order notes.
  • Inspect stock and email side effects before any manual status change.

Most common causes

  • Return-page failure: Payment succeeded but the customer-facing redirect failed.
  • Webhook rejected: The gateway callback could not authenticate or reach WordPress.
  • Local fatal after payment: WooCommerce crashed while updating the order.
  • Timeout ambiguity: The request timed out while the gateway completed asynchronously.

Safe diagnostic and repair sequence

  1. Reconcile each affected order transaction by transaction.
  2. Correct the callback, webhook or fatal error for future orders.
  3. Update only confirmed paid orders with an audit note and deliberate stock handling.
  4. Run a controlled test payment through the full cycle.

How to choose between the likely causes

Do not treat Return-page failure and Webhook rejected as interchangeable. Payment succeeded but the customer-facing redirect failed. By contrast, the gateway callback could not authenticate or reach WordPress. Use two checks to separate them: Record order ID, amount, currency, gateway reference and exact time; and check the gateway dashboard for captured, authorised, failed or refunded state. Those observations usually show whether the next safe move is to reconcile each affected order transaction by transaction or to preserve the current state and widen the investigation.

On a live store, reproduce the issue with a controlled test order and follow the same payment, stock, tax and notification path used by customers. Avoid changing several checkout components at once because that changes the application state and can obscure the original sequence of events needed to attribute the failure. Record the exact timestamp, affected URL or transaction, last known good state and every change made during diagnosis. That handover is often what separates a repeatable repair from a temporary disappearance of the symptom.

What not to do

Do not ask the customer to pay again until the gateway transaction has been checked.

How to verify the repair

  • Gateway and WooCommerce agree on final payment state.
  • Stock, email and fulfilment side effects occur exactly once.
  • A new controlled payment updates automatically.

A visible symptom disappearing is not enough. Close the incident only when the original failing action, the surrounding business journey and the relevant logs all agree that the fault is gone.

WP REPAIR INCIDENT STANDARD

Reconstruct the incident before fixing it

Changing the order to Processing without evidence can fulfil an unpaid order, while retrying payment can create a duplicate charge.

WP RepairDiagnostic model
1Browser2Session3Gateway4Order
Follow the chain until you find the first point that stops behaving as expected.
  1. 1

    Record order ID, amount, currency, gateway reference and exact time.

  2. 2

    Check the gateway dashboard for captured, authorised, failed or refunded state.

  3. 3

    Match gateway webhook/API logs with WooCommerce logs and order notes.

  4. 4

    Inspect stock and email side effects before any manual status change.

What must be verified

  • Gateway and WooCommerce agree on final payment state.
  • Stock, email and fulfilment side effects occur exactly once.
  • A new controlled payment updates automatically.

ABOUT THIS SYMPTOM

Frequently asked questions about this guide.

Should I just change the order status to Processing if the customer says they paid?+

Not without evidence. Changing the order to Processing without confirming payment can fulfil an order that was never actually paid, so the gateway dashboard state (captured, authorised, failed or refunded) is the financial source of truth, not the WooCommerce order status.

Is it okay to ask the customer to just pay again since the order shows failed?+

No, this is explicitly what to avoid. Retrying payment before checking the gateway can create a duplicate charge, since the original payment may have actually succeeded while only the callback or local processing failed.

What's the difference between a return-page failure and a webhook rejection here?+

A return-page failure means payment succeeded but the customer-facing redirect back to the site broke, while a webhook rejection means the gateway's server-to-server callback could not authenticate or reach WordPress at all. Distinguishing them requires checking the gateway dashboard state alongside matching webhook or API logs against WooCommerce logs and order notes.

Can a timeout during checkout mean the payment never went through?+

Not necessarily. A timeout is described as inherently ambiguous, since the request can time out on the WooCommerce side while the gateway completes the transaction asynchronously in the background, which is exactly why reconciling transaction by transaction against the gateway is required before editing any order.

BEFORE YOU SEND THE REQUEST

Frequently asked questions.

Do you ask for passwords in the form?+

No. The public form never requests access. Secure credentials are requested only after the scope and quote are approved.

Who reviews the incident?+

The request goes to Jordi Ensenyat, founder of Code Barcelona and a WordPress specialist with more than 15 years of experience.

Is anything changed before the quote?+

No. Visible symptoms and scope are reviewed first. Intervention begins after approval and with a rollback path prepared.

Do you work internationally?+

Yes. WP Repair handles WordPress and WooCommerce incidents in English and Spanish through a remote service.

Assess my incident