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

WooCommerce Critical

PayPal Payment Completed but WooCommerce Order Not Updating

PayPal and WooCommerce disagree when IPN/webhook delivery, identity or order matching fails. Reconcile the transaction first.

What matters first: PayPal may show a completed transaction while the local order remains pending or on hold. The callback can be blocked, configured for another domain or rejected because receiver and currency details differ.

When PayPal says complete but WooCommerce does not

Transaction ID, receiver account and callback history provide the evidence for a safe status decision.

Capture the payment and callback evidence

  • Record PayPal transaction ID, payer, receiver, amount, currency and order ID.
  • Check PayPal callback or webhook delivery logs and response codes.
  • Verify live/sandbox settings and the configured business account.
  • Inspect WooCommerce gateway logs and order notes.

Check receiver and environment before code

  • Callback blocked: Firewall, maintenance or basic auth prevents PayPal from reaching WordPress.
  • Account mismatch: Payment went to an address different from the configured receiver.
  • Mode mismatch: Sandbox and live credentials or endpoints are mixed.
  • Order lookup failure: Custom prefixes, migrations or duplicate IDs prevent matching.

Restore the authentic callback path

  1. Restore the callback path and verify it accepts only authentic PayPal messages.
  2. Correct account and mode configuration.
  3. Reconcile each historical transaction before changing order state.
  4. Complete a controlled payment and refund test through the full flow.

Blocked callback or account mismatch?

If PayPal never reaches the callback endpoint, inspect firewall, maintenance and authentication layers. If the callback arrives but WooCommerce rejects it, compare receiver account, currency, amount and environment. A completed remote transaction is evidence of payment, but not enough on its own to justify changing the local order state.

If PayPal delivery is being rejected, use the same boundary checks described for WooCommerce webhooks returning 401 or 403. If the callback is accepted but the order remains inconsistent, payment-completed orders that remain failed are the safer reconciliation reference.

Never use the return URL as proof of payment

Do not trust query parameters on the return URL as proof of payment.

Reconcile a full PayPal lifecycle

  • PayPal and WooCommerce reference the same transaction and amount.
  • New orders update without manual intervention.
  • Invalid or unmatched callbacks remain quarantined and logged.

Close the incident only after a controlled PayPal payment updates WooCommerce without manual intervention, unmatched callbacks remain rejected and logged, and the subsequent refund also reconciles in both systems.

WP REPAIR INCIDENT STANDARD

How to narrow the fault without guessing

Transaction ID, receiver account and callback history provide the evidence for a safe status decision.

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

Record PayPal transaction ID, payer, receiver, amount, currency and order ID.

02

Check PayPal callback or webhook delivery logs and response codes.

03

Verify live/sandbox settings and the configured business account.

04

Inspect WooCommerce gateway logs and order notes.

What must be verified

  • PayPal and WooCommerce reference the same transaction and amount.
  • New orders update without manual intervention.
  • Invalid or unmatched callbacks remain quarantined and logged.

Official technical sources

ABOUT THIS SYMPTOM

Frequently asked questions about this guide.

Can I trust the PayPal return URL's query parameters as proof the payment went through?+

No, this is explicitly warned against. Query parameters on the return URL are not proof of payment; the PayPal transaction ID, payer, receiver, amount and currency need to be checked directly against PayPal's records instead.

PayPal shows the transaction as completed but the order is still pending — what's the most overlooked cause?+

An account mismatch, where the payment went to a different receiver address than the one configured in WooCommerce's PayPal settings, is a distinct and easily overlooked cause separate from the callback simply being blocked by a firewall or maintenance mode.

Does mixing sandbox and live PayPal credentials produce this same symptom?+

Yes. A mode mismatch, where sandbox and live credentials or endpoints are mixed, is listed as one of the common causes, and verifying live/sandbox settings and the configured business account is one of the specific evidence-gathering steps before making any change.

If order IDs don't match between PayPal and WooCommerce, could that be a migration issue rather than a payment issue?+

Yes. Order lookup failure caused by custom order-number prefixes, past migrations or duplicate IDs can prevent WooCommerce from matching an otherwise valid PayPal callback to the correct order, which is a data-matching problem rather than a payment or authentication failure.

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↗