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

# Événements webhook

> Référence de tous les événements webhook de storekit, notamment order created, accepted, rejected, refunded, item out of stock et les événements de statut de paiement, avec leurs payloads.

Cette page liste tous les événements webhook disponibles dans storekit, regroupés par catégorie.

## Événements de commande (Order)

Événements liés au cycle de vie et à la gestion des commandes.

| Événement                   | Description                                                            |
| --------------------------- | ---------------------------------------------------------------------- |
| `order.created`             | Déclenché lorsqu'une nouvelle commande est passée                      |
| `order.accepted`            | Déclenché lorsqu'une commande est acceptée par le magasin              |
| `order.rejected`            | Déclenché lorsqu'une commande est refusée par le magasin               |
| `order.canceled`            | Déclenché lorsqu'une commande est annulée                              |
| `order.preparing`           | Déclenché lorsqu'une commande passe au statut « en préparation »       |
| `order.ready_for_pickup`    | Déclenché lorsqu'une commande est marquée comme prête pour retrait     |
| `order.out_for_delivery`    | Déclenché lorsqu'une commande est envoyée en livraison                 |
| `order.pos.dispatch.failed` | Déclenché lorsqu'une commande échoue à être transmise à un système POS |
| `order.rating.updated`      | Déclenché lorsqu'un client met à jour la note de sa commande           |
| `order.completed`           | Déclenché lorsqu'une commande est marquée comme terminée               |
| `order.refund.created`      | Déclenché lorsqu'un remboursement est émis pour une commande           |

### order.created

Déclenché lorsqu'une nouvelle commande est passée par un client.

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

Déclenché lorsqu'une commande est acceptée par le magasin. Possède la même structure de payload que `order.created`.

### order.preparing

Déclenché lorsqu'une commande passe au statut « en préparation ».

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

Déclenché lorsqu'une commande est marquée comme prête pour le retrait par le client.

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

Déclenché lorsqu'une commande est marquée comme terminée. Cet événement se déclenche pour les finalisations individuelles (via le tableau de bord, Deliverect, iKentoo ou l'auto-update) comme pour les finalisations en masse.

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

Déclenché lorsqu'une commande échoue à être transmise à un système POS.

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

***

## Événements de magasin (Store)

Événements liés au statut et à la configuration du magasin.

| Événement                     | Description                                                                                           |
| ----------------------------- | ----------------------------------------------------------------------------------------------------- |
| `store.opened`                | Déclenché lorsqu'un magasin ouvre, qu'un snooze se termine plus tôt, ou qu'un snooze temporisé expire |
| `store.closed`                | Déclenché lorsqu'un magasin ferme ou est mis en snooze                                                |
| `store.opening_hours.updated` | Déclenché lorsque les horaires d'ouverture sont modifiés                                              |

### store.opened

Déclenché lorsqu'un magasin est ouvert, qu'un snooze est terminé plus tôt, ou qu'un snooze temporisé expire automatiquement.

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

Déclenché lorsqu'un magasin est fermé ou mis en snooze.

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

Déclenché lorsque les horaires d'ouverture d'un magasin sont modifiés.

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

***

## Événements d'article (Item)

Événements liés à la disponibilité des articles de menu.

| Événement           | Description                                                 |
| ------------------- | ----------------------------------------------------------- |
| `item.out_of_stock` | Déclenché lorsqu'un article de menu est en rupture de stock |

### item.out\_of\_stock

Déclenché lorsqu'un article de menu devient indisponible. Cela peut se produire via plusieurs chemins :

* **Snooze manuel** — un administrateur met l'article en snooze depuis le tableau de bord
* **Désactivation manuelle** — un administrateur désactive la disponibilité de l'article
* **Épuisement de l'inventaire** — l'inventaire de l'article atteint zéro après une commande
* **Synchronisation d'intégration** — un POS ou une intégration (Deliverect, Lightspeed, Zonal) marque l'article comme indisponible

Le champ `reason` indique pourquoi l'article est en rupture de stock, et `source` indique ce qui l'a déclenché.

| Reason               | Description                                  |
| -------------------- | -------------------------------------------- |
| `snoozed`            | L'article a été temporairement mis en snooze |
| `inventory_depleted` | L'inventaire de l'article a atteint zéro     |
| `disabled`           | L'article a été explicitement désactivé      |

| Source       | Description                                                    |
| ------------ | -------------------------------------------------------------- |
| `manual`     | Action effectuée par un administrateur dans le tableau de bord |
| `order`      | Inventaire épuisé par une commande client                      |
| `deliverect` | Synchronisé depuis l'intégration Deliverect                    |
| `lightspeed` | Synchronisé depuis l'intégration Lightspeed / iKentoo          |
| `zonal`      | Synchronisé depuis Zonal POS                                   |
| `pos_sync`   | Synchronisé depuis un push de disponibilité POS générique      |

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

L'objet `details` varie selon la raison :

* **`snoozed`** — inclut `snoozeEnd` (horodatage ISO 8601, ou `null` pour un snooze de durée indéfinie)
* **`inventory_depleted`** — objet vide `{}`
* **`disabled`** — objet vide `{}`

***

## Événements de paiement (Payments)

Événements liés aux paiements et payouts.

| Événement                       | Description                                                                                                    |
| ------------------------------- | -------------------------------------------------------------------------------------------------------------- |
| `payments.payout.created`       | Déclenché lorsqu'un payout est envoyé vers votre compte bancaire                                               |
| `bill.payment.created`          | Déclenché lorsqu'un paiement de note (bill) est créé                                                           |
| `payment_link.created`          | Déclenché lorsqu'un nouveau lien de paiement est créé                                                          |
| `payment_link.paid`             | Déclenché lorsqu'un paiement est encaissé avec succès via un lien de paiement                                  |
| `payment_link.refund.created`   | Déclenché lorsqu'un remboursement est initié pour un paiement par lien de paiement                             |
| `payment_link.refund.succeeded` | Déclenché lorsqu'un remboursement par lien de paiement est confirmé comme réussi par la passerelle de paiement |
| `payment_link.refund.failed`    | Déclenché lorsqu'un remboursement par lien de paiement est rejeté par la passerelle de paiement                |

### payments.payout.created

Déclenché lorsque storekit envoie un payout vers votre compte bancaire.

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

Déclenché lorsqu'un nouveau lien de paiement est créé. Ne se déclenche que pour les comptes avec les webhooks activés.

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

| Champ                    | Description                                                                     |
| ------------------------ | ------------------------------------------------------------------------------- |
| `paymentLink.id`         | L'ID du lien de paiement au format `plink_`                                     |
| `paymentLink.type`       | `one_off` ou `reusable`                                                         |
| `paymentLink.amountType` | `fixed` ou `variable`                                                           |
| `paymentLink.amount`     | Montant fixe dans l'unité monétaire mineure, ou `null` pour les liens variables |
| `paymentLink.currency`   | Code devise ISO 4217                                                            |
| `paymentLink.reference`  | Votre référence interne, si définie                                             |
| `venue.slug`             | Le slug d'URL du magasin                                                        |

### payment\_link.paid

Déclenché lorsqu'un paiement est encaissé avec succès via un lien de paiement. Ne se déclenche que pour les comptes avec les webhooks activés.

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

| Champ                    | Description                                                     |
| ------------------------ | --------------------------------------------------------------- |
| `paymentLink.id`         | L'ID du lien de paiement au format `plink_`                     |
| `paymentLink.type`       | `one_off` ou `reusable`                                         |
| `paymentLink.amountType` | `fixed` ou `variable`                                           |
| `paymentLink.reference`  | Votre référence interne, si définie                             |
| `payment.amount`         | Montant encaissé dans l'unité monétaire mineure (par ex. pence) |
| `payment.pspReference`   | Référence de paiement Adyen                                     |
| `venue.slug`             | Le slug d'URL du magasin                                        |

### payment\_link.refund.created

Déclenché lorsqu'un remboursement est initié pour un paiement par lien de paiement. Le remboursement est en attente à ce stade — la confirmation arrive via `payment_link.refund.succeeded` ou `payment_link.refund.failed` une fois que la passerelle de paiement le traite de manière asynchrone.

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

| Champ                  | Description                                                             |
| ---------------------- | ----------------------------------------------------------------------- |
| `refund.id`            | L'ID du remboursement                                                   |
| `refund.transactionId` | L'ID de transaction du paiement d'origine                               |
| `refund.amount`        | Montant du remboursement dans l'unité monétaire mineure (par ex. pence) |
| `refund.currency`      | Code devise ISO 4217                                                    |
| `refund.reason`        | Motif du remboursement, si fourni                                       |

### payment\_link.refund.succeeded

Déclenché lorsque la passerelle de paiement confirme qu'un remboursement a été traité avec succès. Se déclenche de manière asynchrone après `payment_link.refund.created`.

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

Déclenché lorsque la passerelle de paiement rejette un remboursement. Se déclenche de manière asynchrone après `payment_link.refund.created`.

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

***

## Événements d'imprimante (Printer)

Événements liés au statut des imprimantes cloud.

| Événement                | Description                                      |
| ------------------------ | ------------------------------------------------ |
| `printer.status.offline` | Déclenché lorsqu'une imprimante passe hors ligne |
| `printer.status.online`  | Déclenché lorsqu'une imprimante revient en ligne |

### printer.status.offline

Déclenché lorsqu'une imprimante cloud connectée ne parvient pas à se signaler au serveur storekit pendant 5 minutes. Une notification e-mail est également envoyée à l'adresse e-mail configurée pour le magasin.

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

Déclenché lorsqu'une imprimante cloud se reconnecte à nos serveurs après être restée hors ligne pendant au moins 5 minutes. Une notification e-mail est également envoyée pour confirmer que l'imprimante est de nouveau en ligne.

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

- [Créer et partager des liens de paiement storekit](/docs/fr/guides/payments/payment-links.md)
- [Configurer les webhooks](/docs/fr/developers/webhooks/setting-up-webhooks.md)
- [Aperçu des webhooks](/docs/fr/developers/webhooks/overview.md)
- [Tester les webhooks](/docs/fr/developers/webhooks/testing-webhooks.md)
- [Dépannage des webhooks](/docs/fr/developers/webhooks/troubleshooting.md)
