Back to deblo
deblo

Crédits, FCFA et 6 passerelles de paiement africaines

Tarification en cents USD, 13 devises, Orange Money et M-Pesa, 3 passerelles de paiement, confirmation par webhook et poller de fond. Monétiser un SaaS africain.

Juste A. Gnimavo (Thales) & Claude | March 26, 2026 5 min deblo
EN/ FR/ ES
deblopaiementscréditsfcfaorange-moneystripeafrique

Par Thales & Claude -- CEO & AI CTO, ZeroSuite, Inc.

Quand on construit un produit SaaS pour les États-Unis ou l'Europe, les paiements sont un problème résolu. On intègre Stripe, on configure quelques endpoints de webhook, et on passe à la fonctionnalité suivante. Quand on construit un produit SaaS pour l'Afrique de l'Ouest et Centrale, les paiements sont la fonctionnalité. C'est le problème d'ingénierie le plus difficile, et il reste fragile longtemps après le lancement.

La raison est simple : l'infrastructure de paiement en Afrique subsaharienne est fragmentée entre des dizaines de fournisseurs de mobile money, chacun opérant dans un seul pays, chacun avec sa propre API, son propre format de webhook, son propre calendrier de règlement et ses propres modes de défaillance.

Cet article explique comment nous avons construit le système de crédits et l'infrastructure de paiement pour Deblo.ai.


Le système de crédits : monnaie universelle pour une plateforme IA

Les crédits sont la monnaie universelle à l'intérieur de Deblo. Chaque interaction coûte des crédits, mais le coût varie selon la complexité :

  • Mode K12 (élève) : 1 crédit par question texte, 2 crédits par analyse photo.
  • Mode Pro (professionnel) : tarification par tokens -- 1 crédit pour 3 000 tokens standard, 1 crédit pour 2 000 tokens pour les tâches de raisonnement complexe.
  • Appels vocaux : 5 crédits par minute.

Tarification en cents USD avec affichage en monnaie locale

Tous les prix dans Deblo sont stockés en interne en cents USD. L'alternative -- tarifier directement en FCFA, Naira, Cedi, Shilling et Franc -- signifierait recalculer les prix à chaque mouvement de taux de change. En tarifiant en cents USD et en convertissant à l'affichage, nous avons une source de vérité unique pour la tarification et l'utilisateur voit toujours les prix dans sa monnaie locale.

Le CreditLedger : source de vérité unique

Tôt dans le développement, nous suivions les mouvements de crédits dans plusieurs tables. Cela devint rapidement un cauchemar de débogage. La solution fut le CreditLedger -- une table unique en ajout seul qui enregistre chaque mouvement de crédit, dans n'importe quelle direction, pour n'importe quelle raison. Chaque mouvement -- bonus d'inscription, recharge, utilisation par coupon, utilisation IA, ajustement admin, bonus de parrainage -- passe par une seule fonction.

Crédits gratuits : le moteur de générosité

Nous donnons beaucoup de crédits gratuitement. C'est intentionnel. Le système de crédits gratuits a quatre composantes :

  1. Bonus d'inscription : 200 crédits. Chaque nouvel utilisateur commence avec 200 crédits.
  2. Recharge quotidienne : 30 crédits. Chaque jour à minuit, les crédits gratuits de chaque utilisateur sont réinitialisés à 30.
  3. Bonus IA : 1-5 crédits par interaction. Après chaque échange, l'IA peut attribuer des crédits bonus pour encourager le comportement studieux.
  4. Bonus de parrainage : 150 crédits. Quand un utilisateur parraine un ami qui s'inscrit et fait sa première recharge, les deux reçoivent 150 crédits.

Trois passerelles de paiement, dix pays

Collecter de l'argent en Afrique nécessite plusieurs passerelles de paiement car aucun fournisseur unique ne couvre tous les pays et tous les moyens de paiement. Nous intégrons trois passerelles :

1. Zerofee (0fee.dev) -- Notre passerelle principale pour le mobile money en Afrique de l'Ouest francophone. Zerofee est un agrégateur qui se connecte à Orange Money, Wave, MTN MoMo et d'autres fournisseurs de mobile money.

2. Stripe -- Pour les paiements internationaux (cartes bancaires, Apple Pay, Google Pay) et les utilisateurs de la diaspora.

3. PaiementPro / XPaye -- Une passerelle de paiement africaine francophone qui supporte l'intégration directe du mobile money via un SDK JavaScript. PaiementPro couvre 10 pays avec 16 canaux de paiement.

Quand un utilisateur en Côte d'Ivoire ouvre la page de recharge, il voit Orange Money, MTN MoMo, Moov Flooz et Wave. Un utilisateur au Sénégal voit Orange Money, Free Money, E-Money et Wave.

Confirmation par webhook

Chaque passerelle nous notifie des résultats de paiement via des webhooks. Les gestionnaires de webhook suivent tous le même schéma : vérifier la signature, trouver l'enregistrement CreditPurchase par référence de paiement, créditer l'utilisateur si le paiement a réussi, et journaliser dans le ledger.

Le poller de paiement : parce que les webhooks échouent

Voici la vérité inconfortable sur les webhooks en Afrique : ils échouent. Régulièrement. Se fier uniquement aux webhooks pour la confirmation de paiement signifie que certains utilisateurs paieront de l'argent et ne recevront jamais leurs crédits.

Notre solution est le poller de paiement -- une tâche de fond qui tourne toutes les 30 secondes et vérifie tous les paiements en attente auprès des API des passerelles. Le calendrier de vérification est volontairement front-loaded : les trois premières vérifications surviennent dans les 5 minutes suivant la création du paiement, puis s'espacent à des vérifications horaires, et s'arrêtent entièrement après 24 heures.

Cette approche de double confirmation (webhooks plus polling) a sauvé des dizaines de paiements qui auraient autrement été perdus. Dans notre premier mois d'exploitation, environ 8 % des paiements réussis ont été crédités par le poller plutôt que par le webhook.


Ce que nous avons appris sur les paiements en Afrique

  1. Les webhooks sont nécessaires mais pas suffisants. Ayez toujours un fallback de polling.
  2. Le mobile money n'est pas une seule chose. Orange Money en Côte d'Ivoire et Orange Money au Sénégal sont des systèmes différents.
  3. Tarifez dans la plus petite unité. Stocker les prix en FCFA (sans centimes) ou en cents USD (entiers, pas de virgule flottante) élimine toute une classe de bugs d'arrondi.
  4. Donnez des crédits généreusement. Le coût marginal d'un crédit gratuit est quasi nul, mais la valeur pour l'utilisateur est immense.
  5. Le ledger est sacré. Une fois passés à une seule table CreditLedger, le débogage des problèmes de paiement est passé de « vérifier cinq tables et prier » à « interroger une table et voir l'historique complet ».

Ceci est l'article 6 de 20 dans la série « Comment nous avons construit Deblo.ai ».

Share this article:

Responses

Write a response
0/2000
Loading responses...

Related Articles

Thales & Claude deblo

Le Step Zero ne suffisait pas : comment valider un constructeur sans valider le runtime a fait tomber toutes les sessions vocales de Déblo l’heure où nous avons livré le streaming caméra temps réel

La phase 14 a livré Déblo Eyes — streaming caméra temps réel via LiveKit vers Gemini Live native audio. Le premier deploy a fait tomber toutes les sessions vocales en production en quatre-vingt-dix secondes parce que notre Step 0 avait validé le constructeur sans exercer le runtime. Le build log de comment Déblo a eu des yeux, ce qu’un pré-vol incomplet a coûté, et quels points de polish ont été livrés ou reportés.

33 min May 20, 2026
debloclaude-opus-4.7claude-codegemini-live +25
Thales & Claude deblo

Le tiret cadratin qui a tué la production : comment un slogan marketing dans un header HTTP a fait tomber le chat de Déblo pendant 24 heures

Deux jours avant la soumission App Store, tout le produit chat de Déblo s’est cassé silencieusement. Pas de spinner, pas de toast, aucune erreur dans l’UI — juste un silence radio. L’incident de 24 heures se résumait à un seul « é » dans la valeur d’un header HTTP qui levait une UnicodeEncodeError avant qu’aucune requête vers OpenRouter ne quitte le backend. Post-mortem d’une fausse hypothèse, d’une trace Sentry, et d’un fix de six lignes qui a débloqué le lancement.

30 min May 19, 2026
debloclaude-opus-4.7claude-codeincident +19
Thales & Claude deblo

Six heures, d’une page blanche à la review Apple — Comment nous avons soumis Déblo à l’App Store, en direct

Marche à marche en direct de la soumission de Déblo à l’App Store iOS en six heures : ce que les validateurs d’Apple ont rejeté (un superscript Unicode), ce que nous avons corrigé (un Promotional Text gaspillé sur des marques tierces), et les rouages de l’ASO iOS que presque tout le monde rate.

30 min May 13, 2026
debloclaude-opus-4.7claude-codeapp-store +16