Facturation
Zendou fonctionne par crédits prépayés : 1 crédit = 1 email accepté par l'API. Pas d'abonnement, pas de carte bancaire internationale - la recharge se fait en Orange Money ou MTN MoMo.
1 crédit = 1 email
Chaque email accepté par POST /v1/emails (statut queued) débite un crédit au moment de l’acceptation de la requête - pas à la livraison. Un email bloqué par la liste de suppression (statut suppressed) n’est jamais facturé. Votre solde est simplement la somme de tous les mouvements de crédits de votre compte : recharges approuvées et crédits offerts, moins envois facturés.
Packs disponibles
| Pack | Crédits | Prix | Achetable |
|---|---|---|---|
| Découverte | 1 000 | Offert à la confirmation de l’email | Non |
| Starter | 15 000 | 50 000 GNF | Oui |
| Growth | 30 000 | 90 000 GNF | Oui |
Prix indicatifs, susceptibles d’évoluer. Le catalogue à jour est disponible via GET /v1/billing/packs.
Les crédits n'expirent pas
Lire son solde par l’API
GET /v1/billing/balance accepte une clé API (Authorization: Bearer zd_live_...) en plus de la session du tableau de bord : une application peut donc surveiller elle-même son solde. Toute clé active du compte suffit. Une clé inconnue ou révoquée donne une réponse 401, un compte suspendu une réponse 403.
curl https://api.zendou.app/v1/billing/balance \ -H "Authorization: Bearer zd_live_votre_cle"
{
"balance": 14250,
"totalPurchased": 15000,
"totalGifted": 1000,
"totalConsumed": 1750
}Alerte de solde bas
Zendou envoie un email au titulaire du compte lorsque le solde passe sous 10 % du solde atteint juste après le dernier crédit positif (recharge, crédit offert ou bonus), avec un minimum de 50 crédits. L’alerte part une seule fois par passage sous ce seuil, et se réarme au crédit suivant. À zéro crédit, les envois sont refusés : réponse 402 pour l’API, refus aussi côté relais SMTP.
Recharger par Orange Money ou MTN MoMo
Zendou n’a pas d’accès automatisé aux API Orange Money et MTN MoMo : la recharge se fait en trois temps.
- 1
Effectuez le transfert
Depuis votre application Orange Money ou MTN MoMo, transférez le montant du pack choisi vers le numéro Zendou indiqué sur l’écran de recharge du tableau de bord. Conservez la référence de transaction fournie par l’opérateur (SMS de confirmation).
- 2
Déclarez la recharge
Renseignez le pack, la méthode, votre numéro et la référence de transaction. La demande est créée avec le statut
PENDING. - 3
Un administrateur valide la demande
Après rapprochement avec le transfert reçu, la demande passe à
APPROVEDet les crédits sont ajoutés à votre solde - ou àREJECTED, avec un motif, si le transfert n’a pas pu être rapproché.
curl -X POST https://api.zendou.app/v1/billing/topup-requests \
-H "Content-Type: application/json" \
--cookie "zendou_session=..." \
-d '{
"packId": "starter",
"method": "ORANGE_MONEY",
"phoneNumber": "+224 620 00 00 00",
"transactionRef": "OM.2601.2201.A12345"
}'{
"id": "clx1a2b3c4d5",
"packId": "starter",
"credits": 15000,
"amountGnf": 50000,
"method": "ORANGE_MONEY",
"phoneNumber": "+224 620 00 00 00",
"transactionRef": "OM.2601.2201.A12345",
"status": "PENDING",
"rejectionReason": null,
"createdAt": "2026-08-11T10:32:00.000Z"
}Une même référence de transaction ne peut avoir qu’une seule demande en attente à la fois - une seconde tentative avec la même référence répond 409 Conflict.
Endpoints de facturation
| Endpoint | Description |
|---|---|
| GET /v1/billing/balance | Solde actuel, total acheté, total offert, total consommé. |
| GET /v1/billing/packs | Catalogue des packs disponibles. |
| GET /v1/billing/entries | Historique paginé des mouvements de crédits (recharges, envois). |
| POST /v1/billing/topup-requests | Déclare une recharge Mobile Money en attente de validation. |
Ces endpoints sont authentifiés par la session du tableau de bord (cookie), pas par une clé API.
Limite journalière
Indépendamment du solde de crédits, chaque compte a une limite d’envois par jour (comptés depuis minuit UTC), qui protège la réputation d’envoi de la plateforme entière pendant qu’un compte fait ses preuves. Elle monte automatiquement, sans démarche de votre part, dès que l’ancienneté et le volume cumulé sont atteints :
| Condition | Limite journalière |
|---|---|
| Compte nouvellement créé | 200 emails / jour |
| 3 jours d'ancienneté et 100 emails envoyés au total | 1 000 emails / jour |
| 7 jours d'ancienneté et 1 000 emails envoyés au total | 5 000 emails / jour |
| 30 jours d'ancienneté et 10 000 emails envoyés au total | 20 000 emails / jour |
La limite ne redescend jamais d’elle-même ; seule une suspension du compte pour réputation dégradée coupe les envois. Si vous atteignez la limite du jour, POST /v1/emails répond 429 jusqu’au lendemain.