Skip to main content
Utilisez ce chemin quand vous connaissez déjà le client et son numéro Mobile Money — un formulaire dans votre propre application, une migration depuis un autre système, une vente assistée. Pour laisser le client payer lui-même, voir la page hébergée.

L’appel

idempotencyKey est obligatoire et vit dans le corps — à rebours des autres routes d’écriture de Yabetoo, qui prennent un en-tête Idempotency-Key. Un rejeu avec la même clé rend 201 avec l’abonnement existant, sans créer ni facturer quoi que ce soit : c’est la seule protection contre un double abonnement sur un retry réseau.
paymentMethodData.momo est techniquement optionnel pour le validateur, mais un paymentMethodData sans momo fait échouer la demande de paiement : l’abonnement naît unpaid. Fournissez toujours le numéro.

Ce qui se passe

1

Le client est trouvé ou créé

Par customerEmail, sur votre compte. La méthode de paiement fournie est ajoutée et devient sa méthode par défaut — même s’il en avait déjà une.
2

L'abonnement est créé

unpaid sans essai, trialing avec. La période courante démarre maintenant ; sans essai, elle se termine à maintenant + intervalle du premier prix.
3

Sans essai : facture et demande de paiement

Une facture subscription_create est émise pour la première période, et une demande de paiement est poussée sur le numéro du client. L’appel attend la réponse — le client a environ 100 secondes pour approuver sur son téléphone.
4

Résultat

Approuvé → l’abonnement passe active, la facture paid, nextBillingDate est posée. Refusé ou sans réponse → l’abonnement reste unpaid, la facture open.
Avec un essai, rien n’est facturé à la création : l’appel rend immédiatement, et la première demande de paiement partira à la fin de l’essai.

La réponse

Toujours 201, que le paiement ait abouti ou non. Lisez paymentStatus.
201
Quand success est false, canRetry vaut true : régularisez avec retry-payment. Si le client a approuvé après le délai, la relance reconnaît le paiement déjà passé sans lui en demander un second.

Rejeu

Même idempotencyKey sur le même compte → 201, l’abonnement existant, paymentStatus dérivé de son statut courant (paid s’il est active, trial s’il est trialing, son statut sinon). Aucune facture, aucune demande de paiement.

Erreurs

Événements

subscription.created part après la tentative de paiement : data.status vaut donc active, unpaid ou trialing — pas un statut « en cours ». Si le paiement a abouti, vous recevez aussi invoice.paid et payment.completed. Voir Webhooks.