Aller au contenu principal
Documentation API

9 endpoints

Abonnements

Un prélèvement récurrent sur un moyen de paiement enregistré, avec ses échéances, ses pauses et ses relances.

Les intitulés et descriptions d'endpoints viennent du contrat OpenAPI, en anglais — ils ne peuvent pas diverger de l'API.

En clair

Encaisser le même client à intervalle régulier, automatiquement.

Quand l'utiliser

Pour tout revenu récurrent : abonnement mensuel, forfait, mensualisation d'une prestation.

Comment l'intégrer

  1. 1Créez l'abonnement pour un client existant — avec un e-mail valide : l'avis de pré-prélèvement obligatoire part toujours par e-mail —, sa périodicité et son montant.
  2. 2Le premier paiement se fait en présence du client, avec son consentement explicite à conserver son moyen de paiement.
  3. 3Désignez le moyen de paiement à prélever, ou laissez le moyen par défaut du client.
  4. 4Suspendez, reprenez ou résiliez selon la vie du contrat ; consultez les échéances pour votre facturation.
  5. 5En cas d'échec d'un prélèvement, l'abonnement passe PAST_DUE : jusqu'à 4 tentatives automatiques, un lien de paiement de secours envoyé au client, puis annulation — suivez subscription.payment_failed et subscription.canceled.
  6. 6En sandbox, un endpoint dédié force la prochaine échéance pour que vous puissiez tester une année d'abonnement en une minute.
PUT

Sélectionner le moyen de paiement d'un abonnement

Bascule un abonnement à prélèvement automatique vers l'un des moyens de paiement enregistrés de son client. Seul l'UUID local du moyen de paiement est accepté ; les jetons du prestataire et le CVV ne sont jamais exposés.

Schéma · SelectSubscriptionPaymentMethodRequest

ChampTypeEmplacementRequisDescription
referencestringpathRequis
paymentMethodIdstring (uuid)bodyRequisUUID local du moyen de paiement, géré par vos soins.
POST200

Forcer le prochain paiement automatique (sandbox uniquement)

Utilitaire de test disponible uniquement avec une clé d'API SANDBOX. Il crée ou réutilise le prélèvement de la période actuellement due, met en file d'attente l'e-mail de pré-prélèvement, puis exécute immédiatement le paiement par jeton enregistré avec son CVV déchiffré en interne et le 3DS désactivé. Le CVV n'apparaît jamais dans la requête ni dans la réponse. L'abonnement doit être INCOMPLETE, ACTIVE ou PAST_DUE avec nouvelle tentative possible, autoPay doit être activé et le premier checkout keepAlive + 3DS doit déjà avoir rattaché un moyen de paiement enregistré. En cas de succès, nextRunDate avance. En cas d'échec, il n'avance pas : un échec initial reste INCOMPLETE ; un échec de renouvellement passe en PAST_DUE. La réponse contient une catégorie et un code d'échec sûrs, le nombre de tentatives, les délais de nouvelle tentative et d'annulation, ainsi que fallbackPayUrl. Les refus définitifs, comme une carte expirée, exigent un moyen de paiement de remplacement ou un paiement manuel. Idempotency-Key est obligatoire ; le rejouer renvoie la même opération sans nouveau prélèvement.

ChampTypeEmplacementRequisDescription
referencestringpathRequisRéférence de l'abonnement.
Idempotency-KeystringheaderRequisClé unique obligatoire. Ne la réutilisez que pour rejouer exactement cette requête de test.
POST

Reprendre un abonnement

Reprend le cycle de facturation d'un abonnement mis en pause.

ChampTypeEmplacementRequisDescription
referencestringpathRequis
POST

Mettre un abonnement en pause

Suspend les prélèvements futurs sans annuler l'abonnement. Reprenez-les plus tard avec /resume.

ChampTypeEmplacementRequisDescription
referencestringpathRequis
POST

Annuler un abonnement

Met fin définitivement à l'abonnement. Aucun autre prélèvement n'est généré.

ChampTypeEmplacementRequisDescription
referencestringpathRequis
GET

Lister les abonnements

Renvoie les abonnements de l'appelant pour l'environnement de la clé, sous forme de Page paginée.

ChampTypeEmplacementRequisDescription
originenumqueryOptionnelFiltrer par origine de création (API ou DASHBOARD).Valeurs APIDASHBOARD
pageablePageablequeryRequis
POST200

Créer un abonnement

Démarre un abonnement récurrent pour un client existant. Le paiement automatique est activé par défaut (true) ; le statut renvoyé reste INCOMPLETE tant que la première période de facturation n'a pas abouti. Le premier checkout hébergé utilise 3DS, enregistre un jeton du fournisseur, masque le PAN et conserve des éléments d'authentification réutilisables dans le coffre restreint et audité. Ni le jeton ni le CVV ne sont renvoyés. Les prélèvements suivants sont annoncés par e-mail et encaissés à billingTime (fuseau Africa/Casablanca). Si la date de début est aujourd'hui ou antérieure, la première échéance est ouverte immédiatement et renvoyée dans currentCharge. Fournissez un externalId facultatif défini côté client (unique par marchand) pour rendre la création idempotente : un externalId en doublon renvoie l'abonnement existant avec 200 OK.

Schéma · CreateSubscriptionRequest

ChampTypeEmplacementRequisDescription
clientIdstring (uuid)bodyRequisUUID du client à facturer (créez-le d'abord via /v1/clients).
amountnumberbodyRequisMontant à prélever à chaque période, en unités principales de MAD.
descriptionstringbodyRequisDescription affichée sur chaque prélèvement généré.
frequencyenumbodyRequisPériodicité de facturation.Valeurs DAILYWEEKLYMONTHLYYEARLY
startDatestring (date)bodyRequisDate de la première période de facturation (YYYY-MM-DD).
endDatestring (date)bodyOptionnelDate de fin facultative ; sans limite si omise.
channelsarray of enumbodyRequisCanaux utilisés pour notifier chaque prélèvement au client.
externalIdstringbodyOptionnelVotre identifiant d'abonnement, unique par marchand et par environnement. Créer un abonnement avec un externalId déjà existant renvoie l'abonnement existant. Il est renvoyé tel quel dans ExternalId de chaque webhook de paiement d'abonnement, à des fins de rapprochement.
metadataobjectbodyOptionnelAttributs de rapprochement facultatifs, propres au marchand (4 Ko maximum une fois sérialisés), renvoyés tels quels dans metadata à chaque webhook de paiement d'abonnement. Utilisez des identifiants opaques comme customerId ou contractId ; n'y incluez ni données de carte, ni CVV, ni identifiants de connexion, ni données personnelles superflues.
autoPaybooleanbodyOptionnelEnregistre le moyen de paiement après le premier paiement 3DS et prélève automatiquement les périodes suivantes. Vaut true par défaut.
billingTimeLocalTimebodyOptionnelHeure du prélèvement récurrent, fuseau Africa/Casablanca.
billingTime.hourinteger (int32)bodyOptionnel
billingTime.minuteinteger (int32)bodyOptionnel
billingTime.secondinteger (int32)bodyOptionnel
billingTime.nanointeger (int32)bodyOptionnel
reminderDaysBeforeinteger (int32)bodyOptionnelNombre de jours avant un prélèvement automatique pour envoyer un e-mail au client (0-30).
paymentMethodIdstring (uuid)bodyOptionnelUUID facultatif d'un moyen de paiement appartenant au client. S'il est omis, le moyen de paiement par défaut du client est réutilisé lorsqu'il existe ; sinon, le premier checkout enregistre un nouveau moyen de paiement.
GET

Lister les échéances d'un abonnement

Renvoie toutes les échéances (liens de paiement) générées par l'abonnement, période la plus récente en premier.

ChampTypeEmplacementRequisDescription
referencestringpathRequis
GET

Récupérer un abonnement

Récupère un abonnement, les données d'affichage sûres de son moyen de paiement enregistré, l'échéance en cours et l'état du recouvrement. Pour une configuration INCOMPLETE échouée ou un renouvellement PAST_DUE, billingRecovery contient un motif normalisé, l'action attendue du client, le nombre de tentatives, la prochaine relance et la date limite d'annulation ; le JSON d'erreur du fournisseur et les données de carte sensibles ne sont jamais renvoyés.

ChampTypeEmplacementRequisDescription
referencestringpathRequisRéférence de l'abonnement.

Parler à un intégrateur

Une question sur l'intégration ?

Notre équipe technique répond aux intégrateurs, du premier appel en sandbox jusqu'à la mise en production.