> ## Documentation Index
> Fetch the complete documentation index at: https://storekit.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Webhook-Events

> Referenz für alle storekit-Webhook-Events inklusive Order Created, Accepted, Rejected, Refunded, Item Out of Stock sowie Zahlungsstatus-Events mit Payloads.

Diese Seite listet alle in storekit verfügbaren Webhook-Events auf, nach Kategorie gruppiert.

## Order-Events

Events rund um den Lebenszyklus und die Verwaltung von Bestellungen.

| Event                       | Beschreibung                                                                |
| --------------------------- | --------------------------------------------------------------------------- |
| `order.created`             | Ausgelöst, wenn eine neue Bestellung aufgegeben wird                        |
| `order.accepted`            | Ausgelöst, wenn eine Bestellung vom Store angenommen wird                   |
| `order.rejected`            | Ausgelöst, wenn eine Bestellung vom Store abgelehnt wird                    |
| `order.canceled`            | Ausgelöst, wenn eine Bestellung storniert wird                              |
| `order.preparing`           | Ausgelöst, wenn eine Bestellung in den Status "in Zubereitung" übergeht     |
| `order.ready_for_pickup`    | Ausgelöst, wenn eine Bestellung als abholbereit markiert wird               |
| `order.out_for_delivery`    | Ausgelöst, wenn eine Bestellung zur Lieferung übergeben wird                |
| `order.pos.dispatch.failed` | Ausgelöst, wenn die Übergabe einer Bestellung an ein POS-System fehlschlägt |
| `order.rating.updated`      | Ausgelöst, wenn ein Kunde seine Bestellbewertung aktualisiert               |
| `order.completed`           | Ausgelöst, wenn eine Bestellung als abgeschlossen markiert wird             |
| `order.refund.created`      | Ausgelöst, wenn für eine Bestellung eine Erstattung ausgelöst wird          |

### order.created

Ausgelöst, wenn ein Kunde eine neue Bestellung aufgibt.

```json theme={null}
{
  "event": "order.created",
  "data": {
    "id": "ord_abc123",
    "code": "A1B2",
    "asap": true,
    "total": 2500,
    "tip": 250,
    "deliveryFee": 299,
    "discountTotal": 0,
    "orderType": "Pickup",
    "createdAt": "2024-01-15T10:30:00Z",
    "deliveryTime": "2024-01-15T11:00:00Z",
    "notes": "Ring doorbell",
    "customer": {
      "firstName": "John",
      "lastName": "Doe",
      "email": "john@example.com",
      "phone": "+44123456789",
      "marketingConsent": true
    },
    "items": [
      {
        "name": "Margherita Pizza",
        "price": 1200,
        "quantity": 1,
        "plu": null,
        "posId": null,
        "taxRate": null,
        "modifiers": []
      }
    ],
    "venue": {
      "id": 1234,
      "name": "My Restaurant",
      "slug": "my-restaurant",
      "address": {
        "street1": "123 Main St",
        "street2": "",
        "city": "London",
        "postCode": "W1A 1AA",
        "country": "UK",
        "companyName": "My Restaurant Ltd",
        "coordinates": {
          "latitude": 51.5074,
          "longitude": -0.1278
        }
      }
    },
    "table": {
      "id": "tbl_123",
      "name": "Table 5",
      "covers": 4,
      "posId": "pos_tbl_5",
      "area": {
        "id": "area_1",
        "name": "Main Floor",
        "posId": null
      }
    },
    "deliveryAddress": {
      "street1": "456 Oak Ave",
      "street2": "Flat 2",
      "city": "London",
      "postCode": "E1 6AN",
      "country": "UK",
      "coordinates": {
        "latitude": 51.5155,
        "longitude": -0.0722
      }
    }
  }
}
```

### order.accepted

Ausgelöst, wenn eine Bestellung vom Store angenommen wird. Hat dieselbe Payload-Struktur wie `order.created`.

### order.preparing

Ausgelöst, wenn eine Bestellung in den Status "in Zubereitung" übergeht.

```json theme={null}
{
  "event": "order.preparing",
  "data": {
    "order": {
      "id": "ord_abc123",
      "code": "A1B2",
      "status": "preparing"
    },
    "venue": {
      "id": 1234,
      "name": "My Restaurant",
      "slug": "my-restaurant"
    }
  }
}
```

### order.ready\_for\_pickup

Ausgelöst, wenn eine Bestellung als abholbereit für den Kunden markiert wird.

```json theme={null}
{
  "event": "order.ready_for_pickup",
  "data": {
    "order": {
      "id": "ord_abc123",
      "code": "A1B2",
      "status": "ready_for_pickup"
    },
    "venue": {
      "id": 1234,
      "name": "My Restaurant",
      "slug": "my-restaurant"
    }
  }
}
```

### order.completed

Ausgelöst, wenn eine Bestellung als abgeschlossen markiert wird. Wird bei einzelnen Abschlüssen (über das Dashboard, Deliverect, iKentoo oder Auto-Update) sowie bei Massenabschlüssen ausgelöst.

```json theme={null}
{
  "event": "order.completed",
  "data": {
    "order": {
      "id": "ord_abc123",
      "code": "A1B2",
      "status": "completed"
    },
    "venue": {
      "id": 1234,
      "name": "My Restaurant",
      "slug": "my-restaurant"
    }
  }
}
```

### order.pos.dispatch.failed

Ausgelöst, wenn die Übergabe einer Bestellung an ein POS-System fehlschlägt.

```json theme={null}
{
  "event": "order.pos.dispatch.failed",
  "data": {
    "order": {
      "id": "ord_abc123",
      "code": "A1B2",
      "total": 2500
    },
    "venue": {
      "id": 1234,
      "name": "My Restaurant",
      "slug": "my-restaurant"
    },
    "pos": {
      "name": "Zonal",
      "error": "Connection timeout: Unable to reach POS endpoint"
    },
    "retryCount": 3
  }
}
```

***

## Store-Events

Events rund um Store-Status und -Konfiguration.

| Event                         | Beschreibung                                                                                                  |
| ----------------------------- | ------------------------------------------------------------------------------------------------------------- |
| `store.opened`                | Ausgelöst, wenn ein Store öffnet, eine Snooze frühzeitig beendet wird oder eine zeitgesteuerte Snooze abläuft |
| `store.closed`                | Ausgelöst, wenn ein Store schließt oder gesnoozt wird                                                         |
| `store.opening_hours.updated` | Ausgelöst, wenn die Öffnungszeiten geändert werden                                                            |

### store.opened

Ausgelöst, wenn ein Store geöffnet wird, eine Snooze frühzeitig beendet wird oder eine zeitgesteuerte Snooze automatisch abläuft.

```json theme={null}
{
  "event": "store.opened",
  "data": {
    "venue": {
      "id": 1234,
      "name": "My Restaurant",
      "slug": "my-restaurant",
      "address": {
        "street1": "99-101 Regent St",
        "street2": "Victory House",
        "city": "London",
        "postCode": "W1B 4EZ",
        "companyName": "storekit",
        "coordinates": {
          "latitude": 51.5014,
          "longitude": 0.1419
        }
      }
    }
  }
}
```

### store.closed

Ausgelöst, wenn ein Store geschlossen oder gesnoozt wird.

```json theme={null}
{
  "event": "store.closed",
  "data": {
    "closedReason": "Kitchen closing early",
    "closedUntil": "2024-01-15T18:00:00Z",
    "venue": {
      "id": 1234,
      "name": "My Restaurant",
      "slug": "my-restaurant",
      "address": {
        "street1": "99-101 Regent St",
        "street2": "Victory House",
        "city": "London",
        "postCode": "W1B 4EZ",
        "companyName": "storekit",
        "coordinates": {
          "latitude": 51.5014,
          "longitude": 0.1419
        }
      }
    }
  }
}
```

### store.opening\_hours.updated

Ausgelöst, wenn die Öffnungszeiten eines Stores geändert werden.

```json theme={null}
{
  "event": "store.opening_hours.updated",
  "data": {
    "venue": {
      "id": 1234,
      "name": "My Restaurant",
      "slug": "my-restaurant",
      "address": {
        "street1": "99-101 Regent St",
        "street2": "Victory House",
        "city": "London",
        "postCode": "W1B 4EZ",
        "companyName": "storekit",
        "coordinates": {
          "latitude": 51.5014,
          "longitude": 0.1419
        }
      }
    }
  }
}
```

***

## Item-Events

Events rund um die Verfügbarkeit von Menüartikeln.

| Event               | Beschreibung                                             |
| ------------------- | -------------------------------------------------------- |
| `item.out_of_stock` | Ausgelöst, wenn ein Menüartikel nicht mehr verfügbar ist |

### item.out\_of\_stock

Ausgelöst, wenn ein Menüartikel nicht mehr verfügbar ist. Das kann auf mehreren Wegen geschehen:

* **Manuelle Snooze** — ein Admin snoozt den Artikel aus dem Dashboard
* **Manuelle Deaktivierung** — ein Admin schaltet die Verfügbarkeit des Artikels aus
* **Bestand aufgebraucht** — der Bestand des Artikels erreicht nach einer Bestellung null
* **Integrations-Sync** — ein POS oder eine Integration (Deliverect, Lightspeed, Zonal) markiert den Artikel als nicht verfügbar

Das Feld `reason` gibt an, warum der Artikel nicht mehr verfügbar ist, und `source` zeigt, was den Vorgang ausgelöst hat.

| Grund                | Beschreibung                       |
| -------------------- | ---------------------------------- |
| `snoozed`            | Artikel wurde temporär gesnoozt    |
| `inventory_depleted` | Artikelbestand hat null erreicht   |
| `disabled`           | Artikel wurde explizit deaktiviert |

| Quelle       | Beschreibung                                                  |
| ------------ | ------------------------------------------------------------- |
| `manual`     | Aktion durch einen Admin im Dashboard                         |
| `order`      | Bestand durch eine Kundenbestellung aufgebraucht              |
| `deliverect` | Synchronisiert von der Deliverect-Integration                 |
| `lightspeed` | Synchronisiert von der Lightspeed-/iKentoo-Integration        |
| `zonal`      | Synchronisiert vom Zonal-POS                                  |
| `pos_sync`   | Synchronisiert über einen generischen POS-Verfügbarkeits-Push |

```json theme={null}
{
  "event": "item.out_of_stock",
  "data": {
    "venue": {
      "id": 1234,
      "name": "My Restaurant"
    },
    "item": {
      "id": 5678,
      "name": "Margherita Pizza",
      "plu": "PLU-001",
      "posId": "pos_item_42",
      "sku": "SKU-MARG-001"
    },
    "reason": "snoozed",
    "source": "manual",
    "details": {
      "snoozeEnd": "2024-01-15T18:00:00Z"
    }
  }
}
```

Das Objekt `details` unterscheidet sich je nach Grund:

* **`snoozed`** — enthält `snoozeEnd` (ISO-8601-Zeitstempel oder `null` bei unbefristeten Snoozes)
* **`inventory_depleted`** — leeres `{}`
* **`disabled`** — leeres `{}`

***

## Payments-Events

Events rund um Zahlungen und Auszahlungen.

| Event                           | Beschreibung                                                                                     |
| ------------------------------- | ------------------------------------------------------------------------------------------------ |
| `payments.payout.created`       | Ausgelöst, wenn eine Auszahlung an Ihr Bankkonto gesendet wird                                   |
| `bill.payment.created`          | Ausgelöst, wenn eine Rechnungszahlung erstellt wird                                              |
| `payment_link.created`          | Ausgelöst, wenn ein neuer Payment Link erstellt wird                                             |
| `payment_link.paid`             | Ausgelöst, wenn eine Zahlung über einen Payment Link erfolgreich eingezogen wurde                |
| `payment_link.refund.created`   | Ausgelöst, wenn für eine Payment-Link-Zahlung eine Erstattung initiiert wird                     |
| `payment_link.refund.succeeded` | Ausgelöst, wenn eine Payment-Link-Erstattung vom Zahlungs-Gateway als erfolgreich bestätigt wird |
| `payment_link.refund.failed`    | Ausgelöst, wenn eine Payment-Link-Erstattung vom Zahlungs-Gateway abgelehnt wird                 |

### payments.payout.created

Ausgelöst, wenn storekit eine Auszahlung an Ihr Bankkonto sendet.

```json theme={null}
{
  "event": "payments.payout.created",
  "data": {
    "amounts": [
      {
        "currency": "GBP",
        "value": "3210.50"
      },
      {
        "currency": "GBP",
        "value": "1030.00"
      }
    ],
    "bankAccount": {
      "id": "db97e205-105c-42ff-8460-d06c25cb6830",
      "IBAN": "GB15HBUK40127612345678",
      "accountNumber": "0001234",
      "branchCode": "001234",
      "currency": "GBP"
    },
    "estimatedArrivalDate": "2024-01-17"
  }
}
```

### payment\_link.created

Ausgelöst, wenn ein neuer Payment Link erstellt wird. Wird nur für Konten mit aktivierten Webhooks ausgelöst.

```json theme={null}
{
  "event": "payment_link.created",
  "data": {
    "paymentLink": {
      "id": "plink_019dbc4d828174419d9ff9fae24aea7b",
      "title": "Invoice #001",
      "type": "one_off",
      "amountType": "fixed",
      "amount": 2500,
      "currency": "GBP",
      "reference": "INV-001"
    },
    "venue": {
      "id": 1234,
      "name": "My Restaurant",
      "slug": "my-restaurant"
    }
  }
}
```

| Feld                     | Beschreibung                                                                 |
| ------------------------ | ---------------------------------------------------------------------------- |
| `paymentLink.id`         | Die Payment-Link-ID im Format `plink_`                                       |
| `paymentLink.type`       | `one_off` oder `reusable`                                                    |
| `paymentLink.amountType` | `fixed` oder `variable`                                                      |
| `paymentLink.amount`     | Fester Betrag in kleineren Währungseinheiten oder `null` bei variablen Links |
| `paymentLink.currency`   | ISO-4217-Währungscode                                                        |
| `paymentLink.reference`  | Ihre interne Referenz, falls gesetzt                                         |
| `venue.slug`             | Der URL-Slug des Standorts                                                   |

### payment\_link.paid

Ausgelöst, wenn eine Zahlung über einen Payment Link erfolgreich eingezogen wurde. Wird nur für Konten mit aktivierten Webhooks ausgelöst.

```json theme={null}
{
  "event": "payment_link.paid",
  "data": {
    "paymentLink": {
      "id": "plink_019dbc4d828174419d9ff9fae24aea7b",
      "title": "Invoice #001",
      "type": "one_off",
      "amountType": "fixed",
      "reference": "INV-001"
    },
    "payment": {
      "transactionId": "txn_abc123",
      "amount": 2500,
      "currency": "GBP",
      "pspReference": "ABCD1234EFGH5678"
    },
    "venue": {
      "id": 1234,
      "name": "My Restaurant",
      "slug": "my-restaurant"
    }
  }
}
```

| Feld                     | Beschreibung                                                     |
| ------------------------ | ---------------------------------------------------------------- |
| `paymentLink.id`         | Die Payment-Link-ID im Format `plink_`                           |
| `paymentLink.type`       | `one_off` oder `reusable`                                        |
| `paymentLink.amountType` | `fixed` oder `variable`                                          |
| `paymentLink.reference`  | Ihre interne Referenz, falls gesetzt                             |
| `payment.amount`         | Eingezogener Betrag in kleineren Währungseinheiten (z. B. Pence) |
| `payment.pspReference`   | Adyen-Zahlungsreferenz                                           |
| `venue.slug`             | Der URL-Slug des Standorts                                       |

### payment\_link.refund.created

Ausgelöst, wenn für eine Payment-Link-Zahlung eine Erstattung initiiert wird. Die Erstattung ist zu diesem Zeitpunkt noch ausstehend — die Bestätigung erfolgt über `payment_link.refund.succeeded` oder `payment_link.refund.failed`, sobald das Zahlungs-Gateway sie asynchron verarbeitet hat.

```json theme={null}
{
  "event": "payment_link.refund.created",
  "data": {
    "paymentLink": {
      "id": "plink_019dbc4d828174419d9ff9fae24aea7b",
      "title": "Invoice #001",
      "reference": "INV-001"
    },
    "refund": {
      "id": "ref_xyz789",
      "transactionId": "txn_abc123",
      "amount": 1000,
      "currency": "GBP",
      "reason": "Item damaged"
    },
    "venue": {
      "id": 1234,
      "name": "My Restaurant",
      "slug": "my-restaurant"
    }
  }
}
```

| Feld                   | Beschreibung                                                   |
| ---------------------- | -------------------------------------------------------------- |
| `refund.id`            | Die Erstattungs-ID                                             |
| `refund.transactionId` | Die Transaktions-ID der ursprünglichen Zahlung                 |
| `refund.amount`        | Erstattungsbetrag in kleineren Währungseinheiten (z. B. Pence) |
| `refund.currency`      | ISO-4217-Währungscode                                          |
| `refund.reason`        | Grund für die Erstattung, falls angegeben                      |

### payment\_link.refund.succeeded

Ausgelöst, wenn das Zahlungs-Gateway bestätigt, dass eine Erstattung erfolgreich verarbeitet wurde. Wird asynchron nach `payment_link.refund.created` ausgelöst.

```json theme={null}
{
  "event": "payment_link.refund.succeeded",
  "data": {
    "paymentLink": {
      "id": "plink_019dbc4d828174419d9ff9fae24aea7b",
      "title": "Invoice #001",
      "reference": "INV-001"
    },
    "refund": {
      "id": "ref_xyz789",
      "transactionId": "txn_abc123",
      "amount": 1000,
      "currency": "GBP",
      "reason": "Item damaged"
    },
    "venue": {
      "id": 1234,
      "name": "My Restaurant",
      "slug": "my-restaurant"
    }
  }
}
```

### payment\_link.refund.failed

Ausgelöst, wenn das Zahlungs-Gateway eine Erstattung ablehnt. Wird asynchron nach `payment_link.refund.created` ausgelöst.

```json theme={null}
{
  "event": "payment_link.refund.failed",
  "data": {
    "paymentLink": {
      "id": "plink_019dbc4d828174419d9ff9fae24aea7b",
      "title": "Invoice #001",
      "reference": "INV-001"
    },
    "refund": {
      "id": "ref_xyz789",
      "transactionId": "txn_abc123",
      "amount": 1000,
      "currency": "GBP",
      "reason": "Item damaged"
    },
    "venue": {
      "id": 1234,
      "name": "My Restaurant",
      "slug": "my-restaurant"
    }
  }
}
```

***

## Drucker-Events

Events rund um den Status von Cloud-Druckern.

| Event                    | Beschreibung                                    |
| ------------------------ | ----------------------------------------------- |
| `printer.status.offline` | Ausgelöst, wenn ein Drucker offline geht        |
| `printer.status.online`  | Ausgelöst, wenn ein Drucker wieder online kommt |

### printer.status.offline

Ausgelöst, wenn sich ein verbundener Cloud-Drucker 5 Minuten lang nicht beim storekit-Server meldet. Zusätzlich wird eine E-Mail-Benachrichtigung an die im Store hinterlegte E-Mail-Adresse gesendet.

```json theme={null}
{
  "event": "printer.status.offline",
  "data": {
    "id": "6041b7c2-d402-4ff1-9adf-2863c65b61b1",
    "mac": "00-B0-D0-63-C2-26",
    "model": "StarMCPrint3",
    "name": "Kitchen Printer",
    "status": "offline"
  }
}
```

### printer.status.online

Ausgelöst, wenn sich ein Cloud-Drucker nach mindestens 5 Minuten offline wieder mit unseren Servern verbindet. Zusätzlich wird eine E-Mail-Benachrichtigung zur Bestätigung gesendet, dass der Drucker wieder online ist.

```json theme={null}
{
  "event": "printer.status.online",
  "data": {
    "id": "6041b7c2-d402-4ff1-9adf-2863c65b61b1",
    "mac": "00-B0-D0-63-C2-26",
    "model": "StarMCPrint3",
    "name": "Kitchen Printer",
    "status": "online"
  }
}
```


## Related topics

- [Webhooks einrichten](/docs/de/developers/webhooks/setting-up-webhooks.md)
- [Slack-Integration](/docs/de/developers/webhooks/slack-integration.md)
- [Einführung für Entwickler](/docs/de/developers/introduction.md)
- [Webhooks testen](/docs/de/developers/webhooks/testing-webhooks.md)
- [Webhooks-Übersicht](/docs/de/developers/webhooks/overview.md)
