Zahlungsanbieter
Stripe, Lemon Squeezy, Paddle und Digistore24 anbinden: Einrichtung, Übergabe der Click-ID und Erstattungen je Anbieter.
Verkaufst du digitale Produkte, Software oder Abos ohne eigenen Shop, meldet dein Zahlungsanbieter die Käufe direkt an colly. Dazu trägst du beim Anbieter eine Webhook-URL aus colly ein. Das ist die Adresse, an die der Anbieter jede Zahlung meldet. Den Schlüssel, mit dem der Anbieter seine Nachrichten signiert, hinterlegst du in colly.
Diese Seite ist für Advertiser. Du findest alles unter Integration, Reiter Zahlung & Checkout. Anlegen und ändern dürfen im Team nur Eigentümer:in und Admin.
Die Anbieter im Vergleich
| Anbieter | So kommt die Click-ID mit | Gemeldete Ereignisse | event_id im Protokoll |
|---|---|---|---|
| Stripe | client_reference_id im Payment Link, sonst Metadaten | checkout.session.completed, checkout.session.async_payment_succeeded, charge.refunded | beginnt mit stripe- |
| Lemon Squeezy | checkout[custom][click_id] im Checkout-Link | order_created, order_refunded | beginnt mit lemonsqueezy- |
| Paddle (Billing) | customData beim Öffnen des Checkouts | transaction.completed, adjustment.created, adjustment.updated | beginnt mit paddle- |
| Digistore24 | Parameter custom im Bestellformular | on_payment, on_refund, on_chargeback | beginnt mit digistore24- |
Für alle vier gilt: Gezählt wird nur die erste Zahlung eines Kaufs. Abo-Verlängerungen erzeugen keine weitere Conversion. Vollständige Erstattungen stornieren die Conversion automatisch, Teilerstattungen werden nicht gebucht. Gutscheine funktionieren hier nicht, denn diese Anbieter liefern den Code nicht in ihrer Nachricht. Die Zuordnung läuft nur über die Click-ID.
Der Aufbau in colly
Jeder Anbieter hat einen eigenen Abschnitt mit denselben Bedienelementen und einer Kurzanleitung. Hast du noch keine Anbindung, steht dort Noch nicht verbunden, und das Formular ist gleich offen.

- Markierung 1: Kopieren legt die Webhook-URL in die Zwischenablage.
- Markierung 2: Einstellungen klappt das Formular der Anbindung auf. Dort trägst du den Schlüssel nach, deaktivierst die Anbindung über Aktiv oder entfernst sie mit Entfernen.
- Markierung 3: Stripe verbinden klappt das Formular für eine weitere Anbindung auf, zum Beispiel für ein zweites Konto.
- Formular absenden (… verbinden)Die Anbindung entsteht. Es erscheint Anbindung angelegt, und die Webhook-URL steht bereit. Ohne Schlüssel lautet der Status Ausstehend.
- Speichern in den EinstellungenÄnderungen gelten sofort. Es erscheint Einstellungen gespeichert. Ein leeres Schlüsselfeld behält den gespeicherten Schlüssel.
- Entfernen, dann bestätigenDie Webhook-URL wird ungültig. Bereits erfasste Conversions bleiben. Entferne den Webhook danach auch beim Anbieter.

- Markierung 1: Die Bestätigung Anbindung angelegt verschwindet nach einigen Sekunden.
- Markierung 2: Kopieren legt die Webhook-URL in die Zwischenablage. Diese Adresse trägst du beim Anbieter ein.

- Markierung 1: Aktiv, und Zuletzt: nennt die letzte Nachricht des Anbieters.
- Markierung 2: Ausstehend: Es fehlt der Schlüssel, jede Nachricht wird abgelehnt.
- Markierung 3: Deaktiviert: Die Adresse antwortet mit
404.
Bei allen Anbietern wählst du Umsatzbasis und Ziel. Fehlt der Schlüssel, lehnt colly jede Nachricht mit not_configured ab, auch wenn das Feld als optional markiert ist. Die Währung der Zahlung muss der Währung des Angebots entsprechen.
Stripe
Für Stripe Checkout und Payment Links.
Schritt 1: Anbindung anlegen
Klicke auf Stripe verbinden, vergib eine Bezeichnung und bestätige. Kopiere die Webhook-URL.
Schritt 2: Click-ID im Angebot übergeben
Setze die Ziel-URL des Angebots auf deinen Payment Link mit
client_reference_id, alsohttps://buy.stripe.com/DEIN_LINK?client_reference_id={click_id}.Schritt 3: Webhook bei Stripe anlegen
Öffne bei Stripe Entwickler → Webhooks, füge ein Ziel hinzu, wähle „Ihr Konto“ und trage die Webhook-URL ein. Wähle die Ereignisse
checkout.session.completed,checkout.session.async_payment_succeededundcharge.refunded.Schritt 4: Signatur-Secret eintragen
Kopiere das Signatur-Secret von Stripe und trage es in colly bei Webhook-Signaturschlüssel (whsec_…) ein. Beginnt die Eingabe nicht mit
whsec_, erscheint die Meldung: Bitte das Signatur-Secret des Webhooks eintragen (beginnt mit whsec_), nicht den API-Schlüssel.
- Markierung 1: Parameter der Click-ID: nur der Rückfall für Metadaten, falls du Checkout-Sitzungen selbst erstellst. Payment Links nutzen
client_reference_id. - Markierung 2: Umsatzbasis: Zwischensumme (nach Rabatten) ist die Zwischensumme abzüglich Rabatt. Gesamtbetrag ist
amount_total. - Markierung 3: Hier steht nach dem Speichern nur noch ein Platzhalter. Der Schlüssel wird nicht mehr angezeigt.
- Markierung 1: Parameter der Click-ID: nur der Rückfall für Metadaten, falls du Checkout-Sitzungen selbst erstellst. Payment Links nutzen
| Fall | Was colly tut |
|---|---|
| Sofortige Zahlung | checkout.session.completed mit Status paid erzeugt die Conversion. |
| Spätere Zahlung, zum Beispiel SEPA | Noch nicht bezahlt: colly wartet. Erst checkout.session.async_payment_succeeded zählt. |
| Testzahlung von Stripe | Das Protokoll zeigt die Marke Test. Es entsteht keine Conversion und keine Provision. |
| Vollständige Erstattung | charge.refunded lehnt eine ausstehende Conversion ab oder storniert eine freigegebene. |
| Teilerstattung | Nichts wird gebucht. Das Protokoll zeigt partial_refund. |
| Abos | Die Bestell-ID ist die Checkout-Sitzung. Erstattungen einer Abo-Rechnung lassen sich nicht automatisch zuordnen. Storniere sie von Hand unter Conversions. |
Lemon Squeezy

Schritt 1: Anbindung anlegen
Fülle das Formular aus und klicke auf Lemon Squeezy verbinden. Kopiere dann die Webhook-URL.

- Markierung 1: Parameter der Click-ID: Name im Custom-Data-Feld des Checkouts. Standard ist
click_id. Er muss zum Muster der Ziel-URL passen. - Markierung 2: Signing Secret: dasselbe Geheimnis, das du beim Webhook in Lemon Squeezy einträgst (6 bis 40 Zeichen). Du wählst es selbst.
- Markierung 3: Lemon Squeezy verbinden legt die Anbindung an und erzeugt die Webhook-URL.
- Markierung 1: Parameter der Click-ID: Name im Custom-Data-Feld des Checkouts. Standard ist
Schritt 2: Click-ID im Angebot übergeben
Setze die Ziel-URL auf
https://DEIN-SHOP.lemonsqueezy.com/checkout/buy/VARIANTE?checkout[custom][click_id]={click_id}.Schritt 3: Webhook bei Lemon Squeezy anlegen
Öffne Settings → Webhooks und lege einen neuen Webhook mit der Webhook-URL und deinem Signing Secret an. Aktiviere die Ereignisse
order_createdundorder_refunded.
- Nur
order_createdmit Statuspaiderzeugt eine Conversion. order_refundedwirkt nur, wenn die Bestellung vollständig erstattet ist. Sonst zeigt das Protokollpartial_refund.- Bestellungen im Testmodus von Lemon Squeezy tragen im Protokoll die Marke Test und erzeugen keine Conversion.
Paddle
Für Paddle Billing. Paddle öffnet den Checkout auf deiner eigenen Seite. Du brauchst dafür etwas Code.

Schritt 1: Anbindung anlegen
Klicke auf Paddle verbinden und kopiere die Webhook-URL.
Schritt 2: Click-ID übergeben
Setze die Ziel-URL auf deine Seite mit
?click_id={click_id}. Gib die Click-ID beim Öffnen des Checkouts alscustomDatamit. Das Codebeispiel steht unter diesen Schritten.Schritt 3: Benachrichtigungsziel anlegen
Öffne bei Paddle Developer Tools → Notifications und lege ein neues Ziel mit der Webhook-URL an. Wähle
transaction.completed,adjustment.createdundadjustment.updated.Schritt 4: Secret Key eintragen
Trage den Secret Key in colly unter Secret Key des Benachrichtigungsziels ein und speichere.
Click-ID an Paddle Checkout übergeben (Paddle.js):
Paddle.Checkout.open({
items: [{ priceId: "pri_...", quantity: 1 }],
customData: { click_id: new URLSearchParams(location.search).get("click_id") },
});- Verlängerungen eines Abos ignoriert colly.
- Paddle prüft Erstattungen zuerst. Erst wenn die Anpassung den Status
approvedhat und eine Erstattung oder Rücklastschrift ist, reagiert colly. - Nur vollständige Anpassungen stornieren. Andere zeigt das Protokoll als
partial_refund.
Digistore24
Die IPN-Benachrichtigung (Instant Payment Notification) von Digistore24 meldet Zahlungen, Erstattungen und Rücklastschriften.

Schritt 1: Anbindung anlegen
Wähle eine lange SHA-Passphrase, klicke auf Digistore24 verbinden und kopiere die Webhook-URL.

- Markierung 1: Umsatzbasis: Nettobetrag oder Gesamtbetrag. Ein Feld für den Parameter der Click-ID gibt es hier nicht, denn Digistore24 nutzt immer
custom. - Markierung 2: SHA-Passphrase: dieselbe Passphrase, die du in den IPN-Einstellungen bei Digistore24 einträgst.
- Markierung 1: Umsatzbasis: Nettobetrag oder Gesamtbetrag. Ein Feld für den Parameter der Click-ID gibt es hier nicht, denn Digistore24 nutzt immer
Schritt 2: Click-ID im Angebot übergeben
Setze die Ziel-URL auf dein Bestellformular:
https://www.digistore24.com/product/PRODUKT-ID?custom={click_id}.Schritt 3: IPN bei Digistore24 einrichten
Öffne Einstellungen → Integrationen (IPN) und wähle Generic. Trage Webhook-URL und SHA-Passphrase ein.
Schritt 4: Verbindung testen
Klicke dort auf Verbindung testen. Die Antwort muss „OK“ lauten. Der Verbindungstest bucht nichts.
on_paymenterzeugt die Conversion. Folgezahlungen ab der zweiten Rate ignoriert colly.- Je Produkt einer Bestellung kommt ein eigener Aufruf. Die Bestell-ID setzt sich aus Bestellung und Produkt zusammen.
on_refundundon_chargebackstornieren. Deckt der Betrag nicht den gebuchten Umsatz, zeigt das Protokollpartial_refund.- Zahlungen, die Digistore24 ausdrücklich als Test kennzeichnet, tragen im Protokoll die Marke Test und erzeugen keine Conversion.
Häufige Probleme
| Was du siehst | Ursache | Lösung |
|---|---|---|
Abgelehnt mit invalid_signature | Der Schlüssel in colly passt nicht zu dem beim Anbieter. Bei Stripe und Paddle auch: Die Nachricht ist älter als 5 Minuten. | Schlüssel neu eintragen. |
Abgelehnt mit not_configured | Es ist noch kein Schlüssel eingetragen. | Schlüssel unter Einstellungen eintragen. |
| Zuletzt: ändert sich, aber das Protokoll bleibt leer | colly ignoriert die Nachricht: keine Click-ID, Zahlung noch offen, Verlängerung oder ein anderes Ereignis. | Ziel-URL und Ereignisauswahl prüfen. Bei Paddle customData prüfen. |
Abgelehnt mit currency_mismatch | Zahlungswährung und Angebotswährung unterscheiden sich. | Währungen angleichen. |
Abgelehnt mit conversion_not_found | Erstattung einer Zahlung, die nicht über colly lief. Bei Stripe auch: Erstattung einer Abo-Rechnung. | Meist nichts. Bei Abos von Hand stornieren. |