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

# Infov2webhooks

## Signature du Webhook

* Sécurisé avec la signature HMAC-SHA256.
* L'en-tête Sezzle-Signature contient un hachage du corps du webhook, généré à l'aide de la clé privée du marchand.
* Vérifiez toujours que la signature correspond aux données du webhook pour confirmer qu'elle provient de Sezzle.

## Charge utile de l'événement Webhook

<Tabs>
  <Tab title="Options">
    <ParamField path="uuid" type="string">
      Identifiant unique pour l'événement webhook.
    </ParamField>

    <ParamField path="created_at" type="string">
      Horodatage (ISO 8601) indiquant quand l'événement a été généré.
    </ParamField>

    <ParamField path="event" type="string">
      Type d'événement

      Options disponibles : `customer.tokenized`, `order.authorized`, `order.captured`, `order.refunded`, `dispute.merchant_input_requested`, `dispute.deadline_approaching`, `dispute.closed.customer_win`, `dispute.closed.merchant_win`, `dispute.closed.neutral`
    </ParamField>

    <ParamField path="data_type" type="string">
      Type de données associé à l'événement.

      Options disponibles : `customer`, `order`, `dispute`
    </ParamField>

    <ParamField path="data" type="object">
      Données de charge utile spécifiques au type d'événement. Voir les options dans l'accordéon applicable ci-dessous.
    </ParamField>
  </Tab>

  <Tab title="Modèle">
    ```json theme={"system"}
    {
        "uuid": string,
        "created_at": string,
        "event": string,
        "data_type": string,
        "data": {
            "token": string,
            "expiration": string,
            "customer": {
                "uuid": string,
                "created_at": string,
                "expiration": string
            }
        }
    }
    ```
  </Tab>
</Tabs>

### Exemples par événement

<AccordionGroup>
  <Accordion title="customer.tokenized">
    ```json theme={"system"}
    {
        "uuid": "e41c32d5-687d-414f-b5c6-d089bea52e7d",
        "created_at": "2025-04-12T00:11:01.749261Z",
        "event": "customer.tokenized",
        "data_type": "tokenize",
        "data": {
            "token": "ce56604a-5dfd-489a-80e9-753d0325dd46",
            "expiration": "2025-04-12T00:41:01.745145Z",
            "customer": {
                "uuid": "e0003e6a-7234-4440-9265-61906e8b8879",
                "created_at": "2025-04-12T00:11:01.745145Z",
                "expiration": "2026-04-12T00:11:01.745145Z"
            }
        }
    }
    ```
  </Accordion>

  <Accordion title="order.authorized">
    * Le `"uuid"` est l'UUID du webhook
    * Le `"data.uuid"` est l'UUID de la commande qui peut être utilisé dans l'appel API pour obtenir les détails de la commande
    * Le `"data.authorization.uuid"` est l'UUID pour l'autorisation

    ```json theme={"system"}
    {
        "uuid": "fdb263a1-a1dd-4feb-8749-c8a447977ebb",
        "created_at": "2025-04-12T00:15:39.281826Z",
        "event": "order.authorized",
        "data_type": "order",
        "data": {
            "uuid": "f36605a0-4a96-46d1-9d01-a0b17140dc57",
            "authorization": {
                "uuid": "28ef487d-8398-43bb-8354-5ebdd1eb7b40",
                "created_at": "2025-04-12T00:15:39.276841Z",
                "authorization_amount": {
                    "amount_in_cents": 5000,
                    "currency": "USD"
                },
                "approved": true,
                "expiration": "2025-04-12T00:45:39.276841Z"
            }
        }
    }
    ```
  </Accordion>

  <Accordion title="order.captured">
    * Le `"uuid"` est l'UUID du webhook
    * Le `"data.uuid"` est l'UUID de la commande qui peut être utilisé dans l'appel API pour obtenir les détails de la commande
    * Le `"data.capture.uuid"` est l'UUID pour la capture

    ```json theme={"system"}
    {
        "uuid": "6ee025c6-8acf-48fe-a6d6-b51693d64c60",
        "created_at": "2025-04-12T00:20:07.44668Z",
        "event": "order.captured",
        "data_type": "order",
        "data": {
            "uuid": "b87305a1-6be3-4877-bcf0-2b5b7dfaeaf0",
            "capture": {
                "uuid": "b69b1ba8-e977-4f26-9253-06f14d941696",
                "created_at": "2025-04-12T00:20:07.438365Z",
                "amount": {
                    "amount_in_cents": 3000,
                    "currency": "USD"
                }
            }
        }
    }
    ```
  </Accordion>

  <Accordion title="order.refunded">
    * Le `"data.uuid"` est l'UUID de la commande qui peut être utilisé dans l'appel API pour obtenir les détails de la commande

    Remarque sur le `source` field:

    * Si la valeur est `"dashboard"`, c'est initié depuis le tableau de bord du marchand
    * Si la valeur est `"gateway"`, c'est via l'API de la passerelle

    ```json theme={"system"}
    {
        "uuid": "ed89f046-f55e-4fdd-9f65-ec3d8e961f99",
        "created_at": "2025-04-12T00:24:39.809499Z",
        "event": "order.refunded",
        "data_type": "order",
        "data": {
            "uuid": "b69f882d-06c3-4f2e-b6e3-ce7a6c46e455",
            "refund": {
                "uuid": "479e9d25-d0a5-49df-a2d3-6ca1d75b8c57",
                "created_at": "2025-04-12T00:24:39.805651Z",
                "source": "dashboard",
                "amount": {
                    "amount_in_cents": 500,
                    "currency": "USD"
                }
            }
        }
    }
    ```
  </Accordion>

  <Accordion title="dispute">
    Ce qui suit s'applique aux webhooks suivants :

    * `dispute.merchant_input_requested`
    * `dispute.deadline_approaching`
    * `dispute.closed.customer_win`
    * `dispute.closed.merchant_win`
    * `dispute.closed.neutral`

    ```json theme={"system"}
    {
        "uuid": "79f1e9cd-f1ef-42fa-b7b4-2ed8d9e9fae8",
        "created_at": "2025-04-11T17:22:22.717757Z",
        "event": "dispute.merchant_input_requested",
        "data_type": "dispute",
        "data": {
            "customer_name": "John Doe",
            "order_uuid": "e17280f3-d575-4bc2-99ff-ff881df7b137",
            "order_reference_id": "order-reference-id-123",
            "sezzle_order_id": "d2s7t-281qj-rf6ra-dqfcg",
            "order_date": "2024-08-20",
            "dispute_type": "No Product Or Service",
            "dispute_due_date": "2025-04-08",
            "dispute_id": 132,
            "dispute_amount_in_cents": 2500,
            "dispute_currency": "USD",
            "dispute_status": "Closed All Win"
        }
    }
    ```
  </Accordion>
</AccordionGroup>

## Acceptation et nouvelles tentatives des Webhooks

* Considéré comme livré lors de la réception d'une réponse HTTP 200 Status OK.
* Les réponses non-200 déclenchent de nouvelles tentatives :
  * Plusieurs tentatives dans la première heure.
  * Quelques tentatives tout au long de la journée.
  * Dernières tentatives un jour et trois jours plus tard, s'étalant sur cinq jours au total.
* Si la dernière tentative échoue, l'abonnement au webhook est supprimé pour tous les événements.
* Pour reprendre la réception des webhooks, recréez le webhook.
* Les webhooks peuvent ne pas arriver dans l'ordre chronologique, car de nouveaux peuvent être envoyés avant les nouvelles tentatives des anciens.
* Les webhooks relancés utilisent la clé privée actuelle du marchand pour la signature, donc la signature peut différer de l'originale si la clé a changé.
