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 moins envois facturés.
Packs disponibles
| Pack | Crédits | Prix | Achetable |
|---|---|---|---|
| Découverte | 1 000 | Offert à l’inscription | Non |
| Starter | 10 000 | 25 000 GNF | Oui |
| Growth | 30 000 | 60 000 GNF | Oui |
| Pack 5 000 | 5 000 | 15 000 GNF | Oui |
Prix indicatifs, susceptibles d’évoluer. Le catalogue à jour est disponible via GET /v1/billing/packs.
Les crédits n'expirent pas
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.dev/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": 10000,
"amountGnf": 25000,
"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 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.