Introduction
Cette API vous permet de rembourser vos partenaires (clients, fournisseur etc..) via MTN Money. Une opération de remboursement est réalisée en utilisant les informations fournies dans votre demande, et une réponse concernant le traitement de cette demande est envoyée à l’URL que vous avez spécifiée. A la fin de cette documentation vous avez des exemples concrets faits avec Postman.
Si vous n’avez pas ces informations , n’hésitez pas à nous contacter.
Pour tout besoin d’assistance vous pouvez nous contacter directement:
Nom: Support Paynote,
Tél: 243 232 240 poste 6054
Email: support-paynote@y-note.cm
Notre site web : https://www.y-note.cm/
Etape 1: Création d’une requête de remboursement
Pour effectuer un Cashout (remboursement), utilisez le jeton sur le point de terminaison https://omapi.ynote.africa/prod/refund avec le type d’authentification Bearer Token. Ensuite, saisissez le ‘access_token’ que vous avez reçu lors de la dernière requête dans la case à côté de « Token » qui s’affiche à droite.

Passer ensuite le corps de la requête en json dans body (se trouve juste en bas de l’URL de la requête)
{
« customerkey »:« customerkey« ,
« customersecret »:« customersecret« ,
« webhook »:« webhook« ,
« amount »:« amount« ,
« refund_method »: « refund_method« ,
« final_customer_phone »:« final_customer_phone« ,
« final_customer_name »:« final_customer_name« ,
« fees_included »:« fees_included« ,
« payer_message »:« payer_message«
}
N/B: – Il est conseillé de copier et coller exactement le texte ci-dessus et juste changer manuellement les valeurs des différents attributs.
A noter que les paramètres ‘customerkey’ et ‘customersecret’ vous ont été communiqués par mail avec les accès du token ci-dessus
Voici un aperçu:

Explication des différents paramètres
| Paramètres | Type | Description | Exemple |
| access_token | Bearer | access_token récupéré plus haut |
eVraWQiOiJcL2NucXVJYjNqaTJnRDBKYXVR UGlCdlc0QVpjTmszbTV3b3lQY0VwM3pNVT0……… |
| customerkey | Chaîne de caractère | Login de l’utilisateur (communiqué par mail) | knnWJwrxaVgHzXQSloPePxAAwavB |
| customersecret | Chaîne de caractère | Mot de passe de l’utilisateur (communiqué par mail) | knnWJwrxaVgHzXQSloPePxAAwavB |
| webhook | Chaîne de caractère | L’url de réception de la notification | https://www.y-note.cm/notification |
| amount | Chaîne de caractère | Le montant de l’opération, les flottants ne sont pas autorisés. il faut noter que la commission contractuelle sera soustraite du montant que vous souhaitez rembourser, pour un remboursement de 1000 FCFA par exemple, le client recevra 979 FCFA | 100 |
| refund_method | Chaine de caractère | La méthode de remboursement MTN. Pour les remboursements par MTN , la valeur est toujours “MTN_MOMO_CMR” | MTN_MOMO_CMR |
| final_customer_phone | Chaîne de caractère | le numéro de téléphone du bénéficiaire | 67XXXXXXX |
| final_customer_name | Chaîne de caractère | le nom du bénéficiaire | daniel Ngatcheussi |
| fees_included | Chaîne de caractère | Ce paramètre est non obligatoire et permet de calculer automatiquement la commission pour vous: Si ce paramètre n’est pas présent ou s’il est renseigné et vaut “Yes” alors la commission contractuelle sera simplement déduite de votre solde MI. Si ce paramètre vaut “No” alors le montant de la commission sera automatiquement calculé et prélevé du compte du client. Exemple: pour un remboursement de 1000 FCFA, si le paramètre vaut “Yes” votre compte sera débité de 22F afin que le client reçoive exactement 1000 FCFA, par contre si le paramètre vaut “No”, cela suppose que vous avez considéré un montant de 21F dès le départ et le client recevra 979 F CFA | “Yes” / “No” |
| payer_message | Chaîne de caractère | Ce paramètre permet de rajouter un message dans le SMS de confirmation que votre destinataire recevra | Ref12345678 |
La donnée renvoyée par cet appel est un dictionnaire sous la forme:
{
« MessageId »: « MessageId »,
« QueueId »: {
« MessageId »: « MessageId »
}
}
Il faut noter que le paramètre MessageId (le premier, pas celui dans QueueId) vous permettra plus tard de retrouver le statut de votre transaction à tout moment, nous y reviendrons plus bas dans la documentation.
Etape 2:Réponse de l’API sur le webhook
L’API renvoie la réponse de traitement de chaque demande sur l’URL spécifié dans le paramètre webhook.
N/B : Si vous n’avez pas encore d’URL de notification
– Vous pouvez aller sur cette page pour créer un webhook et copier le lien pour la mettre dans la requête de remboursement (paramètre webhook) afin de visualiser les réponses de traitements des requêtes qui sont transmises.

– Si vous avez cliqué sur le lien pour créer un webhook, après la création, vous allez être renvoyé sur cette page mais sans les données que vous voyez (les requêtes POST avec leurs données qui sont enfaite le retour du traitement de la requête de remboursement, qui a été transmis ici parce qu’on a copier l’URL en haut de l’écran pour l’insérer comme paramètre webhook dans le body de notre requête de remboursement).
Après avoir copié l’URL de votre propre webhook et copier le lien dans le paramètre webhook de votre requête de remboursement, chaque fois qu’une requête est traité, le retour va être envoyé ici avec les informations correspondants
La table ci-dessous fournit des détails sur les réponses renvoyées.
| Codes réponse | body | Description |
| Missing body | Le corps de la requête est manquant. | |
| The incoming token has expired | Le jeton a expiré, il faut récupérer un autre jeton. | |
| Unauthorized | L’utilisateur n’est pas autorisé à effectuer la demande, vérifier que l’URL est correcte, vérifier que vous avez fourni un access_token avec le bon type Bearer | |
| 200 | status: SUCCESSFUL | La demande a abouti et des informations sur le résultat se trouvent dans le corps de la réponse et peut être récupéré par le développeur sur le webhook spécifié. |
| 5011 | Error on Customer Key | Le nom d’utilisateur n’est pas renseigné. |
| 5012 | Error on Customer Secret | Le mot de passe n’est pas renseigné. |
| 5013 | Error on Customer Key / Customer Secret | Le customer Key et le Customer Secret ne correspondent pas |
| 5015 | Error on webhook | Le webhook n’est pas renseigné. |
| 5016 | Error on amount | Le montant n’est pas renseigné. |
| 5017 | Error on Final Customer Phone | Le numéro du bénéficiaire n’est pas renseigné. |
| 5018 | Error on Final Customer Name | Le nom du bénéficiaire n’est pas renseigné. |
| 5019 | Le contenu de l’erreur variera, cependant il sera affiché dans le paramètre body. | Une erreur est survenue sur le traitement d’une opération. Le contenu du paramètre ErrorMessage vous donnera les détails sur l’erreur. |
| 5020 | Floating numbers not allowed | Le montant renseigné contient des virgules. |
| 50201 | The amount is a string and should be inside double quotes | Vous devez definis le montant comme un “string” au sein de votre requete |
| 50202 | Amount is too big and should be below 500.000 Fcfa | Le montant que vous souhaitez envoyer est trop important et doit etre inferieur a 500.000 Fcfa |
| 50203 | Amount is too small and should be more than 2 Fcfa’ | Le montant demandé est trop petit et doit être de plus de 2 Fcfa |
| 50204 | Problem on disbursment rate calculation | Le calcul des frais sur votre transaction a échoué. Veuillez contacter le support SVP. |
| 50205 | Amount available in your account is too low | Le montant disponible dans votre sous-compte MTN n’est pas suffisant pour effectuer votre opération. |
| 5021 | Error on refund method | La méthode de remboursement n’est pas renseignée. |
| 5022 | Unknown refund method | La méthode de remboursement n’est pas correcte. |
| 5023 | Le signe de l’indicatif n’est pas autorisé sur le numéro du bénéficiaire, les exemples de numéros valides sont: 692954629, 237692954629 | Le signe de l’indicatif n’est pas autorisé sur le numéro du bénéficiaire. |
| 5024 | Le numéro du bénéficiaire ne doit contenir que des chiffres, les exemples de numéros valides sont: 692954629, 237692954629 | Le numéro du bénéficiaire ne doit contenir que des chiffres. |
| 5025 | Le numéro du bénéficiaire n’a pas la longueur requise, les exemples de numéros valides sont: 692954629, 237692954629 | Le numéro du bénéficiaire n’a pas la longueur requise. |
| 5026 | Le numéro du bénéficiaire n’est pas un numéro mobile Camerounais valide, les exemples de numéros valides sont: 692954629, 237692954629 | Le numéro du bénéficiaire n’est pas un numéro orange valide. |
| 5027 | fees_included should be either « Yes » or « No » | Le paramètre “fees_included” doit être soit “Yes”, soit “No” |
| 5031 | Error Customer Key has never allowed MTN Cmr Cashout | Votre compte MTN n’a jamais été autorisé pour le Cashout MTN. Veuillez contacter le support svp. |
| 5032 | Error Customer Key is currently not allowed MTN Cmr Cashout |
Votre compte MTN n’est pas autorisé pour le cashout actuellement. Veuillez contacter le support SVP. |
Etape 3:Statut de la transaction
Afin de vérifier à tout moment le statut d’une transaction faite, vous devez récupérer de nouveau un acces_token sur l’url https://omapi-token.ynote.africa/oauth2/token en fournissant l’id et le secret, vous recevrez un acces_token avec le type et sa durée de validité comme c’était le cas lorsqu’il s’agissait du acces_token pour la requête de remboursement.
Ensuite faire un GET sur l’url
https://omapi.ynote.africa/prod/refund/status/id id correspondant au paramètre MessageId renvoyé lors du POST sur l’url de remboursement.
Les paramètres à fournir sont d’abord le access_token de type Bearer ensuite le corps de la requête en json (Body):
{
« customerkey »:« customerkey »,
« customersecret »:« customersecret »,
« refund_method »: « MTN_MOMO_CMR »
}
N/B: Souvenez-vous de l’attribut MessageId (réponse de la requête précédente), c’est donc dans le body ci-dessus que vous allez mettre cette valeur
Voici un exemple de réponse lors de l’appel a cet API:
{
« statusCode »: 200,
« body »: « Disbursment Request Status Accepted »,
« ErrorMessage »: « »,
« Status »: « SUCCESSFUL »,
« parameters »: {
« operation »: « Get Status Disbursment Request Mtn »,
« currency »: « XAF »,
« amount »: « 2000 »,
« referenceId »: « XXXXXXXX-3a26-4cdc-9247-XXXXXXXXXXXX »,
« final_customer_name »: « daniel Ngatcheussi »,
« final_customer_phone »: « 67XXXXXXX »,
« notifUrl »: « https://webhook.site/XXXXXXXX-87d6-44ad-b9db-12d3f4e407cb »
},
« CreateAt »: « 04-09-2024 12:56:53 »,
« MessageId »: « XXXXXXXX-f8a8-4203-83e3-XXXXXXXXXXXX »
}
Description des paramètres:
| parameters | Il s’agit des paramètres initialement envoyés par l’utilisateur. |
| MessageId | Il s’agit du paramètre qui permet de récupérer le statut de la transaction a tout moment. |
La table ci-dessous décrit les autres possibilités de réponse en cas d’erreur :
| Codes réponse | body | Description |
| Missing body | La donnée reçue n’a pas de corps, il faut renseigner le customer_key ainsi que le customer_secret | |
| 502 | Aucune requete avec ce Message_id | Aucune transaction ne correspond à l’ID spécifié, vérifier que l’ID est correct. |
| 503 | La transaction ne correspond pas à ce customer_key | La transaction que vous demandez ne correspond pas au customer_key que vous avez transmis |
| 5011 | Error on Customer Key | Le nom d’utilisateur n’est pas renseigné. |
| 5012 | Error on Customer Secret | Le mot de passe n’est pas renseigné. |
| 5013 | Unauthorized | L’utilisateur n’est pas autorisé, vérifiez que le customer key et le customer secret correspondent |
| 5031 | Error Customer Key has never allowed MTN Cmr Cashout | Votre compte MTN n’a jamais été autorisé pour le Cashout MTN. Veuillez contacter le support svp. |
| 5032 | Error Customer Key is currently not allowed MTN Cmr Cashout |
Votre compte MTN n’est pas autorisé pour le cashout actuellement. Veuillez contacter le support SVP. |
Les différents statuts d’une transaction peuvent être:
- SUCCESSFUL
- INITIATED
- PENDING
- FAILED
- EXPIRED
Etape 4 :Voir notre exemple dan postman
Nous avons préparé un exemple complet de ces requêtes dans postman, cliquez Ici pour voir .
Et voila , vous avez maintenant implémenté l’API de remboursement MTN Mobile Money vous permettant de Rembourser vos partenaires (clients,fournisseur etc..).
Cette API MTN Mobile Money est valable au Cameroun et permet de bénéficier d’une souplesse dans les décaissements inégalé.
Vous avez une activité ? Vous souhaitez faire payer vos clients par Orange Money au Cameroun ?
Y-Note est Agrégateur Orange Money Cameroun officiel depuis 2018. Accompagnant des centaines de eCommerçant au Cameroun, nous proposons la mise en place de solution d’encaissement et de remboursement Orange Money.