Abonnements et paiements récurrents
July 30, 2026
Facturation récurrente avec les abonnements FlowAlp Pay : checkout d'abonnement, webhooks de renouvellement, gestion API et choix vs tokenisation.
Un abonnement débite un client automatiquement à intervalle fixe : le client autorise le paiement une seule fois sur le checkout hébergé, et FlowAlp Pay exécute les renouvellements pour vous. Ce guide explique le checkout d'abonnement, les webhooks liés aux renouvellements et la gestion des abonnements en cours via l'API.
Comment fonctionnent les abonnements
- Vous créez un Gateway avec les paramètres d'abonnement ci-dessous ; le client autorise le premier paiement sur le checkout hébergé.
- FlowAlp Pay débite automatiquement les échéances suivantes à l'intervalle configuré.
- Votre système reste synchronisé grâce aux webhooks d'abonnement — activation, renouvellements, échecs et résiliations.
- Vous ajustez ou terminez l'abonnement via l'API ou le dashboard quand les plans changent.
| Paramètre | Description | Exemple |
|---|---|---|
subscriptionState | Active le traitement d'abonnement pour le Gateway | true |
subscriptionInterval | Intervalle de facturation (chaîne de durée comme PHP DateInterval) | P1M = mensuel |
subscriptionPeriod | Durée totale de l'abonnement | P1Y = un an |
subscriptionCancellationInterval | Délai de préavis pendant lequel le client peut résilier | P1M = un mois |
Créer un checkout d'abonnement
La requête est une création de Gateway normale avec les paramètres d'abonnement. L'amount (en unité minimale, CHF 29.00 → 2900) est débité une fois par intervalle :
curl -X POST "https://api.pay.flowalp.com/v1.16/Gateway/?instance=demo-shop" \
-H "x-api-key: $FLOWALP_API_SECRET" \
-H "Content-Type: application/json" \
-d '{
"amount": 2900,
"currency": "CHF",
"purpose": "Pro plan (monthly)",
"referenceId": "SUB-CUST-55021",
"subscriptionState": true,
"subscriptionInterval": "P1M",
"subscriptionPeriod": "P1Y",
"subscriptionCancellationInterval": "P1M",
"successRedirectUrl": "https://app.example.com/subscribe/success",
"failedRedirectUrl": "https://app.example.com/subscribe/failed",
"cancelRedirectUrl": "https://app.example.com/subscribe/cancel"
}'Tous les payment providers ne prennent pas en charge les abonnements. La disponibilité dépend de la configuration de votre compte. Les checkouts d'abonnement peuvent aussi être créés sans code via les liens de paiement.
Suivre les renouvellements avec les webhooks
Pour les Gateways d'abonnement, FlowAlp Pay envoie un webhook d'abonnement (à la place du webhook de transaction) à chaque changement de statut de l'abonnement. Le payload contient status, valid_until — la date du prochain débit —, paymentInterval, plus les données d'invoice et de contact. Configurez votre endpoint comme décrit dans Configurer les webhooks et consultez Événements et payloads des webhooks pour la structure exacte.
| Statut | Signification |
|---|---|
active | L'abonnement est en cours ; d'autres débits suivront |
overdue | Un débit a échoué et est retenté |
failed | La création a échoué, ou le débit retenté a de nouveau échoué |
in_notice | Le client a résilié avant la date de fin ; les débits restants suivent encore |
cancelled | Résilié par le marchand avec effet immédiat ; plus aucun débit |
Gérer les abonnements via l'API
Ajustez un abonnement en cours — un changement de plan, par exemple — avec une requête PUT sur la ressource Subscription. Le nouvel amount s'applique dès le prochain intervalle de facturation :
curl -X PUT "https://api.pay.flowalp.com/v1.16/Subscription/1234/?instance=demo-shop" \
-H "x-api-key: $FLOWALP_API_SECRET" \
-H "Content-Type: application/json" \
-d '{
"amount": 4900,
"currency": "CHF",
"purpose": "Business plan (monthly)"
}'Les abonnements peuvent aussi être créés côté serveur à partir d'un contact existant (POST /v1.16/Subscription/ avec userId, psp, amount, currency, purpose, paymentInterval, period et cancellationInterval). Toutes les opérations — y compris la récupération et le listage — sont documentées dans l'API Subscriptions.
La ressource Subscription est signalée comme expérimentale dans la documentation API, et aucun endpoint dédié à la résiliation n'y est documenté. Vérifiez l'état actuel sur la page API Subscriptions avant de construire vos flux de résiliation, et utilisez le dashboard là où l'API ne couvre pas votre cas.
Abonnements ou tokenisation ?
Les abonnements conviennent à la facturation périodique fixe : même montant, même intervalle, renouvellements automatiques et règles de résiliation côté client. Si les montants changent d'une période à l'autre, si les dates de facturation sont irrégulières ou si vous voulez un contrôle total sur les relances et le recouvrement, construisez plutôt sur la tokenisation et déclenchez chaque débit vous-même — vous implémentez alors renouvellements et résiliations, et votre code doit gérer les débits échoués.
Étape suivante : la référence API Subscriptions couvre la création, la récupération et la mise à jour — et les webhooks gardent vos droits d'accès synchronisés.