# Fehlersuche

Symptom, Ursache und Lösung für ein fehlendes Panel, einen nicht gelesenen Warenkorb, eine Übergabe, die nie ankommt, abgewiesene Launches, Auto-Login, das Tagesbudget, Setup-Links und das Verbindungslimit.

URL: https://punchout.dev/de/docs/troubleshooting/

Jeder Abschnitt geht von dem aus, was Sie sehen, im Wortlaut von Panel, Launch-Seite oder Portal, und nennt die möglichen Ursachen mit ihrer Lösung.

## Wo Sie nachsehen

- **Das Panel.** Seine Meldungen sind unten auf Deutsch zitiert, so wie es sie auf einer deutschen Seite zeigt. Auf Seiten in anderen Sprachen zeigt es die englische Fassung.
- **Die Konsole des Browsers.** Sie meldet Verstöße gegen die Content-Security-Policy und Anfragen, die der Browser blockiert hat.
- **Das Portal.** Der Tab **Nutzung** des Shops zeigt das **Tagesbudget**, die Liste **Aktuelle Sitzungen** und die Warnung „Der Warenkorb wird nicht mehr gefunden“.

## Das Panel erscheint nicht

Während eines Punchouts erscheint das Panel auf jeder Seite des Shops, auch auf Seiten ohne Warenkorb. Erscheint es gar nicht, kommen diese Ursachen in Frage:

| Ursache | Woran Sie es erkennen | Lösung |
| --- | --- | --- |
| Das Script-Tag fehlt | Der Seitenquelltext enthält kein `pob.js` | Fügen Sie das Tag aus dem Tab **Einbindung** ins Layout-Template ein. Mit Plugin: Prüfen Sie **Snippet einbinden**, **Snippet-URL** und **Shop-ID**. |
| Der Browser blockiert das Script oder seine Anfragen | Die Konsole meldet einen Verstoß gegen die Content-Security-Policy | Ergänzen Sie die Zeilen `script-src`, `connect-src` und `style-src` aus dem Tab **Einbindung**, siehe [Das Tag einbinden](https://punchout.dev/de/docs/getting-started/install-the-tag/) |
| Es läuft kein Punchout | Die Seite wurde direkt geöffnet, nicht aus einem Einkaufssystem | Starten Sie den Punchout aus dem Einkaufssystem oder als Test-Punchout im Tab **Einrichtung** |
| Die OCI-Katalog-Konfiguration füllt `FUNCTION` | Die Shop-Adresse, die das Einkaufssystem öffnet, enthält `FUNCTION=` mit einem Wert | Lassen Sie `FUNCTION` in der Katalog-Konfiguration leer. Ein gehosteter Launch mit einem Wert in `FUNCTION` zeigt stattdessen „Zugang verweigert“, siehe [unten](#ein-launch-zeigt-zugang-verweigert). |
| Die Adresse des Shops ist keine erlaubte Origin | Die Konsole meldet eine blockierte ursprungsübergreifende Anfrage (CORS) an `api.punchout.dev` | Tragen Sie die Adresse unter **Erlaubte Origins** im Tab **Allgemein** ein. Schema, Host und Port müssen genau passen: `https://www.shop.example` und `https://shop.example` sind zwei Origins. |
| Der Punchout ist abgelaufen oder beendet | Seit dem Launch sind vier Stunden vergangen, der Warenkorb wurde schon übergeben, oder der Einkäufer hat **Zurück zum Einkaufssystem** gewählt | Starten Sie einen neuen Punchout |
| Das Tag trägt eine andere Shop-ID | `data-shop-id` am Tag weicht von der **Shop-ID** im Tab Einbindung ab | Korrigieren Sie die Shop-ID im Tag oder im Plugin |
| Der Shop ist inaktiv | **Shop aktiv** ist im Tab Allgemein aus | Schalten Sie es ein |
| Ein direkter OCI-Launch trägt eine Rücksprung-Adresse, die nicht erlaubt ist | Der Host des Einkaufssystems steht nicht unter **Erlaubte Rücksprung-Hosts** | Siehe [Der Warenkorb kommt nicht an](#der-warenkorb-kommt-nicht-an) |

Zeigt das Panel stattdessen „Punchout ist für diesen Shop noch nicht freigeschaltet. Bitte den Anbieter kontaktieren.“, siehe [Ein Launch meldet „Punchout nicht freigeschaltet“](#ein-launch-meldet-punchout-nicht-freigeschaltet).

## Das Panel meldet „Kein Warenkorb auf dieser Seite“

Der vollständige Text lautet „Kein Warenkorb auf dieser Seite. Legen Sie Artikel in den Warenkorb und öffnen Sie ihn. Die Positionen werden dort automatisch erkannt.“

| Ursache | Lösung |
| --- | --- |
| Der Einkäufer ist nicht auf der Warenkorbseite | Nichts zu tun. Das Panel liest den Warenkorb, sobald der Einkäufer ihn öffnet. |
| Die Warenkorbseite wird nicht als solche erkannt. Ohne Plugin-Marker und erkannten Warenkorb-Container gilt eine Seite als Warenkorb, wenn ihre Adresse `cart`, `warenkorb`, `basket`, `panier` oder `carrello` enthält oder wenn sie ein Mengenfeld und einen Preis zeigt. Sobald **Warenkorb-URL-Muster** gesetzt sind (Tab Allgemein, **Erweiterte Einstellungen**), zählen nur diese Muster. | Ergänzen Sie ein Muster, das zu Ihrer Warenkorb-URL passt, oder starten Sie die [Warenkorb-Erkennung](https://punchout.dev/de/docs/getting-started/cart-detection/) |
| Der erkannte Warenkorb-Container wird nicht mehr gefunden, meist nach einem Theme-Update. Der Tab **Nutzung** warnt „Der Warenkorb wird nicht mehr gefunden“. | Klicken Sie auf **Warenkorb erneut erkennen** und bestätigen Sie den Warenkorb mit einem neuen Setup-Link |
| Der Marker eines Plugins kommt nicht auf der Seite an | Siehe die Tabelle zur Fehlersuche bei [Shopware 6](https://punchout.dev/de/docs/plugins/shopware/), [WooCommerce](https://punchout.dev/de/docs/plugins/woocommerce/) oder [Magento 2](https://punchout.dev/de/docs/plugins/magento/) |

## Das Panel meldet „Analyse fehlgeschlagen.“

Das Panel zeigt „Analyse fehlgeschlagen.“ mit der Schaltfläche **Erneut versuchen**, wenn es den Warenkorb nicht lesen konnte. Mögliche Ursachen:

| Ursache | Lösung |
| --- | --- |
| Das **Tagesbudget** des Shops ist aufgebraucht, oder sein Sandbox-Zeitraum ist abgelaufen | Siehe [Das Tagesbudget ist aufgebraucht](#das-tagesbudget-ist-aufgebraucht) |
| Der Warenkorb wurde in diesem Punchout zu oft analysiert | Starten Sie einen neuen Punchout |
| Der gelesene Teil der Seite enthält keine Positionen, zum Beispiel ein leerer Marker | Prüfen Sie den Marker, oder starten Sie die [Warenkorb-Erkennung](https://punchout.dev/de/docs/getting-started/cart-detection/) erneut |
| Die Adresse der Seite steht nicht unter **Erlaubte Origins**, zum Beispiel eine zweite Domain des Shops | Tragen Sie sie im Tab Allgemein ein |
| Ein vorübergehender Fehler | Klicken Sie nach einem Moment auf **Erneut versuchen** |
| Der Warenkorb hat sich nach der Prüfung und vor der Übergabe geändert | Klicken Sie auf **Erneut versuchen**: Das Panel liest den Warenkorb für eine neue Prüfung noch einmal |

## Der Warenkorb kommt nicht an

Der Einkäufer klickt auf **An Einkaufssystem übergeben**, und das Einkaufssystem erhält nichts.

| Ursache | Woran Sie es erkennen | Lösung |
| --- | --- | --- |
| Die Content-Security-Policy des Shops blockiert den Formular-POST | Die Konsole meldet einen Verstoß gegen `form-action` | Ergänzen Sie die Zeile `form-action` aus dem Tab **Einbindung**: eine Quelle `https://<host>:*` je Eintrag unter **Erlaubte Rücksprung-Hosts**. Erlauben Sie auch `https://api.punchout.dev`, solange Sie den Test-Punchout nutzen. |
| Der Rücksprung-Host des Einkaufssystems ist beim Launch nicht erlaubt | Gehostete OCI- und IDS-Connect-Launches zeigen die Seite „Zugang verweigert“. Ein cXML-Einkaufssystem meldet `Invalid PunchOutSetupRequest`. Nach einem direkten OCI-Launch erscheint das Panel nicht. | Tragen Sie den Host unter **Erlaubte Rücksprung-Hosts** im Tab Allgemein ein, oder lassen Sie die Liste leer, um jeden Host zu erlauben. `*.buyer.example` passt nur auf Subdomains; tragen Sie `buyer.example` selbst bei Bedarf zusätzlich ein. |
| Der Rücksprung-Host wurde nach dem Launch aus der Liste entfernt | Das Panel verschwindet, wenn der Einkäufer auf **An Einkaufssystem übergeben** klickt | Tragen Sie den Host wieder ein und starten Sie einen neuen Punchout |
| Die Rücksprung-Adresse selbst ist fehlerhaft | Der Launch wird abgewiesen: die Seite „Zugang verweigert“, oder `Invalid PunchOutSetupRequest` in einem cXML-Einkaufssystem | Das Einkaufssystem muss eine `http`- oder `https`-Adresse ohne `user:password@` senden, höchstens 2048 Zeichen lang |

Was Ihr Shop sendet, zeigt ein Test-Punchout aus dem Tab **Einrichtung**: Das Portal listet die Übergabe Position für Position und als Rohdaten.

## Das Einkaufssystem öffnet das Ergebnis im falschen Fenster

Die Übergabe öffnet sich in dem Fenster, das der Launch bestimmt hat. Standardmäßig öffnen sich OCI- und cXML-Ergebnisse in dem Fenster, das den Shop zeigt, und IDS-Connect-Ergebnisse ersetzen das ganze Browserfenster. Zeigt das Einkaufssystem den Shop in einem Frame und erscheint das Ergebnis darin, setzen Sie `RETURNTARGET=_top` in der OCI-Katalog-Konfiguration (oder `target=_top` bei IDS Connect). cXML kennt diese Einstellung nicht.

## Ein Launch zeigt „Zugang verweigert“

Gehostete OCI- und IDS-Connect-Launches beantworten jede Ablehnung im Browser mit derselben Seite: „Zugang verweigert / Access denied. Der Punchout konnte nicht gestartet werden. Bitte wenden Sie sich an Ihren Einkauf.“, darunter der Text auf Englisch. Die Seite nennt die Ursache bewusst nicht. Prüfen Sie deshalb diese Punkte:

| Ursache | Lösung |
| --- | --- |
| Die Shop-ID in der Launch-URL ist falsch, oder der Shop ist inaktiv | Kopieren Sie die Launch-URL aus dem Tab **Einbindung**; schalten Sie **Shop aktiv** ein |
| Benutzername oder Passwort sind falsch, oder der Einkäufer-Zugang ist deaktiviert oder hat die falsche **Credential-Domain** (`OCI` für den OCI-Launch, `IDS` für den IDS-Connect-Launch). Handwerkersoftware sendet ihren Benutzernamen und ihr Passwort, oder ihre Kundennummer, wenn der Benutzername leer ist. | Prüfen Sie den Zugang im Tab **Einkäufer**. Prüfen Sie bei OCI, ob das Einkaufssystem andere Parameternamen als `USERNAME` und `PASSWORD` sendet (**Erweiterte Einstellungen** im Tab Allgemein). |
| OCI: Die Katalog-Konfiguration füllt `FUNCTION`, oder das Einkaufssystem sendet keine gültige Rücksprung-Adresse. IDS Connect: Die Handwerkersoftware sendet keine gültige Rücksprung-Adresse oder fragt eine Funktion an, die punchout.dev nicht unterstützt. | Lassen Sie `FUNCTION` leer und prüfen Sie die Katalog- oder Verbindungseinstellungen im Einkaufssystem |
| Der Rücksprung-Host steht nicht unter **Erlaubte Rücksprung-Hosts** | Tragen Sie ihn im Tab Allgemein ein |
| Die Launch-Anfrage ist zu groß | Prüfen Sie die Katalog-Konfiguration im Einkaufssystem |

Handwerkersoftware, die nicht nach einer Webseite fragt, bekommt statt dieser Seite eine kurze JSON-Fehlermeldung, wenn der Shop unbekannt ist, die Anfrage zu groß ist oder die Funktion nicht unterstützt wird.

## Ein Launch meldet „Punchout nicht freigeschaltet“

Die Organisation ist im Plan Sandbox. Die Sandbox weist jeden Launch aus einem echten Einkaufssystem ab und lässt nur die Test-Punchouts des Portals durch. Die Ablehnung sieht je nach Launch anders aus:

| Launch | Was der Einkäufer sieht |
| --- | --- |
| Gehosteter OCI-Launch, IDS-Connect-Launch | Eine Seite „Punchout nicht freigeschaltet / Punchout not enabled. Dieser Shop ist noch nicht für produktive Punchouts freigeschaltet.“, darunter derselbe Satz auf Englisch |
| Direkter OCI-Launch im Shop | Das Panel: „Punchout ist für diesen Shop noch nicht freigeschaltet. Bitte den Anbieter kontaktieren.“ |
| cXML | Das Einkaufssystem meldet `Supplier not enabled for productive punchout` |

Lösung: Wählen Sie unter **Einstellungen** → **Abrechnung** einen bezahlten Plan. Der nächste Launch geht durch. Siehe [Pläne und Sandbox](https://punchout.dev/de/docs/account/plans-and-sandbox/).

## cXML: Das Einkaufssystem meldet einen Fehler

Kann ein cXML-Punchout nicht starten, zeigt das Einkaufssystem eine kurze englische Meldung. Die Meldungen sind bewusst allgemein gehalten:

| Meldung | Bedeutung | Lösung |
| --- | --- | --- |
| `Unknown tenant or credentials` | Die Shop-ID in der Setup-URL ist falsch, oder der Shop ist inaktiv | Kopieren Sie die URL **cXML PunchOutSetupRequest** aus dem Tab **Einbindung**; schalten Sie **Shop aktiv** ein |
| `Authentication failed` | Die Anmeldung ist gescheitert: Credential-Domain, Kennung und Shared Secret passen nicht genau zu einem aktiven Zugang im Tab **Einkäufer** | Vergleichen Sie die drei Werte mit dem Zugang, oder erneuern Sie sein Secret und tragen Sie das neue im Einkaufssystem ein |
| `Invalid PunchOutSetupRequest` | Die Anfrage ist nicht lesbar oder zu groß, oder ihre Rücksprung-Adresse ist fehlerhaft oder vom Shop nicht erlaubt | Tragen Sie den Host des Einkaufssystems unter **Erlaubte Rücksprung-Hosts** im Tab Allgemein ein, oder bitten Sie den Administrator des Einkaufssystems, die Rücksprung-Adresse zu prüfen |
| `Request too large` | Die Anfrage des Einkaufssystems ist zu groß | Bitten Sie den Administrator des Einkaufssystems zu prüfen, was das System sendet |
| `Supplier not enabled for productive punchout` | Die Sandbox weist den Launch ab | Siehe [oben](#ein-launch-meldet-punchout-nicht-freigeschaltet) |

## Auto-Login: Der Einkäufer landet nicht angemeldet im Shop

| Ursache | Lösung |
| --- | --- |
| Auto-Login ist im Tab **Auto-Login** aus, oder der Einkäufer-Zugang hat keine **Shop-Kundenreferenz** | Schalten Sie Auto-Login ein und tragen Sie die Referenz im Tab **Einkäufer** ein |
| Der Tab Auto-Login zeigt „Es ist kein Signaturschlüssel hinterlegt.“ | Es gibt keinen Schlüssel zum Einfügen, Auto-Login lässt sich also nicht einrichten |
| Der Launch war ein direkter OCI-Launch oder ein Test-Punchout | Auto-Login braucht einen gehosteten Launch: die URL **OCI-Launch**, cXML oder IDS Connect |
| Das Plugin hat das Token abgelehnt | Schlagen Sie den Ablehnungsgrund im Log des Shops nach, siehe [Auto-Login](https://punchout.dev/de/docs/plugins/auto-login/) |
| Der Einkäufer landet auf einer 404-Seite, weil der **Login-Pfad** im Tab Auto-Login nicht zur Route des Plugins passt | Setzen Sie den **Login-Pfad** auf die Route des Plugins, siehe die Plattformseite |
| Im Plugin ist **Auto-Login aktivieren** aus, oder **Shop-ID** oder **Public-Key-Zeilen** ist leer (Grund `disabled` oder `not_configured`) | Füllen Sie die Einstellungen des Plugins aus, oder schalten Sie Auto-Login im Tab Auto-Login des Portals aus |

:::note
Shopware: War Auto-Login im Plugin ausgeschaltet oder nicht eingerichtet, leitete Plugin 2.0.0 auf `/` statt auf die Landing-Seite weiter, und der Punchout ging verloren. Aktualisieren Sie auf 2.0.1 oder neuer.
:::

## Das Tagesbudget ist aufgebraucht

Jeder Shop hat ein **Tagesbudget** für das Lesen von Warenkörben, die Warenkorb-Erkennung eingeschlossen. Der Plan legt es fest; es gilt je Shop und UTC-Tag. Ist es aufgebraucht, liest punchout.dev für diesen Shop bis zum nächsten UTC-Tag keine Warenkörbe mehr. Im Punchout zeigt das Panel dann „Analyse fehlgeschlagen.“, im Setup-Modus „Die Erkennung ist fehlgeschlagen.“, beide mit **Erneut versuchen**.

| Ursache | Lösung |
| --- | --- |
| Der Shop hat sein Tagesbudget verbraucht | Warten Sie auf den nächsten UTC-Tag, oder wechseln Sie in einen Plan mit größerem Budget. Der Tab **Nutzung** zeigt das **Tagesbudget** als verbraucht von verfügbar. |
| Der Sandbox-Zeitraum des Shops ist abgelaufen, sein Budget ist deshalb null. Das Portal zeigt für den Shop „Sandbox abgelaufen“. | Wählen Sie unter **Einstellungen** → **Abrechnung** einen bezahlten Plan |

## Der Setup-Link funktioniert nicht

| Meldung | Ursache | Lösung |
| --- | --- | --- |
| „Der Einrichtungslink ist abgelaufen.“ | Der Link hat seine Gültigkeit überschritten (standardmäßig 60 Minuten), wurde schon verwendet, wurde widerrufen, oder der Shop ist inaktiv | Erzeugen Sie im Tab **Einrichtung** einen neuen Link |
| Kein Setup-Panel in einem neuen Tab | Der Link wird nur in dem Browser-Tab gehalten, in dem er geöffnet wurde | Öffnen Sie den Warenkorb im selben Tab, oder öffnen Sie den Link noch einmal |
| „Auf dieser Seite wurde kein Warenkorb gefunden. Öffnen Sie die Warenkorbseite mit 2–3 Artikeln.“ | Die Seite hat keinen Warenkorb, den die Erkennung lesen konnte | Öffnen Sie die Warenkorbseite mit Produkten darin |
| „Der Warenkorb konnte nicht sicher erkannt werden. Bitte kontaktieren Sie den Support.“ | Die automatische Erkennung hat keinen Warenkorb-Bereich gefunden, den sie bestätigen konnte | Klicken Sie auf **Warenkorb selbst markieren** und dann auf die Positionen |
| „Es liegt keine Erkennung mehr vor. Bitte erkennen Sie den Warenkorb erneut.“ | Das Ergebnis der Erkennung ist nicht mehr vorhanden | Klicken Sie noch einmal auf **Warenkorb erkennen** |
| „Die Erkennung ist fehlgeschlagen.“ | Das Tagesbudget ist aufgebraucht, der Sandbox-Zeitraum des Shops ist abgelaufen, oder ein vorübergehender Fehler ist aufgetreten | **Erneut versuchen**, siehe [Das Tagesbudget ist aufgebraucht](#das-tagesbudget-ist-aufgebraucht) |

Das Portal erzeugt für einen inaktiven Shop keinen Link: „Dieser Shop ist inaktiv. Aktivieren Sie ihn unter Allgemein, dann klappt der Setup-Link.“ Siehe [Warenkorb-Erkennung](https://punchout.dev/de/docs/getting-started/cart-detection/).

## „Ihr Tarif erlaubt … aktive Anbindungen“

Das Anlegen oder Aktivieren eines Einkäufer-Zugangs wird abgewiesen, und das Portal sagt: „Ihr Tarif erlaubt {allowed} aktive Anbindungen, aktiv sind bereits {used}. Buchen Sie eine Zusatzanbindung oder deaktivieren Sie einen Zugang.“

Ein aktiver Einkäufer-Zugang ist eine Verbindung (im Portal: Anbindung), gezählt über alle Shops der Organisation. Das Limit greift nur beim Anlegen eines aktiven Zugangs und beim Aktivieren eines deaktivierten; Deaktivieren, Erneuern des Secrets, Bearbeiten und Löschen funktionieren immer. Lösung: Deaktivieren Sie einen Zugang, den Sie nicht mehr brauchen, buchen Sie unter **Einstellungen** → **Abrechnung** **Zusatzanbindungen**, oder wechseln Sie den Plan.

## Der Test-Punchout startet nicht

| Meldung | Lösung |
| --- | --- |
| „Tragen Sie {host} unter Allgemein bei den erlaubten Rücksprung-Hosts ein — sonst darf der Testempfänger den Warenkorb nicht annehmen.“ | Tragen Sie den Host aus der Meldung unter **Erlaubte Rücksprung-Hosts** ein |
| „Die Sandbox dieses Shops ist abgelaufen. Mit dem Tarif Standard geht es weiter.“ | Wählen Sie unter **Einstellungen** → **Abrechnung** einen bezahlten Plan |
| „Dieser Shop ist inaktiv. Aktivieren Sie ihn unter Allgemein, dann klappt der Setup-Link.“ | Schalten Sie **Shop aktiv** ein |
| „Tests starten dürfen nur Inhaber und Admins.“ | Fragen Sie einen Inhaber oder Admin, siehe [Team](https://punchout.dev/de/docs/account/team/) |
| „Der Test ist abgelaufen.“ | Ein Testlauf gilt 60 Minuten. Klicken Sie auf **Erneut testen**. |
