Skip to main content

Vue d’ensemble

Les webhooks Finkare vous notifient de chaque événement de recouvrement émis (paiement reçu, dossier payé, lancement, actions de relance, recommandés). Les payloads sont signés via HMAC-SHA256 pour garantir leur authenticité. La livraison est au moins une fois : dédupliquez sur l’identifiant de l’événement.

Étape 1 : créer un endpoint

Créez un endpoint HTTPS sur votre serveur qui accepte les requêtes POST. La signature se vérifie sur le corps brut (ne pas re-sérialiser le JSON parsé) :
Répondez toujours avec un code HTTP 2xx dans les 5 secondes. Si votre traitement est long, acquittez d’abord le webhook puis traitez en arrière-plan (queue). Les redirections ne sont jamais suivies : une réponse 3xx compte comme un échec.

Étape 2 : enregistrer le webhook

Sauvegardez le secret retourné dans vos variables d’environnement :

Étape 3 : format des payloads

Chaque événement est envoyé avec cette structure :
Événements actuellement émis : workflow.started, workflow.action_triggered, debtor.contacted, payment.received, debt.paid, lrar.sent, lrar.delivered. Les autres événements de la référence peuvent être souscrits mais ne sont pas encore émis. Les payloads ne contiennent pas de données personnelles du débiteur : identifiants, montants et états seulement.

Headers envoyés

Vérification de signature

En-tête : X-Finkare-Signature: t=<horodatage Unix>,v1=<signature>, où signature = HMAC-SHA256 hexadécimal, avec votre secret whsec_... comme clé, de la chaîne "<t>.<corps brut>". L’horodatage étant signé, refusez toute requête dont t s’écarte de plus de 5 minutes (300 s) de votre horloge : un corps intercepté ne peut pas être rejoué au-delà. Calculez toujours la signature sur le corps brut, avant tout parsing JSON. Finkare stocke votre secret chiffré et ne peut pas vous le renvoyer : en cas de perte, régénérez-le (rotate-secret).

Politique de retry

Après 5 échecs, la livraison passe en failed (visible dans l’historique) ; le webhook reste actif pour les événements suivants. Une URL qui résout vers une adresse privée ou réservée est refusée sans nouvelle tentative.

Monitoring

Consultez l’historique des deliveries via l’API :

Bonnes pratiques

  1. Répondre vite : acquittez le webhook en < 5s, traitez en async
  2. Déduplication : utilisez X-Finkare-Event-Id (ou id du corps) pour ignorer une re-livraison
  3. Idempotence : votre handler doit supporter les re-livraisons sans effet de bord
  4. Rotation régulière : faites tourner le secret via POST /webhooks/:id/rotate-secret
  5. Alerting : surveillez les erreurs 4xx/5xx dans vos logs pour détecter les problèmes rapidement