Technik & WordPress

WooCommerce-Bestellung bleibt auf „In Wartestellung“: die häufigsten Ursachen bei Zahlung und Webhooks

Hängt eine WooCommerce-Bestellung auf „In Wartestellung“, fehlt fast immer die Rückmeldung des Zahlungsanbieters. So finde ich die Ursache.

📅 8. Oktober 2026
WooCommerce-Bestellung bleibt auf „In Wartestellung“: die häufigsten Ursachen bei Zahlung und Webhooks
WooCommerce-Bestellung bleibt auf „In Wartestellung“: die häufigsten Ursachen bei Zahlung und Webhooks

Bleibt eine WooCommerce-Bestellung auf „In Wartestellung“ oder „Zahlung ausstehend“ stehen, obwohl der Kunde bezahlt hat, liegt das in den allermeisten Fällen nicht am Shop selbst, sondern an einer Rückmeldung, die nie angekommen ist. Der Zahlungsanbieter schickt nach einer erfolgreichen Zahlung einen Webhook an die Website, und genau dieser Aufruf wird häufig blockiert, bevor er WooCommerce erreicht. Wie ich in solchen Fällen vorgehe, zeigt sich am besten Schritt für Schritt.

Was der Status eigentlich bedeutet

WooCommerce unterscheidet „Zahlung ausstehend“ (pending) und „In Wartestellung“ (on-hold) bewusst von „In Bearbeitung“ oder „Abgeschlossen“. Pending heißt: Die Bestellung wurde angelegt, aber noch kein Signal zur Zahlung ist eingetroffen. On-hold setzt der Shop zum Beispiel bei Vorkasse per Überweisung automatisch, manche Zahlungs-Plugins nutzen den Status aber auch, wenn eine Rückmeldung unsicher ausfällt. Beide Zustände ändern sich nicht von selbst, nur weil der Kunde sagt, er habe bezahlt — WooCommerce wartet auf ein eindeutiges Signal von außen, und ohne dieses Signal bleibt die Bestellung genau da stehen, wo sie ist.

Woran es in der Praxis meistens liegt

Ich prüfe die Ursachen in dieser Reihenfolge, weil die ersten beiden Punkte in meiner Erfahrung den größten Teil der Fälle erklären:

  1. Die Webhook-Adresse des Shops ist für den Zahlungsanbieter nicht erreichbar, etwa weil eine Firewall oder ein Security-Plugin die Anfrage abweist.
  2. Ein Passwortschutz liegt noch auf der Seite, oft ein Rest aus der Entwicklungsphase, der versehentlich live geblieben ist.
  3. WP-Cron läuft nicht zuverlässig, weil die Seite zu wenig Besucher hat, um die zeitgesteuerten Aufgaben von WordPress regelmäßig anzustoßen.
  4. Ein veraltetes SSL-Zertifikat oder eine zu alte TLS-Version lässt den Zahlungsanbieter die Verbindung ablehnen.
  5. Das Zahlungs-Plugin oder WooCommerce selbst ist veraltet und spricht nicht mehr das aktuelle Webhook-Format.

Lösung Schritt für Schritt

Zuerst öffne ich die betroffene Bestellung in WooCommerce und lese die Bestellnotizen. Dort steht meist schon, ob überhaupt ein Rückruf vom Zahlungsanbieter eingegangen ist oder ob die Bestellung von Anfang an ohne jedes Signal hängen geblieben ist. Diese Unterscheidung entscheidet, wo ich weiter suche.

Ist nichts angekommen, schaue ich beim Zahlungsanbieter ins Entwickler-Dashboard — bei Stripe unter „Entwickler → Webhooks“, bei PayPal im Entwickler-Dashboard unter „Webhooks“. Dort zeigt das Zustellprotokoll jeden Versuch mit Statuscode: 403 deutet auf eine Firewall-Sperre hin, 500 auf einen Fehler im Shop, ein Timeout auf einen überlasteten oder zu langsamen Server. Mit der Testfunktion des Anbieters lässt sich das Ereignis gezielt erneut auslösen, ohne eine echte Bestellung anzulegen.

Zeigt sich eine Sperre, prüfe ich das Security-Plugin — bei Wordfence etwa die Firewall-Protokolle nach blockierten Anfragen zur passenden Uhrzeit — und trage die IP-Bereiche oder die Webhook-URL des Zahlungsanbieters als Ausnahme ein. Parallel kontrolliere ich, ob ein globaler Passwortschutz vom Hosting noch aktiv ist; der gehört auf eine Staging-Umgebung, nicht auf die Live-Seite.

Kommt das Signal zwar an, ändert WooCommerce den Status aber erst nach einer Verzögerung, liegt das Problem häufig an WP-Cron. WordPress stößt zeitgesteuerte Aufgaben normalerweise beim Seitenaufruf an, und bei wenig Besuchern passiert das zu selten. Hier lohnt sich ein echter Server-Cron-Job, der wp-cron.php alle paar Minuten aufruft, statt sich auf Besucheraufrufe zu verlassen; das Plugin WP Crontrol zeigt dabei verständlich, wann welche Aufgabe zuletzt lief.

Zuletzt prüfe ich die Versionen: WooCommerce, das Zahlungs-Plugin und die PHP-Version im Hosting sollten zueinander passen — welche PHP-Version aktuell nötig ist, habe ich im Beitrag zur PHP-Mindestversion für WooCommerce beschrieben. Lässt sich die Ursache aus der Ferne nicht eindeutig eingrenzen, bitte ich um Zugang zu Hosting und Zahlungsanbieter-Konto; über die Kontaktseite klärt sich das meist schneller als über einen langen E-Mail-Wechsel.

Was danach zu prüfen ist

Nach der Korrektur lohnt sich eine echte Testbestellung mit kleinem Betrag über denselben Zahlungsweg, bei dem das Problem aufgetreten ist. Wechselt der Status automatisch auf „In Bearbeitung“ oder „Abgeschlossen“ und kommt die Bestätigungsmail an, war die Ursache gefunden. Bleibt die Testbestellung stecken, sollte die Webhook-URL nochmals mit der Testfunktion des Anbieters geprüft werden — manchmal greift eine Ausnahmeregel erst nach dem nächsten Caching-Durchlauf.

Wie man es künftig vermeidet

Ein einfacher Uptime-Check auf die Checkout-Seite meldet, wenn der Shop zeitweise nicht erreichbar ist. Wer die Statusseite seines Zahlungsanbieters abonniert, erfährt von Störungen oft, bevor Kunden sich beschweren. Updates an WooCommerce, am verwendeten Theme in WordPress und am Zahlungs-Plugin sollte man zeitnah einspielen, am besten zuerst auf einer Staging-Kopie testen. Und Firewall-Regeln, die ganze IP-Bereiche sperren, brauchen von Anfang an eine Ausnahme für die bekannten Adressen der eingesetzten Zahlungsanbieter.

Kurz beantwortet

Was bedeutet der Status „Zahlung ausstehend“ in WooCommerce?

Die Bestellung ist angelegt, WooCommerce hat aber noch kein Signal vom Zahlungsanbieter erhalten, dass die Zahlung erfolgt ist.

Ist „In Wartestellung“ dasselbe wie „Zahlung ausstehend“?

Nein. On-hold wird oft bewusst bei Vorkasse per Überweisung gesetzt oder wenn eine Rückmeldung unsicher war, pending steht für eine Bestellung ohne jedes Signal.

Hilft es, die Bestellung von Hand auf „Abgeschlossen“ zu setzen?

Das behebt nur die einzelne Bestellung, nicht die Ursache. Ohne funktionierenden Webhook bleibt jede folgende Bestellung mit demselben Problem stehen.

Konrad Griesser

Konrad Griesser

Webdesigner & SEO-Experte aus Augsburg — seit 1999

Weiterlesen

Ähnliche Beiträge