Skip to main content

API Reference

Documentation complète de l'API REST YengaPay.

Base URL​

EnvironnementURL
Productionhttps://api.yengapay.com/api/v1
Sandboxhttps://api.sandbox.yengapay.com/api/v1

Authentification​

Toutes les requêtes API nécessitent une clé API dans le header x-api-key :

curl -X GET "https://api.yengapay.com/api/v1/groups/{groupId}/project/current/{projectId}" \
-H "x-api-key: votre_cle_api"

Méthodes acceptées (par ordre de préférence) :

  • Header x-api-key (recommandé) : -H "x-api-key: {apiKey}"
  • Header Authorization : -H "Authorization: {apiKey}"
  • Query param : ?api_key={apiKey}

Récupérez vos clés API depuis la Console YengaPay.

Format des requêtes​

  • Content-Type : application/json
  • Encoding : UTF-8

Format des réponses​

Succès​

{
"id": "YPPO20250113.1538.38055.7265",
"amount": 5000,
"status": "PENDING",
"destNumber": "+22670123456",
"paymentMethod": "ORANGE_MONEY",
"createdAt": "2024-01-15T10:30:00Z"
}

Erreur​

{
"error": {
"code": "VALIDATION_ERROR",
"message": "Le montant doit être supérieur à 100 XOF",
"details": {
"field": "amount",
"reason": "amount must not be less than 100"
},
"requestId": "req_xyz789abc"
}
}

Codes de statut HTTP​

CodeDescription
200Succès
201Ressource créée
400Requête invalide (paramètres manquants ou incorrects)
401Non authentifié (clé API manquante ou invalide)
403Non autorisé (permissions insuffisantes)
404Ressource non trouvée
405Méthode non autorisée
429Trop de requêtes
500Erreur interne du serveur

Pagination​

Les endpoints de liste supportent la pagination via query params :

GET /groups/{groupId}/project/{projectId}/payout?page=1&perPage=20

Paramètres​

ParamètreTypeDéfautDescription
pageinteger1Numéro de page
perPageinteger20Éléments par page (max: 100)

Réponse paginée​

{
"data": [...],
"meta": {
"page": 1,
"perPage": 20,
"total": 150,
"lastPage": 8
}
}

Rate Limiting​

EnvironnementLimite
Sandbox100 req/min
Production1000 req/min

Headers de réponse :

  • X-RateLimit-Limit : Limite totale
  • X-RateLimit-Remaining : Requêtes restantes
  • X-RateLimit-Reset : Timestamp de réinitialisation (Unix)

Endpoints​

Payment Intent​

Flux d'intégration via page de paiement (Checkout). Créez un PaymentIntent puis redirigez le client vers checkoutPageUrlWithPaymentToken.

MéthodeEndpointDescription
POST/groups/{groupId}/payment-intent/{projectId}Créer un PaymentIntent
GET/groups/{groupId}/payment-intent/project/{projectId}/intent/{id}Récupérer un PaymentIntent

Direct Payment​

Paiements API-to-API sans redirection. Supporte les opérateurs ONE_STEP (OTP immédiat) et TWO_STEP (OTP différé).

MéthodeEndpointDescription
POST/groups/{groupId}/projects/{projectId}/direct-payment/initInitialiser un paiement
POST/groups/{groupId}/projects/{projectId}/direct-payment/init-and-payInitialiser et payer en un seul appel
POST/groups/{groupId}/projects/{projectId}/direct-payment/payDéclencher le paiement
POST/groups/{groupId}/projects/{projectId}/direct-payment/send-otpEnvoyer l'OTP (opérateurs TWO_STEP)
GET/groups/{groupId}/projects/{projectId}/direct-payment/status/{paymentIntentId}Vérifier le statut d'un paiement

Payout​

Envoi d'argent vers des bénéficiaires mobile money depuis un projet de type PAYOUT. Détail complet (frais, cycle de vie, erreurs) : guide Transferts.

MéthodeEndpointDescription
POST/groups/{groupId}/project/{projectId}/payoutCréer un payout
GET/groups/{groupId}/project/{projectId}/payoutLister les payouts
GET/groups/{groupId}/project/{projectId}/payout/statsStatistiques des payouts
GET/groups/{groupId}/project/{projectId}/payout/{payoutId}Récupérer un payout
POST/groups/{groupId}/project/{projectId}/payout/{payoutId}/retryRéessayer un payout échoué
GET/groups/{groupId}/project/{projectId}/payout/configsFrais/limites par opérateur
GET/groups/{groupId}/project/{projectId}/payout/aggregate, /group-byAgrégations pour tableaux de bord

Campaign (Bulk Payout)​

Campagnes de payout en masse. Flux : créer → importer fichier → valider → soumettre → approuver → exécuter. Détail complet : guide Transferts en masse.

MéthodeEndpointDescription
POST/groups/{groupId}/campaigns/{projectId}Créer une campagne
GET/groups/{groupId}/campaigns/{projectId}Lister les campagnes
GET/groups/{groupId}/campaigns/{projectId}/{campaignId}Récupérer une campagne
POST/groups/{groupId}/campaigns/{projectId}/{campaignId}/uploadImporter le fichier de bénéficiaires
POST/groups/{groupId}/campaigns/{projectId}/{campaignId}/validateValider le fichier
POST/groups/{groupId}/campaigns/{projectId}/{campaignId}/submitSoumettre pour approbation
POST/groups/{groupId}/campaigns/{projectId}/{campaignId}/approveApprouver la campagne
POST/groups/{groupId}/campaigns/{projectId}/{campaignId}/rejectRejeter la campagne
POST/groups/{groupId}/campaigns/{projectId}/{campaignId}/cancelAnnuler la campagne
GET/groups/{groupId}/campaigns/{projectId}/{campaignId}/transactionsTransactions de la campagne
GET/groups/{groupId}/campaigns/{projectId}/{campaignId}/statsStatistiques de la campagne
POST/groups/{groupId}/campaigns/{projectId}/{campaignId}/retry-failedRéessayer les transactions échouées
DELETE/groups/{groupId}/campaigns/{projectId}/{campaignId}Supprimer une campagne (statut non engagé)
POST/groups/{groupId}/campaigns/{projectId}/{campaignId}/cloneCloner une campagne
GET/groups/{groupId}/campaigns/{projectId}/{campaignId}/export, /summaryExport CSV / rapport récapitulatif
PATCH/groups/{groupId}/campaigns/{projectId}/{campaignId}/sms-notificationConfigurer les notifications SMS
GET/groups/{groupId}/campaigns/{projectId}/fee-schedule, /analyticsBarème de frais / analytics

Cash Out​

Retraits de fonds depuis un projet Merchant vers un compte mobile money.

MéthodeEndpointDescription
POST/groups/{groupId}/cash-outCréer un retrait
GET/groups/{groupId}/cash-out/{projectId}Lister les retraits
GET/groups/{groupId}/cash-out/{projectId}/statsStatistiques des retraits

Project​

Gestion des projets, consultation du solde et configuration des webhooks de paiement.

MéthodeEndpointDescription
POST/groups/{groupId}/projectCréer un projet
GET/groups/{groupId}/projectLister les projets
GET/groups/{groupId}/project/current/{projectId}Récupérer les infos du projet (solde inclus)
PATCH/groups/{groupId}/project/generate-webhook-secret/{projectId}Générer le secret webhook de paiement

Notifications de paiement (Webhooks)​

Les notifications de paiement sont configurées au niveau du projet via PATCH /groups/{groupId}/project/:projectId avec les champs :

  • merchantTransactionWebhoookUrl : URL HTTPS de votre endpoint
  • isTransactionWebhookActivated : true pour activer les notifications

Lorsqu'un paiement est confirmé (payment.success), YengaPay envoie une requête POST à votre URL avec le payload complet du paiement et le header x-webhook-hash contenant la signature HMAC-SHA256 du payload.

# Vérification de la signature (Node.js)
const hash = crypto.createHmac('sha256', webhookSecret)
.update(JSON.stringify(payload))
.digest('hex');
if (hash !== req.headers['x-webhook-hash']) throw new Error('Signature invalide');

Opérateurs supportés​

Paiements entrants (PayIn)​

CodeNomPaysType
ORANGEOrange MoneyBFONE_STEP
MOOVMoov MoneyBFTWO_STEP
TELECELTelecel MoneyBFONE_STEP
SANKMSank MoneyBFTWO_STEP
CORISMCoris MoneyBFTWO_STEP

Paiements sortants (Payout)​

ValeurNom
ORANGE_MONEYOrange Money
MOOV_MONEYMoov Money
TELECEL_MONEYTelecel Money
SANK_MONEYSank Money
CORIS_MONEYCoris Money
WAVEWave
MTN_MOMOMTN Mobile Money

La disponibilité de chaque valeur dépend du countryCode du destinataire — voir la matrice pays/opérateurs du guide Transferts.

Documentation interactive​

Testez les endpoints directement via Swagger :

SDKs​

Nous recommandons d'utiliser nos SDKs officiels :