Lancer un paiement (mode B)
Mode B (COVERAF encaisse) : lance un paiement Mobile Money. Résultat par notification ou GET /v1/souscriptions/{id}.
POSThttps://api.coveraf.com/v1/souscriptions/{id}/paiement
SignéIdempotentRéponse JSON 201Sandbox et production
Réservé au mode B
La réponse arrive tout de suite avec paiement.statut: en_attente ; le résultat suit par notification ou en consultant la souscription. Voir Mode B.
En sandbox
Le résultat dépend du numéro payeur : 0700000001 réussit, 0700000002 à 0700000004 échouent. Voir Sandbox.
En-têtes
| En-tête | Obligatoire | Valeur |
|---|---|---|
Authorization | oui | Bearer suivi de votre clé API (cvr_test_... ou cvr_live_...). |
Content-Type | oui | application/json |
X-Coveraf-Timestamp | oui | Heure actuelle, horodatage Unix en secondes. |
X-Coveraf-Signature | oui | v1= suivi du HMAC-SHA256 de la requête. Comment signer |
Idempotency-Key | oui | Identifiant unique de l'opération (UUID). Idempotence |
Paramètres de chemin
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
id | texte | oui | Identifiant de la souscription (sou_...). |
Corps de la requête
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
operateur | « orange » | « mtn » | « moov » | « wave » | « djamo » | oui | Opérateur Mobile Money du client. |
telephone_payeur | texte | non | Numéro Mobile Money qui paie, 8 à 15 chiffres. Sans numéro, le client le saisit sur la page lien_paiement. |
url_retour | adresse https | non | Page de votre application où revient le client après paiement (500 caractères maximum). |
Exemple de requête
IDEMPOTENCY_KEY=$(uuidgen) ./coveraf.sh POST /v1/souscriptions/sou_bd4094da89da4a2e0e6078de/paiement '{"operateur":"orange","telephone_payeur":"0700000001","url_retour":"https://app.votre-societe.ci/paiement/retour"}'Les fonctions appelCoveraf, appel_coveraf et le script coveraf.sh signent la requête pour vous : téléchargez-les.
Réponse
{
"id": "sou_f6ac5791c1dd467dd238607f",
"objet": "souscription",
"environnement": "test",
"statut": "en_attente_paiement",
"devis_id": "dev_44cfca8ed08b74ff676b9474",
"montant_a_payer": {
"montant": 12980,
"devise": "XOF"
},
"mode_paiement": "jeko",
"date_effet_prevue": "2026-11-04",
"souscripteur": {
"nom": "KONE",
"prenom": "Awa",
"telephone": "+2250701020304"
},
"reference_partenaire": "CMD-2026-0042",
"paiement": {
"id": "pay_e6bf7dd3fd60f74b08c1fef9",
"statut": "en_attente",
"operateur": "orange",
"montant": 12980,
"lien_paiement": "http://localhost:3005/sandbox/paiement/pay_e6bf7dd3fd60f74b08c1fef9",
"motif_echec": null,
"cree_le": "2026-11-04T17:35:45.931257+00:00"
},
"contrat": null,
"expire_le": "2026-11-19T17:35:42.74+00:00",
"payee_le": null,
"cree_le": "2026-11-04T17:35:43.359143+00:00"
}Description de chaque champ : modèle Souscription.
Erreurs possibles
| Code | HTTP | Signification |
|---|---|---|
mode_paiement_incompatible | 403 | Ce mode de paiement n'est pas celui prévu pour votre compte. |
paiement_deja_en_cours | 409 | Un paiement est déjà en cours pour cette souscription. Attendez son résultat (notification ou GET /v1/souscriptions/{id}). |
souscription_deja_payee | 409 | Cette souscription est déjà payée : son contrat est émis. |
souscription_expiree | 410 | Cette demande de souscription a expiré (son devis n'est plus valable). Demandez un nouveau devis. |
emission_en_cours | 409 | Ce paiement est déjà en cours de traitement. Consultez GET /v1/souscriptions/{id} dans quelques secondes. |
validation | 422 | Certaines données sont manquantes ou incorrectes. Voir erreur.details. |
service_indisponible | 503 | Service momentanément indisponible. Réessayez dans un instant. |
S'y ajoutent les erreurs communes à tous les appels (clé, signature, limite de débit, service) : voir Codes d'erreur.