# Paiements en stablecoins confirmés par webhook | Cosmos Pay

URL: https://payments.cosmospay.lat/learn/confirm-stablecoin-payments?lang=fr

> Confirmez vos paiements en stablecoins côté serveur par webhooks signés : vérifiez la signature, répondez vite, gérez relances et doublons, testez d’abord.

## Comment confirmer un paiement en stablecoins sur votre serveur

Pour confirmer un paiement en stablecoins, laissez votre serveur agir sur le webhook signé de Cosmos Pay, et non sur la page que voit votre client. Quand le réseau confirme un paiement, Cosmos Pay envoie PAYMENT_INTENT_SUCCEEDED à votre endpoint, signé avec le secret de cet endpoint. Vérifiez la signature, répondez avec un statut 2xx et livrez la commande une seule fois par événement.

Mis à jour le 2 novembre 2026 · Par Cosmos Pay

### Pourquoi votre serveur, et pas le navigateur

Un checkout qui affiche Payé n’est que ce que montre le navigateur de votre client. L’onglet peut se fermer avant de revenir sur votre site, et n’importe qui peut ouvrir votre page de succès à la main. C’est la confirmation du réseau qui rend un paiement définitif.

Cosmos Pay surveille le réseau pour vous et prévient votre serveur quand un paiement est confirmé. C’est sur votre serveur qu’il faut marquer la commande comme payée et la livrer.

### Ce qu’envoie Cosmos Pay

- Un POST HTTPS vers l’endpoint que vous enregistrez, avec un événement JSON : id (il commence par evt_), type, createdAt et data. Pour un paiement, data est le paiement avec son statut, son montant, son actif, son réseau et sa transaction.
- L’en-tête X-Cosmos-Signature : t=<horodatage unix>,v1=<signature>. La signature est le HMAC-SHA256 de t, d’un point et du corps brut, avec le secret de l’endpoint comme clé, en hexadécimal.
- Les types d’événement que vous choisissez, comme PAYMENT_INTENT_SUCCEEDED, PAYMENT_INTENT_FAILED ou ZK_PAYMENT_SUCCEEDED. Comparez-les tels qu’ils sont écrits, en majuscules avec des tirets bas.
- Les en-têtes X-Cosmos-Event, X-Cosmos-Event-Id et X-Cosmos-Delivery, qui identifient l’événement et la livraison.

- [Les webhooks dans le SDK](https://dev.cosmospay.lat/docs/sdk/server/webhooks/)
- [API des webhooks](https://dev.cosmospay.lat/docs/api/webhooks/)

### Configurer un webhook, étape par étape

1. **Ajoutez un endpoint**: Dans le tableau de bord, ouvrez Webhooks et ajoutez l’adresse HTTPS d’une route de votre serveur. Choisissez les événements à recevoir ; PAYMENT_INTENT_SUCCEEDED est déjà sélectionné. L’adresse doit être publique : les adresses privées et locales sont refusées.
2. **Conservez le secret**: Le tableau de bord n’affiche le secret de l’endpoint (il commence par whsec_) qu’une seule fois. Gardez-le dans l’environnement de votre serveur, jamais dans une page web.
3. **Vérifiez chaque requête**: Lisez le corps brut avant tout parseur JSON et vérifiez X-Cosmos-Signature à partir de celui-ci. Avec le SDK TypeScript, Webhooks.constructEvent vérifie la signature, refuse par défaut une signature de plus de cinq minutes et renvoie l’événement.
4. **Répondez vite, puis traitez**: Répondez avec un statut 2xx dès que la signature est valide, et faites ensuite le travail lent, comme les e-mails ou les mises à jour de stock.
5. **Traitez chaque événement une fois**: Enregistrez l’id de chaque événement que vous traitez et ignorez ceux que vous avez déjà vus : une relance ou un renvoi transmet de nouveau le même événement.
6. **Envoyez un test**: Utilisez Envoyer un test sur l’endpoint pour recevoir un événement ping, puis faites un paiement de test en Sandbox et suivez sa livraison dans la liste de l’endpoint.

- [Les webhooks dans le SDK](https://dev.cosmospay.lat/docs/sdk/server/webhooks/)
- [Premiers pas](https://dev.cosmospay.lat/docs/getting-started/)

### Quand votre serveur ne répond pas

Seule une réponse 2xx compte comme livrée, et les redirections ne sont pas suivies. Cosmos Pay relance une livraison échouée jusqu’à trois fois avec une pause croissante, puis de nouveau lors de séries ultérieures, et l’événement garde son id à chaque tentative.

Dans le tableau de bord, chaque endpoint liste ses livraisons, avec un filtre pour celles qui ont échoué, et vous pouvez renvoyer n’importe laquelle. Cosmos Pay conserve le corps d’une livraison pendant 30 jours : renvoyez-la dans ce délai.

### Ou vérifiez un paiement vous-même

Vous pouvez aussi interroger un paiement précis : récupérez-le par son id pour lire son statut, ou envoyez le hash de sa transaction (sur Solana, la signature de la transaction) à POST /v1/payment-intents/:id/validate. Utilisez-le en solution de repli, par exemple quand votre client revient avant l’arrivée du webhook ; le webhook reste le signal principal.

- [API des intentions de paiement](https://dev.cosmospay.lat/docs/api/payment-intents/)

### Questions et réponses.

Paiements par réseau : [Paiements sur Stellar](https://payments.cosmospay.lat/stellar?lang=fr), [Paiements sur Solana](https://payments.cosmospay.lat/solana?lang=fr), [Paiements sur Monad](https://payments.cosmospay.lat/monad?lang=fr)

#### Le tableau de bord affiche payment_intent.succeeded. Quel nom porte l’événement ?

Le type de l’événement est PAYMENT_INTENT_SUCCEEDED, en majuscules avec des tirets bas. Le tableau de bord l’affiche seulement sous une forme plus courte.

#### Que se passe-t-il quand je renouvelle le secret ?

Le nouveau secret fonctionne tout de suite et l’ancien cesse de fonctionner tout de suite : mettez à jour votre serveur juste après l’avoir renouvelé.

#### Et si mon serveur était hors service ?

Cosmos Pay relance les livraisons échouées, et vous pouvez renvoyer n’importe quelle livraison depuis le tableau de bord pendant 30 jours.

#### Puis-je avoir plusieurs endpoints ?

Oui. Chaque endpoint a sa propre adresse, ses propres événements et son propre secret, et chaque événement va à chaque endpoint qui y est abonné.

### Plus de guides

[Voir tous les guides](https://payments.cosmospay.lat/learn?lang=fr)

#### [Comment accepter des paiements en USDC en ligne](https://payments.cosmospay.lat/learn/accept-usdc-payments?lang=fr)

Encaissez en USDC avec un lien de paiement, le checkout hébergé ou l’API, et faites d’abord un essai sur un réseau de test.

#### [Comment accepter l’USDC avec des liens Solana Pay](https://payments.cosmospay.lat/learn/accept-usdc-with-solana-pay?lang=fr)

Créez un lien Solana Pay pour l’USDC, testez-le sur Devnet et voyez chaque paiement confirmé sur votre serveur.

#### [Qu’est-ce qu’une passerelle de paiement en stablecoins ?](https://payments.cosmospay.lat/learn/stablecoin-payment-gateway?lang=fr)

Ce que fait une passerelle, où l’argent est réglé, qui paie les frais de réseau, et la différence entre dépositaire et non dépositaire.

### Commencez à accepter les stablecoins.

Créez un compte gratuit, générez une clé de test et envoyez votre premier lien de paiement dès aujourd’hui.

[Créer un lien de paiement](https://dev.cosmospay.lat/login?next=%2Fdashboard%3Fview%3Dpayments)

#### Écrivez-nous

Une question sur les offres, l’intégration ou les paiements protégés : dites-le-nous, nous répondons par e-mail.

[organization@cosmospay.lat](mailto:organization@cosmospay.lat)
