> ## 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

> Referentie voor elk storekit webhook-event, waaronder order created, accepted, rejected, refunded, item out of stock en betalingsstatus-events met payloads.

Deze pagina somt alle webhook-events in storekit op, gegroepeerd per categorie.

## Bestelevents

Events rond de levenscyclus en het beheer van bestellingen.

| Event                       | Beschrijving                                                                           |
| --------------------------- | -------------------------------------------------------------------------------------- |
| `order.created`             | Wordt getriggerd wanneer een nieuwe bestelling wordt geplaatst                         |
| `order.accepted`            | Wordt getriggerd wanneer een bestelling door de store wordt geaccepteerd               |
| `order.rejected`            | Wordt getriggerd wanneer een bestelling door de store wordt afgewezen                  |
| `order.canceled`            | Wordt getriggerd wanneer een bestelling wordt geannuleerd                              |
| `order.preparing`           | Wordt getriggerd wanneer een bestelling naar de status 'in bereiding' gaat             |
| `order.ready_for_pickup`    | Wordt getriggerd wanneer een bestelling gereed is voor afhalen                         |
| `order.out_for_delivery`    | Wordt getriggerd wanneer een bestelling wordt uitgestuurd voor bezorging               |
| `order.pos.dispatch.failed` | Wordt getriggerd wanneer een bestelling niet naar een POS-systeem kan worden verzonden |
| `order.rating.updated`      | Wordt getriggerd wanneer een klant zijn beoordeling van de bestelling bijwerkt         |
| `order.completed`           | Wordt getriggerd wanneer een bestelling als afgerond wordt gemarkeerd                  |
| `order.refund.created`      | Wordt getriggerd wanneer er een terugbetaling voor een bestelling wordt uitgevoerd     |

### order.created

Wordt getriggerd wanneer een klant een nieuwe bestelling plaatst.

```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

Wordt getriggerd wanneer een bestelling door de store wordt geaccepteerd. Heeft dezelfde payloadstructuur als `order.created`.

### order.preparing

Wordt getriggerd wanneer een bestelling naar de status 'in bereiding' gaat.

```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

Wordt getriggerd wanneer een bestelling wordt gemarkeerd als gereed voor afhalen door de klant.

```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

Wordt getriggerd wanneer een bestelling als afgerond wordt gemarkeerd. Dit event vuurt zowel bij individuele afrondingen (via het dashboard, Deliverect, iKentoo of automatische update) als bij bulkafrondingen.

```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

Wordt getriggerd wanneer een bestelling niet naar een POS-systeem kan worden verzonden.

```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 rond de status en configuratie van de store.

| Event                         | Beschrijving                                                                                            |
| ----------------------------- | ------------------------------------------------------------------------------------------------------- |
| `store.opened`                | Wordt getriggerd wanneer een store opent, een snooze vroegtijdig eindigt of een getimede snooze afloopt |
| `store.closed`                | Wordt getriggerd wanneer een store sluit of wordt gesnoozed                                             |
| `store.opening_hours.updated` | Wordt getriggerd wanneer de openingstijden worden gewijzigd                                             |

### store.opened

Wordt getriggerd wanneer een store wordt geopend, wanneer een snooze vroegtijdig wordt beëindigd of wanneer een getimede snooze automatisch afloopt.

```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

Wordt getriggerd wanneer een store wordt gesloten of gesnoozed.

```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

Wordt getriggerd wanneer de openingstijden van een store worden gewijzigd.

```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 rond de beschikbaarheid van menu-items.

| Event               | Beschrijving                                             |
| ------------------- | -------------------------------------------------------- |
| `item.out_of_stock` | Wordt getriggerd wanneer een menu-item uitverkocht raakt |

### item.out\_of\_stock

Wordt getriggerd wanneer een menu-item niet langer beschikbaar is. Dit kan langs meerdere wegen gebeuren:

* **Handmatige snooze** — een beheerder snoozed het item vanuit het dashboard
* **Handmatig uitschakelen** — een beheerder zet de beschikbaarheid van het item op uit
* **Voorraad op** — de voorraad van het item bereikt nul na een bestelling
* **Integratiesync** — een POS of integratie (Deliverect, Lightspeed, Zonal) markeert het item als niet beschikbaar

Het veld `reason` geeft aan waarom het item uitverkocht is en `source` geeft aan wat het heeft getriggerd.

| Reden                | Beschrijving                       |
| -------------------- | ---------------------------------- |
| `snoozed`            | Item is tijdelijk gesnoozed        |
| `inventory_depleted` | De voorraad van het item is op nul |
| `disabled`           | Item is expliciet uitgeschakeld    |

| Bron         | Beschrijving                                                   |
| ------------ | -------------------------------------------------------------- |
| `manual`     | Actie uitgevoerd door een beheerder in het dashboard           |
| `order`      | Voorraad opgebruikt door een klantbestelling                   |
| `deliverect` | Gesynchroniseerd vanuit Deliverect-integratie                  |
| `lightspeed` | Gesynchroniseerd vanuit Lightspeed / iKentoo-integratie        |
| `zonal`      | Gesynchroniseerd vanuit Zonal POS                              |
| `pos_sync`   | Gesynchroniseerd vanuit een generieke POS-beschikbaarheidspush |

```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"
    }
  }
}
```

De inhoud van het `details`-object verschilt per reden:

* **`snoozed`** — bevat `snoozeEnd` (ISO 8601-timestamp, of `null` voor onbepaalde snoozes)
* **`inventory_depleted`** — leeg `{}`
* **`disabled`** — leeg `{}`

***

## Betalingsevents

Events rond betalingen en uitbetalingen.

| Event                           | Beschrijving                                                                                                   |
| ------------------------------- | -------------------------------------------------------------------------------------------------------------- |
| `payments.payout.created`       | Wordt getriggerd wanneer een uitbetaling naar je bankrekening wordt verstuurd                                  |
| `bill.payment.created`          | Wordt getriggerd wanneer een rekeningbetaling wordt aangemaakt                                                 |
| `payment_link.created`          | Wordt getriggerd wanneer er een nieuwe payment link wordt aangemaakt                                           |
| `payment_link.paid`             | Wordt getriggerd wanneer er succesvol een betaling wordt geïncasseerd via een payment link                     |
| `payment_link.refund.created`   | Wordt getriggerd wanneer een terugbetaling voor een payment link-betaling wordt gestart                        |
| `payment_link.refund.succeeded` | Wordt getriggerd wanneer een payment link-terugbetaling door de betalingsprovider als geslaagd wordt bevestigd |
| `payment_link.refund.failed`    | Wordt getriggerd wanneer een payment link-terugbetaling door de betalingsprovider wordt afgewezen              |

### payments.payout.created

Wordt getriggerd wanneer storekit een uitbetaling naar je bankrekening verstuurt.

```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

Wordt getriggerd wanneer er een nieuwe payment link wordt aangemaakt. Alleen actief voor accounts met webhooks ingeschakeld.

```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"
    }
  }
}
```

| Veld                     | Beschrijving                                                                    |
| ------------------------ | ------------------------------------------------------------------------------- |
| `paymentLink.id`         | De payment link-ID in het `plink_`-formaat                                      |
| `paymentLink.type`       | `one_off` of `reusable`                                                         |
| `paymentLink.amountType` | `fixed` of `variable`                                                           |
| `paymentLink.amount`     | Vast bedrag in de kleinste eenheid van de valuta, of `null` bij variabele links |
| `paymentLink.currency`   | ISO 4217-valutacode                                                             |
| `paymentLink.reference`  | Je interne referentie, indien ingesteld                                         |
| `venue.slug`             | De URL-slug van de venue                                                        |

### payment\_link.paid

Wordt getriggerd wanneer er succesvol een betaling wordt geïncasseerd via een payment link. Alleen actief voor accounts met webhooks ingeschakeld.

```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"
    }
  }
}
```

| Veld                     | Beschrijving                                                         |
| ------------------------ | -------------------------------------------------------------------- |
| `paymentLink.id`         | De payment link-ID in het `plink_`-formaat                           |
| `paymentLink.type`       | `one_off` of `reusable`                                              |
| `paymentLink.amountType` | `fixed` of `variable`                                                |
| `paymentLink.reference`  | Je interne referentie, indien ingesteld                              |
| `payment.amount`         | Geïncasseerd bedrag in de kleinste eenheid van de valuta (bv. pence) |
| `payment.pspReference`   | Adyen-betalingsreferentie                                            |
| `venue.slug`             | De URL-slug van de venue                                             |

### payment\_link.refund.created

Wordt getriggerd wanneer een terugbetaling voor een payment link-betaling wordt gestart. De terugbetaling staat op dit moment in behandeling — de bevestiging komt binnen via `payment_link.refund.succeeded` of `payment_link.refund.failed` zodra de betalingsprovider deze asynchroon heeft verwerkt.

```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"
    }
  }
}
```

| Veld                   | Beschrijving                                                          |
| ---------------------- | --------------------------------------------------------------------- |
| `refund.id`            | De terugbetalings-ID                                                  |
| `refund.transactionId` | Het transactie-ID van de oorspronkelijke betaling                     |
| `refund.amount`        | Terugbetalingsbedrag in de kleinste eenheid van de valuta (bv. pence) |
| `refund.currency`      | ISO 4217-valutacode                                                   |
| `refund.reason`        | Reden voor de terugbetaling, indien opgegeven                         |

### payment\_link.refund.succeeded

Wordt getriggerd wanneer de betalingsprovider bevestigt dat een terugbetaling succesvol is verwerkt. Wordt asynchroon na `payment_link.refund.created` getriggerd.

```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

Wordt getriggerd wanneer de betalingsprovider een terugbetaling afwijst. Wordt asynchroon na `payment_link.refund.created` getriggerd.

```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"
    }
  }
}
```

***

## Printer-events

Events rond de status van cloudprinters.

| Event                    | Beschrijving                                          |
| ------------------------ | ----------------------------------------------------- |
| `printer.status.offline` | Wordt getriggerd wanneer een printer offline gaat     |
| `printer.status.online`  | Wordt getriggerd wanneer een printer weer online komt |

### printer.status.offline

Wordt getriggerd wanneer een verbonden cloudprinter 5 minuten lang niet incheckt bij de storekit-server. Er wordt ook een e-mailmelding gestuurd naar het geconfigureerde e-mailadres van de venue.

```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

Wordt getriggerd wanneer een cloudprinter opnieuw verbinding maakt met onze servers na minstens 5 minuten offline te zijn geweest. Er wordt ook een e-mailmelding gestuurd om te bevestigen dat de printer weer online is.

```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

- [storekit-betaallinks maken en delen](/docs/nl/guides/payments/payment-links.md)
- [Webhooks instellen](/docs/nl/developers/webhooks/setting-up-webhooks.md)
- [Klantfeedback, sterbeoordelingen en smart reviews](/docs/nl/guides/marketing/customer-feedback.md)
- [Introductie voor ontwikkelaars](/docs/nl/developers/introduction.md)
- [Webhooks testen](/docs/nl/developers/webhooks/testing-webhooks.md)
