
Vous encaissez vos abonnements via Stripe. Vous voulez que des partenaires ou ambassadeurs amènent des clients, et les rémunérer uniquement sur le revenu réellement encaissé. C'est le cas d'usage le plus courant de l'affiliation pour un SaaS.

La bonne nouvelle : Stripe est déjà votre source de vérité sur le revenu. Chaque abonnement créé, chaque facture payée, chaque remboursement émis — tout passe par vos événements Stripe. Un programme d'affiliation bien conçu se greffe directement sur cette donnée, sans couche intermédiaire fragile.

Ce guide couvre les étapes concrètes : connexion Stripe, configuration d'une campagne, suivi côté serveur, commissions récurrentes et versement via Stripe Connect. Pour le débat sur l'architecture sous-jacente — natif vs intégration, webhooks vs polling — consultez l'article dédié [logiciel d'affiliation Stripe : natif vs intégration](/fr/blog/logiciel-affiliation-stripe-natif-vs-integration).

---

## 1. Pourquoi Stripe simplifie l'affiliation pour un SaaS

La plupart des plateformes d'affiliation ont été conçues pour le e-commerce : un clic, une transaction, un cookie. Le SaaS est différent : un essai gratuit peut durer 14 jours, une conversion se traduit par un `subscription` actif, et le revenu réel s'étale sur des renouvellements mensuels ou annuels.

Quand Stripe est votre couche de facturation, vous avez déjà :

- Un identifiant stable par client (`customer`)
- Un historique de facturation fiable (`invoice.paid`, `invoice.payment_failed`)
- Un signal de résiliation clair (`customer.subscription.deleted`)
- Un flux de remboursements traçable (`charge.refunded`)

L'attribution affilié peut s'ancrer sur ces événements plutôt que sur une session navigateur éphémère. C'est plus fiable, et c'est ce que vos partenaires attendent : être payés sur le revenu réel, pas sur des clics ou des inscriptions.

---

## 2. Mettre en place l'affiliation quand on encaisse via Stripe

### Connecter Stripe à votre plateforme d'affiliation

La première étape est d'autoriser votre plateforme d'affiliation à lire vos événements Stripe. Deux approches existent : OAuth via Stripe Connect (votre compte Stripe reste central, la plateforme reçoit un accès délégué en lecture) ou une clé API restreinte en lecture seule.

Avec RefCampaign, la connexion se fait via Stripe Connect OAuth. Vous autorisez l'accès depuis votre tableau de bord Stripe, la plateforme écoute vos webhooks `invoice.paid` sans stocker vos clés secrètes.

### Définir votre campagne

Une campagne d'affiliation dans un contexte SaaS comporte au minimum :

| Paramètre | Exemple concret |
|---|---|
| Type de commission | Récurrente (30 % par renouvellement) ou one-time (50 EUR à la première facture payée) |
| Durée de la fenêtre d'attribution | 30 ou 60 jours après le clic |
| Fenêtre de remboursement | 30 jours (commission en attente pendant cette période) |
| Condition de déclenchement | Premier `invoice.paid` avec statut `subscription` actif |

La commission récurrente de 30 % est un standard dans le SaaS B2B. Elle aligne l'intérêt de l'affilié sur la rétention : il est payé tant que le client reste, ce qui l'incite à amener des clients qualifiés.

### Générer des liens d'affiliation

Chaque affilié reçoit un lien tracké vers votre page d'essai ou de tarification (par exemple `https://votre-saas.com?ref=CODE`). Le code est enregistré côté serveur au premier clic, associé à l'adresse email ou à l'identifiant de session du visiteur.

Pour en savoir plus sur le [tracking d'affiliation Stripe](/fr/fonctionnalites/tracking-affiliation-stripe) et ses options de configuration avancée, consultez la page fonctionnalité.

---

## 3. Tracker la conversion Stripe → attribution affilié

### Pourquoi un cookie seul ne suffit pas

Un cookie navigateur est effacé, expiré ou bloqué dans de nombreux cas : navigateur différent entre le clic et l'achat, iOS Safari ITP, navigation privée, délai de 45 jours entre le clic et l'achat. Pour un SaaS avec un cycle de vente long, c'est une perte d'attribution réelle.

La bonne pratique est de capturer le code affilié côté serveur dès le premier clic et de l'associer à une entité durable : adresse email lors de l'inscription à l'essai, ou `customer` Stripe à la création du compte.

### Attacher l'attribution avant le paiement

Le flux recommandé :

1. Visiteur clique sur le lien affilié → code capturé en session côté serveur + cookie de secours
2. Visiteur s'inscrit à l'essai → code associé à l'email dans votre base
3. À la création du `customer` Stripe, le code affilié est stocké dans les métadonnées : `customer.metadata.affiliate_code`
4. Lors du premier `invoice.paid`, votre webhook lit `customer.metadata.affiliate_code` et enregistre la conversion

Cette chaîne est solide : même si le cookie disparaît entre l'étape 1 et l'étape 4, l'attribution est préservée via les métadonnées Stripe.

### Lire les événements Stripe

Voici les événements à écouter via votre endpoint webhook ([documentation officielle Stripe](https://docs.stripe.com/billing/subscriptions/webhooks)) :

| Événement | Action dans le programme d'affiliation |
|---|---|
| `invoice.paid` | Créer une commission (état : en attente) |
| `invoice.payment_failed` | Ne pas créer de commission |
| `customer.subscription.deleted` | Arrêter les commissions récurrentes futures |
| `charge.refunded` | Annuler la commission si dans la fenêtre de remboursement |

Pour le premier `invoice.paid`, vérifiez que `subscription` est présent dans l'objet `invoice` et que `billing_reason` est `subscription_create`. Les renouvellements ont `billing_reason: subscription_cycle`.

### Commissions récurrentes sur les renouvellements

À chaque `invoice.paid` avec `billing_reason: subscription_cycle`, une nouvelle commission est générée pour l'affilié d'origine, tant que :

- La fenêtre d'attribution est toujours active (ou indéfinie pour une commission récurrente sans limite)
- L'abonnement n'a pas été annulé
- La commission précédente n'a pas été annulée suite à un remboursement

Pour approfondir les mécanismes de suivi et les pannes courantes, l'article [suivi d'affiliation : fonctionnement, pannes et corrections](/fr/blog/suivi-affiliation-fonctionnement-pannes-corrections) détaille les cas limites.

---

## 4. Verser les commissions via Stripe Connect

### Le flux de paiement

Stripe Connect permet de transférer des fonds directement depuis votre compte Stripe vers le compte bancaire d'un affilié. L'affilié crée un compte Connect (Express ou Standard), fournit ses informations KYC, et vous pouvez lui envoyer des virements depuis votre tableau de bord ou via l'API.

Le cycle standard en SaaS :

1. Commission générée à réception d'`invoice.paid` → état **en attente**
2. Fenêtre de remboursement expirée (30 jours) → état **due**
3. Cycle de paiement (NET-30 ou 1er du mois) → état **en cours de virement**
4. Virement Stripe Connect exécuté → état **payée**

Si un remboursement arrive pendant la fenêtre : commission **annulée** avant versement.

### États d'une commission

| État | Condition |
|---|---|
| En attente | `invoice.paid` reçu, fenêtre de remboursement non expirée |
| Due | Fenêtre de remboursement expirée, prête à être versée |
| Annulée | Remboursement reçu avant versement, ou abonnement annulé avant première facture |
| Payée | Virement Stripe Connect exécuté |

### NET-30 et fenêtre de remboursement

La fenêtre de remboursement sert à protéger votre trésorerie : vous ne versez pas de commission sur une transaction qui pourrait être remboursée 15 jours plus tard. La pratique standard dans le SaaS est d'aligner la fenêtre de remboursement sur votre politique de remboursement client (souvent 14 ou 30 jours), puis d'appliquer NET-30 pour le cycle de paiement.

Cela signifie qu'une commission générée le 1er janvier est versée au plus tôt le 31 janvier (après la fenêtre de 30 jours), lors du cycle de paiement suivant.

Pour comparer les solutions disponibles et voir comment elles gèrent ce cycle, consultez le [comparatif des meilleurs logiciels d'affiliation 2026](/fr/blog/meilleur-logiciel-affiliation-2026).

---

## 5. Pièges courants

**Attribuer sur le checkout plutôt que sur la facture payée.** Un checkout Stripe initié ne garantit pas un paiement réussi. Attendez toujours `invoice.paid` — pas `checkout.session.completed`.

**Double-compter les upgrades.** Quand un client passe de 49 EUR/mois à 99 EUR/mois, Stripe génère une facture de prorata. Si vous ne filtrez pas `billing_reason`, vous pouvez créer une seconde commission d'acquisition sur un client déjà acquis. Vérifiez `billing_reason: subscription_create` pour les commissions one-time.

**Verser avant la fenêtre de remboursement.** Si vous versez des commissions dès réception d'`invoice.paid` et qu'un remboursement arrive 10 jours plus tard, vous avez versé une commission sur une transaction annulée. Maintenez toujours un état **en attente** pendant la fenêtre de remboursement.

**S'appuyer uniquement sur les cookies.** Comme détaillé en section 3, un cookie peut disparaître entre le clic et l'achat dans un cycle SaaS long. La persistance côté serveur via `customer.metadata` est indispensable.

**Oublier les abonnements annulés.** Si un client annule son abonnement après 2 mois, les commissions récurrentes futures s'arrêtent. Écoutez `customer.subscription.deleted` pour marquer la relation affilié comme inactive sur ce client.

---

## Lancer votre programme d'affiliation

Un programme d'affiliation Stripe bien configuré repose sur trois blocs : une attribution côté serveur fiable, une lecture correcte des événements Stripe (`invoice.paid`, `charge.refunded`, `customer.subscription.deleted`), et un cycle de versement NET-30 via Stripe Connect.

RefCampaign implémente ces trois blocs nativement, sans configuration webhook manuelle ni développement custom. Vous connectez votre compte Stripe, définissez votre campagne, et les conversions sont attribuées automatiquement à chaque renouvellement.

[Voir les tarifs](/fr/tarifs) — ou [contacter l'équipe](/fr/contact) si vous voulez évaluer le fit avant de vous lancer.
