# Ereignistypen (/de/webhooks/events)



Wählen Sie aus diesen 23 Ereignistypen oder aktivieren Sie ein Abonnement aller Typen. Jede Benachrichtigung verwendet die [gemeinsame Ereignishülle (Envelope)](/webhooks#event-envelope); diese Seite zeigt, was jede Ereignisgruppe in `data` ablegt.

## Ereignisgruppen [#event-families]

| Gruppe                                     | Ereignisse | `data` enthält         |
| ------------------------------------------ | ---------- | ---------------------- |
| [Zahlungen](#payments)                     | 7          | `payment`              |
| [Erstattungen](#refunds)                   | 6          | `payment` und `refund` |
| [Händler](#merchants)                      | 2          | `merchant`             |
| [Händler-Onboarding](#merchant-onboarding) | 8          | `onboarding`           |

Die meisten Integrationen beginnen mit `payment.succeeded`, `payment.failed` und `payment.refund.succeeded`. Plattformen, die Händler-Onboarding durchführen, ergänzen `merchant.onboarding.approved` und `merchant.onboarding.action_required`.

## Zahlungen [#payments]

Diese Ereignisse beschreiben die gesamte Zahlung über unterstützte Zahlungsabwickler und Kanäle hinweg. Sie enthalten `data.payment`, einschließlich `status` und `statusId` der Zahlung.

| Ereignis                                                             | Versandzeitpunkt                                                                                                                                 |
| -------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| <span className="whitespace-nowrap">`payment.created`</span>         | Eine Zahlung wird gespeichert.                                                                                                                   |
| <span className="whitespace-nowrap">`payment.updated`</span>         | Der Status ändert sich zu `pending` oder einem anderen Status ohne eigenen Ereignisnamen. Dies ist keine Benachrichtigung für jede Feldänderung. |
| <span className="whitespace-nowrap">`payment.succeeded`</span>       | Der Status ändert sich zu `success`.                                                                                                             |
| <span className="whitespace-nowrap">`payment.failed`</span>          | Die gesamte Zahlung wechselt zu `failed`, statt dass ein einzelner Zahlungsversuch fehlschlägt.                                                  |
| <span className="whitespace-nowrap">`payment.canceled`</span>        | Der Status ändert sich zu `cancelled`.                                                                                                           |
| <span className="whitespace-nowrap">`payment.refunded`</span>        | Tapaya kennzeichnet die Zahlung als `refunded`.                                                                                                  |
| <span className="whitespace-nowrap">`payment.action_required`</span> | Der Status ändert sich zu `actionNeeded`.                                                                                                        |

Wird eine Zahlung in einem anderen Zustand als „ausstehend“ erstellt, werden sowohl `payment.created` als auch das passende Statusereignis gesendet, sofern Sie beide abonniert haben. Das erneute Speichern desselben Status sendet weder ein neues Statusereignis noch `payment.updated`.

`status` und `statusId` nehmen in Zahlungs- und Erstattungs-Snapshots diese Werte an:

| `statusId` | `status`       | Bedeutung                                                     |
| ---------- | -------------- | ------------------------------------------------------------- |
| `1`        | `pending`      | Die Verarbeitung hat noch kein endgültiges Ergebnis erreicht. |
| `2`        | `success`      | Die Zahlung oder Erstattung war erfolgreich.                  |
| `3`        | `cancelled`    | Die Zahlung oder Erstattung wurde abgebrochen.                |
| `4`        | `refunded`     | Die Zahlung ist von Tapaya als erstattet gekennzeichnet.      |
| `5`        | `failed`       | Die Zahlung oder Erstattung ist fehlgeschlagen.               |
| `6`        | `actionNeeded` | Eine weitere Aktion ist erforderlich.                         |

Unbekannte zukünftige Status-IDs verwenden `status: "unknown"` und behalten ihre numerische `statusId`. Ereignisnamen verwenden `succeeded` und `canceled`; Statuswerte verwenden `success` und `cancelled`.

## Erstattungen [#refunds]

Erstattungsereignisse enthalten sowohl `data.payment` als auch `data.refund`. Die Erstattung hat eine eigene ID, ein eigenes Token, einen eigenen Status sowie angeforderte Beträge, Abrechnungsbeträge und die jeweiligen Währungen. Verwenden Sie die ID der Erstattung, um sie unabhängig von der übergeordneten Zahlung zu verfolgen.

| Ereignis                                                                    | Versandzeitpunkt                                                                          |
| --------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| <span className="whitespace-nowrap">`payment.refund.created`</span>         | Eine Erstattung wird gespeichert.                                                         |
| <span className="whitespace-nowrap">`payment.refund.updated`</span>         | Der Status ändert sich zu `pending` oder einem anderen Status ohne eigenen Ereignisnamen. |
| <span className="whitespace-nowrap">`payment.refund.succeeded`</span>       | Der Status ändert sich zu `success`.                                                      |
| <span className="whitespace-nowrap">`payment.refund.failed`</span>          | Der Status ändert sich zu `failed`.                                                       |
| <span className="whitespace-nowrap">`payment.refund.canceled`</span>        | Der Status ändert sich zu `cancelled`.                                                    |
| <span className="whitespace-nowrap">`payment.refund.action_required`</span> | Der Status ändert sich zu `actionNeeded`.                                                 |

Wird eine Erstattung in einem anderen Zustand als „ausstehend“ erstellt, kann auch das passende Statusereignis gesendet werden. Eine erfolgreiche Erstattung beschreibt für sich genommen nicht den endgültigen Status der gesamten Zahlung: Prüfen Sie `data.payment.status` und eine etwaige separate Benachrichtigung `payment.refunded`.

## Händler [#merchants]

Händlerereignisse enthalten `data.merchant` mit einer `id`, einem `token` und einem Snapshot des gespeicherten Händlerstatus.

| Ereignis                                                             | Versandzeitpunkt                                                                                                                                                                                      |
| -------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <span className="whitespace-nowrap">`merchant.created`</span>        | Ein Händler wird in Ihrer Organisation erstellt.                                                                                                                                                      |
| <span className="whitespace-nowrap">`merchant.status_changed`</span> | Aktivierung, Status als Basis-Händlerdatensatz (Merchant Shell), Vorhandensein eines Profils oder ein Konto, eine Einreichung, eine Zulassung oder eine Ablehnung beim Zahlungsabwickler ändern sich. |

```json title="data"
{
  "merchant": {
    "id": "019a0000-0000-7000-8000-000000000005",
    "token": "example_merchant_token",
    "status": {
      "isActive": true,
      "isShellMerchant": false,
      "profileOnboarded": true,
      "processors": [
        {
          "paymentProcessorId": 2,
          "hasAccount": true,
          "submitted": true,
          "approved": true,
          "rejected": false,
          "submittedAt": "2026-10-29T10:00:00+00:00",
          "approvedAt": "2026-10-30T12:00:00+00:00",
          "rejectedAt": null
        }
      ]
    }
  }
}
```

* `profileOnboarded` bedeutet, dass ein Profil vorhanden ist. Es bedeutet nicht, dass ein Zahlungsabwickler den Händler zugelassen hat oder jede Zahlungsmethode bereit ist.
* Kontokennungen beim Zahlungsabwickler und private Ablehnungsnachrichten des Zahlungsabwicklers sind nicht enthalten. Die Zahlungsabwickler-ID oben dient der Veranschaulichung.
* Das Aktualisieren unveränderter Werte oder das Bearbeiten nicht damit zusammenhängender Händlerdetails sendet kein Ereignis. Es gibt weder ein Ereignis `merchant.updated` noch ein Ereignis zum Löschen eines Händlers.

## Händler-Onboarding [#merchant-onboarding]

Onboarding-Ereignisse enthalten `data.onboarding`. Dessen `status` entspricht dem letzten Segment des Ereignisnamens, und einige Ereignisse fügen die unten genannten Felder hinzu.

| Ereignis                                                                               | Versandzeitpunkt                                                                                                                                                     |
| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <span className="whitespace-nowrap">`merchant.onboarding.started`</span>               | Das erste Händlerprofil und die Onboarding-Daten werden gespeichert.                                                                                                 |
| <span className="whitespace-nowrap">`merchant.onboarding.profile_completed`</span>     | Das erste vollständige Händlerprofil wird gespeichert.                                                                                                               |
| <span className="whitespace-nowrap">`merchant.onboarding.document_added`</span>        | Ein neues Dokument wird gespeichert. Fügt `documentId`, `documentTypeId`, `paymentProcessorId` und bei einem zwischengespeicherten Dokument `source: "cache"` hinzu. |
| <span className="whitespace-nowrap">`merchant.onboarding.stakeholder_completed`</span> | Die Onboarding-Daten eines Beteiligten werden abgeschlossen. Fügt `stakeholderId` hinzu.                                                                             |
| <span className="whitespace-nowrap">`merchant.onboarding.submitted`</span>             | Das Onboarding ist bereit zur Einreichung bei einem Zahlungsabwickler. Fügt `paymentProcessorId` hinzu.                                                              |
| <span className="whitespace-nowrap">`merchant.onboarding.approved`</span>              | Ein Konto beim Zahlungsabwickler wird zum ersten Mal zugelassen. Fügt `paymentProcessorId` hinzu.                                                                    |
| <span className="whitespace-nowrap">`merchant.onboarding.rejected`</span>              | Tapaya lehnt das Onboarding nach einer manuellen Prüfung ab. Fügt `reason` hinzu, wobei `requiredAction` auf `null` gesetzt ist.                                     |
| <span className="whitespace-nowrap">`merchant.onboarding.action_required`</span>       | Tapaya fordert nach einer manuellen Prüfung weitere Informationen an. Fügt `reason` und `requiredAction` hinzu.                                                      |

```json title="data"
{
  "onboarding": {
    "status": "action_required",
    "reason": "The submitted company document is no longer valid.",
    "requiredAction": "Upload a current company registration document."
  }
}
```

<Accordions>
  <Accordion title="Randfälle für jedes Ereignis" id="onboarding-edge-cases">
    * `profile_completed` trifft derzeit zusammen mit `started` ein. Keines der beiden bedeutet eine Zulassung durch den Zahlungsabwickler.
    * `document_added` enthält Metadaten, nicht die Datei. Die Weitergabe eines zwischengespeicherten Dokuments an den Zahlungsabwickler sendet das Ereignis nicht erneut.
    * `stakeholder_completed` umfasst auch den Abschluss über eine Einladung. Das erneute Speichern desselben Abschlusses sendet das Ereignis nicht erneut.
    * `submitted` ist die Benachrichtigung über die Bereitschaft; es bestätigt nicht, dass eine Anfrage beim Zahlungsabwickler eingegangen ist. Es gibt kein separates Ereignis `merchant.onboarding.ready`.
    * `approved` gilt pro Zahlungsabwickler. Die Zulassung durch einen Zahlungsabwickler bedeutet nicht die Zulassung durch alle.
    * `rejected` und `action_required` stammen ausschließlich aus der manuellen Prüfung durch Tapaya, niemals direkt von einem Zahlungsabwickler. Die Wiederholung einer Entscheidung sendet kein neues Ereignis, die Identitäten der Prüfer sind nicht enthalten, und die Entscheidung ändert die Zulassungsflags der Zahlungsabwickler nicht.
  </Accordion>
</Accordions>

Onboarding- und Händlerstatusereignisse beschreiben unterschiedliche Aspekte einer Änderung. Dasselbe gespeicherte Profil oder dieselbe Zulassung durch einen Zahlungsabwickler kann beide Ereignisgruppen erzeugen, wenn Sie beide abonniert haben; gehen Sie nicht von einer bestimmten Reihenfolge zwischen ihnen aus. Ereignisse für frühere Onboarding-Aktivitäten werden nicht nachträglich bereitgestellt.

## Diagnosetests [#diagnostic-tests]

Verwenden Sie die Testaktion der Platform, um `webhook.test` zu senden. Es enthält `test: true`, `merchantId: null` und `data.message`, jedoch keinen Zahlungs- oder Händlerzustand. Es kann nicht als Ereignisabonnement ausgewählt werden.

Unter [Verifizieren und testen](/webhooks/receiving#send-a-test-webhook) erfahren Sie, wie Sie die Zustellung prüfen, ohne eine Zahlung zu erstellen.
