MF Mamoni Finance Documentation API v2API Documentation v2
ExplorerExplore

Documentation techniqueTechnical documentation

API DAP Mamoni Finance

Cette documentation explique comment un partenaire peut utiliser les API Mamoni Finance pour alimenter son compte DAP, puis crediter automatiquement et de maniere securisee les comptes bancaires de ses correspondants dans notre microfinance.This documentation explains how a partner can use Mamoni Finance APIs to fund its DAP account, then securely and automatically credit its correspondents' bank accounts within our microfinance.

EndpointsEndpoints
12
ModulesModules
2

Contexte metierBusiness context

Compte partenairePartner account

Le compte partenaire represente l'organisation qui integre les API. Il porte les utilisateurs, les cles API et les permissions autorisees pour executer des operations DAP.The partner account represents the organization integrating the APIs. It owns users, API keys, and the permissions allowed to run DAP operations.

Compte DAPDAP account

Le compte DAP, ou Disposition a Payer, est le compte technique attribue par Mamoni Finance au partenaire. Il sert de reserve disponible pour payer ou crediter les correspondants du partenaire.The DAP account is the technical payable account assigned by Mamoni Finance to the partner. It acts as the available balance used to pay or credit the partner's correspondents.

CorrespondantCorrespondent

Un correspondant est le beneficiaire final du partenaire dans la microfinance. Lors d'un Push To Bank, son compte Mamoni est credite a partir du compte DAP du partenaire.A correspondent is the partner's final beneficiary within the microfinance. During a Push To Bank operation, the correspondent's Mamoni account is credited from the partner's DAP account.

Mouvements disponiblesAvailable movements

Move From Bank sert a alimenter le compte DAP depuis un compte bancaire du partenaire. Push To Bank sert a debiter le compte DAP pour crediter le compte Mamoni d'un correspondant.Move From Bank funds the DAP account from one of the partner's bank accounts. Push To Bank debits the DAP account to credit a correspondent's Mamoni account.

Parcours d integrationIntegration flow

  1. 1 Le partenaire ouvre un compte chez Mamoni Finance et recoit son compte DAP ainsi que ses acces API.The partner opens an account with Mamoni Finance and receives its DAP account and API access.
  2. 2 L integration cree ou recupere une cle API, puis genere un token Bearer temporaire pour appeler les endpoints proteges.The integration creates or retrieves an API key, then issues a temporary Bearer token for protected endpoints.
  3. 3 Avant une operation, le systeme partenaire verifie le compte bancaire concerne afin d eviter les credits vers un compte invalide.Before an operation, the partner system verifies the relevant bank account to avoid credits to an invalid account.
  4. 4 Pour alimenter la reserve DAP, le partenaire initie un Move From Bank puis confirme l operation avec le PIN et l OTP si le parcours le demande.To fund the DAP balance, the partner initiates Move From Bank and confirms with PIN and OTP when required.
  5. 5 Pour payer un correspondant, le partenaire initie un Push To Bank vers le compte Mamoni du beneficiaire et conserve la reference retournee pour le suivi.To pay a correspondent, the partner initiates Push To Bank toward the beneficiary Mamoni account and keeps the returned reference for tracking.
  6. 6 En cas de statut en attente ou d incident temporaire, le partenaire relance la verification de la transaction avec sa reference.If a transaction is pending or temporarily interrupted, the partner retries verification using the transaction reference.

Demarrage de l integrationIntegration startup

  1. 1 Recevoir l URL API, les identifiants partenaire et les permissions autorisees par Mamoni Finance.Receive the API URL, partner credentials, and permissions authorized by Mamoni Finance.
  2. 2 Se connecter une premiere fois pour administrer les cles API du partenaire.Log in once to administer the partner API keys.
  3. 3 Creer une cle API nommee selon l application appelante et stocker son secret dans un coffre securise.Create an API key named after the calling application and store its secret in a secure vault.
  4. 4 Generer un token API avec la cle publique et le secret avant les appels automatiques.Issue an API token with the public key and secret before automated calls.

Crediter un correspondantCredit a correspondent

  1. 1 Verifier le compte Mamoni du correspondant avec Find-account.Verify the correspondent Mamoni account with Find-account.
  2. 2 Initier Push To Bank avec le compte a crediter, le montant et le motif metier.Initiate Push To Bank with the account to credit, amount, and business reason.
  3. 3 Conserver la reference de transaction pour le rapprochement, le support et les reprises.Keep the transaction reference for reconciliation, support, and recovery.
  4. 4 Relancer la verification si la transaction reste en traitement.Retry verification if the transaction remains in processing.

Alimenter le compte DAPFund the DAP account

  1. 1 Choisir le compte bancaire du partenaire a debiter.Choose the partner bank account to debit.
  2. 2 Initier Move From Bank avec le montant a transferer vers le compte DAP.Initiate Move From Bank with the amount to transfer to the DAP account.
  3. 3 Confirmer avec le PIN, puis valider l OTP lorsque l API le demande.Confirm with PIN, then validate the OTP when required by the API.
  4. 4 Attendre le statut SUCCESS avant de considerer les fonds disponibles sur le compte DAP.Wait for SUCCESS before considering the funds available on the DAP account.

Authentification et securiteAuthentication and security

Ne stockez jamais les mots de passe, PIN, OTP, secrets API ou tokens Bearer en clair dans vos journaux applicatifs.Never store passwords, PINs, OTPs, API secrets, or Bearer tokens in clear text in application logs.

Utilisez HTTPS en production et limitez les cles API aux serveurs autorises du partenaire.Use HTTPS in production and limit API keys to the partner servers allowed to call the API.

Traitez les reponses 422 comme des erreurs de validation recuperables: corrigez le champ indique dans errors.* avant de rejouer l appel.Treat 422 responses as recoverable validation errors: fix the field indicated in errors.* before replaying the call.

Conservez les references de transaction et les bank_uuid: elles sont necessaires pour confirmer, valider, relancer ou rapprocher une operation.Keep transaction references and bank_uuid values: they are required to confirm, validate, retry, or reconcile an operation.

Avant de crediter un correspondant, verifiez toujours le compte de destination et le solde disponible sur le compte DAP selon votre processus interne.Before crediting a correspondent, always verify the destination account and the available DAP balance according to your internal process.

Permissions APIAPI permissions

accounts:read transactions:read transactions:write beneficiaries:read beneficiaries:write reminders:read reminders:write collect:read collect:write

Parametres d integrationIntegration parameters

ParametreParameter Exemple ou valeur attendueExample or expected value UsageUsage
base_url https://api.mamoni.finance URL de base communiquee par Mamoni Finance pour l environnement de test ou de production.Base URL provided by Mamoni Finance for the test or production environment.
user_token Fourni ou renseigne pendant l integrationProvided or configured during integration Token Bearer obtenu apres connexion, utilise pour administrer les cles API du compte partenaire.Bearer token obtained after login, used to administer API keys for the partner account.
access_key Fourni ou renseigne pendant l integrationProvided or configured during integration Cle publique API du partenaire, envoyee dans le header X-Access-Key pour generer un token API.Partner API public key sent in the X-Access-Key header to issue an API token.
access_secret Fourni ou renseigne pendant l integrationProvided or configured during integration Secret associe a la cle API. Il est affiche une seule fois et doit rester cote serveur.Secret attached to the API key. It is shown once and must remain server-side.
api_token Fourni ou renseigne pendant l integrationProvided or configured during integration Token Bearer temporaire utilise pour appeler les endpoints DAP proteges.Temporary Bearer token used to call protected DAP endpoints.
api_key_id Fourni ou renseigne pendant l integrationProvided or configured during integration Identifiant de la cle API, utile pour lister, auditer ou revoquer une cle.API key identifier, useful to list, audit, or revoke a key.
transaction_reference Fourni ou renseigne pendant l integrationProvided or configured during integration Reference retournee par une operation DAP, a conserver pour le suivi et les relances.Reference returned by a DAP operation, kept for tracking and retries.
bank_uuid Fourni ou renseigne pendant l integrationProvided or configured during integration Identifiant bancaire retourne pendant un flux Move From Bank, requis pour la confirmation PIN ou OTP.Bank identifier returned during a Move From Bank flow, required for PIN or OTP confirmation.

ModuleModule

Acces et securite APIAPI access and security

7 EndpointsEndpoints
POST /api/v2/client/auth/login

Connexion partenairePartner login

Authentifie un utilisateur partenaire et retourne un token Bearer pour administrer les acces API.Authenticates a partner user and returns a Bearer token to administer API access.

Aucune session requiseNo session required

DescriptionDescription

Connexion partenaire

Cet endpoint verifie le numero de telephone et le mot de passe d un utilisateur rattache au compte partenaire. Il sert principalement a ouvrir une session d administration pour creer, lister ou revoquer les cles API.

En cas de succes, la reponse contient un token Bearer, son type et sa date d expiration. Transmettez ce token dans Authorization: Bearer <token> uniquement pour les endpoints d administration qui demandent une session utilisateur.

Pour les traitements automatiques serveur a serveur, utilisez ensuite le flux de cle API afin de generer un token API dedie.

Partner login

This endpoint validates the phone number and password of a user attached to the partner account. It is mainly used to open an administration session to create, list, or revoke API keys.

On success, the response contains a Bearer token, its type, and expiration date. Send it as Authorization: Bearer <token> only on administration endpoints that require a user session.

For automated server-to-server processing, use the API key flow to issue a dedicated API token.

HeadersHeaders

CleKey ValeurValue
Accept application/json
Content-Type application/json
Authorization Bearer <api_token>

Parametres du bodyBody parameters

ChampField TypeType RequisRequired ExempleExample
phone_number string OuiYes 690000000
password string OuiYes mot_de_passe_partenaire

RequeteRequest

{
  "phone_number": "690000000",
  "password": "mot_de_passe_partenaire"
}

Reponses observeesObserved responses

401 OK

Numéro de téléphone ou mot de passe incorrect

{
  "success": false,
  "message": "Numéro de téléphone ou mot de passe incorrect",
  "data": [],
  "status": 401
}
200 OK

Connexion réussie

{
  "success": true,
  "message": "Connexion réussie",
  "data": {
    "user": {
      "id": 3,
      "client_id": 5,
      "name": "Client Mamoni",
      "email": "client@example.com",
      "phone_number": "690000000",
      "operation_code": null,
      "email_verified_at": null,
      "two_factor_secret": "sk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "two_factor_recovery_codes": null,
      "two_factor_confirmed_at": null,
      "created_at": "2025-09-13T14:15:43.000000Z",
      "updated_at": "2026-05-02T11:15:59.000000Z",
      "deleted_at": null,
      "beneficiaries": [
        {
          "id": 91,
          "user_id": 3,
          "type": "Téléphone",
          "name": "Don",
          "phone_number": "690000000",
          "account_number": null,
          "matricule": null,
          "created_at": "2025-12-10T14:53:46.000000Z",
          "updated_at": "2025-12-10T14:53:46.000000Z"
        }
      ],
      "reminders": []
    },
    "token": "<bearer-token>",
    "token_type": "Bearer",
    "expires_at": "2027-05-04T20:21:00.000000Z",
    "beneficiaries": [
      {
        "id": 91,
        "user_id": 3,
        "type": "Téléphone",
        "name": "Don",
        "phone_number": "690000000",
        "account_number": null,
        "matricule": null,
        "created_at": "2025-12-10T14:53:46.000000Z",
        "updated_at": "2025-12-10T14:53:46.000000Z"
      }
    ],
    "reminders": []
  },
  "status": 200
}
POST /api/v2/client/api-access-keys

Creer une cle API partenaireCreate partner API key

Cree une cle API rattachee au partenaire et retourne le secret une seule fois.Creates an API key attached to the partner and returns the secret only once.

Bearer utilisateur requisUser Bearer token required

DescriptionDescription

Creation d une cle API

Une cle API identifie l application partenaire qui appelle Mamoni Finance: ERP, plateforme de paiement, back-office ou service de paiement automatique.

L endpoint doit etre appele avec le token utilisateur obtenu lors de la connexion partenaire. La reponse retourne une cle publique (public_key) et un secret. Le secret n est affiche qu une seule fois: stockez le immediatement dans un coffre de secrets ou une variable d environnement serveur.

N utilisez pas la meme cle pour tous les environnements. Creez des cles separees pour test, preproduction et production afin de pouvoir revoquer un acces sans interrompre les autres integrations.

API key creation

An API key identifies the partner application calling Mamoni Finance: ERP, payment platform, back office, or automated payout service.

Call this endpoint with the user token obtained from partner login. The response returns a public key (public_key) and a secret. The secret is shown only once: store it immediately in a secret vault or server-side environment variable.

Do not use the same key for every environment. Create separate keys for test, staging, and production so one access can be revoked without interrupting other integrations.

HeadersHeaders

CleKey ValeurValue
Accept application/json
Authorization Bearer <user_token>

Parametres du bodyBody parameters

ChampField TypeType RequisRequired ExempleExample
name string OuiYes Integration ERP Partenaire

RequeteRequest

{
  "name": "Integration ERP Partenaire"
}

Reponses observeesObserved responses

422 Unprocessable Content

The name field is required.

{
  "message": "The name field is required.",
  "errors": {
    "name": [
      "The name field is required."
    ]
  }
}
201 OK

Clé API créée avec succès. Le secret ne sera affiché qu’une seule fois.

{
  "success": true,
  "message": "Clé API créée avec succès. Le secret ne sera affiché qu’une seule fois.",
  "data": {
    "access_key": {
      "uuid": "913b...d343-7592-4d0a-9189-f836...cca5",
      "user_id": 3,
      "name": "Client Mamoni",
      "public_key": "ak_test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "abilities": [
        "accounts:read",
        "transactions:read",
        "transactions:write",
        "beneficiaries:read",
        "beneficiaries:write",
        "reminders:read",
        "reminders:write",
        "collect:read",
        "collect:write"
      ],
      "status": "ACTIVE",
      "expires_at": null,
      "updated_at": "2026-05-03T05:36:06.000000Z",
      "created_at": "2026-05-03T05:36:06.000000Z",
      "id": 8
    },
    "secret": "sk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
  },
  "status": 201
}

Donnees a conserverData to keep

access_key access_secret api_key_id
POST /api/v2/client/api-access/token

Generer un token APIIssue API token

Echange la cle publique et le secret API contre un token Bearer temporaire pour les appels automatiques.Exchanges the API public key and secret for a temporary Bearer token for automated calls.

Cle API et secret requisAPI key and secret required

DescriptionDescription

Generation d un token API

Cet endpoint est le point d entree des traitements serveur a serveur. Envoyez la cle publique dans X-Access-Key et le secret dans X-Access-Secret; aucun body n est requis.

La reponse contient access_token, token_type, expires_at et la liste des permissions disponibles. Le token retourne doit etre envoye dans Authorization: Bearer <access_token> pour verifier les comptes et executer les operations DAP.

Regenerez un token avant expiration et ne partagez jamais le secret avec une application front-end ou mobile.

API token issuance

This endpoint is the entry point for server-to-server processing. Send the public key in X-Access-Key and the secret in X-Access-Secret; no body is required.

The response contains access_token, token_type, expires_at, and the available permissions. Send the returned token as Authorization: Bearer <access_token> to verify accounts and run DAP operations.

Regenerate a token before it expires and never expose the secret to a frontend or mobile application.

HeadersHeaders

CleKey ValeurValue
Accept application/json
X-Access-Key <access_key>
X-Access-Secret <access_secret>

RequeteRequest

Aucun body requis pour cette requete.No body is required for this request.

Reponses observeesObserved responses

401 OK

Clé API invalide, expirée ou révoquée.

{
  "success": false,
  "message": "Clé API invalide, expirée ou révoquée.",
  "data": [],
  "status": 401
}
200 OK

Token API généré avec succès.

{
  "success": true,
  "message": "Token API généré avec succès.",
  "data": {
    "token_type": "Bearer",
    "access_token": "<bearer-token>",
    "expires_at": "2026-05-03 06:53:35",
    "abilities": [
      "accounts:read",
      "transactions:read",
      "transactions:write",
      "beneficiaries:read",
      "beneficiaries:write",
      "reminders:read",
      "reminders:write",
      "collect:read",
      "collect:write"
    ],
    "user": {
      "id": 3,
      "client_id": 5,
      "name": "Client Mamoni",
      "email": "client@example.com",
      "phone_number": "690000000",
      "operation_code": "WZNOPP",
      "email_verified_at": null,
      "two_factor_secret": "sk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "two_factor_recovery_codes": null,
      "two_factor_confirmed_at": null,
      "created_at": "2025-09-13T14:15:43.000000Z",
      "updated_at": "2025-10-27T17:19:41.000000Z",
      "deleted_at": null,
      "client": {
        "id": 5,
        "uuid": "37AE...59E7-E956-4EBD-B471-7D36...FC56",
        "subscription_date": "2025-08-13T08:35:51.000000Z",
        "email": "client@example.com",
        "name": "Client Mamoni",
        "client_matricule": "000073",
        "phone_number": "690000000",
        "password_reset": 1,
        "pin_reset": 1,
        "otp_actived": 1,
        "address": "Ndogpassi",
        "status": "ACTIVE",
        "guid": "97cdb047-432a-43bc-846c-9501884245ce",
        "role": "VALIDATE_TRANSACTION",
        "auth_code": null,
        "created_at": "2025-09-13T14:13:02.000000Z",
        "updated_at": "2026-05-02T19:14:34.000000Z"
      }
    }
  },
  "status": 200
}

Donnees a conserverData to keep

api_token
GET /api/v2/client/api-access-keys

Lister les cles APIList API keys

Retourne les cles API du partenaire avec leur statut, leurs permissions et leur dernier usage.Returns the partner API keys with status, permissions, and last usage.

Bearer utilisateur requisUser Bearer token required

DescriptionDescription

Liste des cles API

Utilisez cet endpoint pour afficher les cles rattachees au compte partenaire, controler leur statut et preparer une rotation de secrets.

Chaque cle permet d identifier quelle application appelle l API et quelles permissions lui sont accordees. Une cle inactive, expiree ou revoquee ne doit plus etre utilisee par vos serveurs.

Cette operation est utile dans un tableau d administration, un audit de securite ou un processus de support.

API key list

Use this endpoint to display the keys attached to the partner account, check their status, and prepare secret rotation.

Each key identifies which application calls the API and which permissions it has. An inactive, expired, or revoked key must no longer be used by your servers.

This operation is useful in an administration screen, security audit, or support process.

HeadersHeaders

CleKey ValeurValue
Accept application/json
Authorization Bearer <user_token>

RequeteRequest

Aucun body requis pour cette requete.No body is required for this request.

Reponses observeesObserved responses

200 OK

Liste des clés API récupérée avec succès.

{
  "success": true,
  "message": "Liste des clés API récupérée avec succès.",
  "data": {
    "current_page": 1,
    "data": [
      {
        "id": 8,
        "uuid": "913b...d343-7592-4d0a-9189-f836...cca5",
        "user_id": 3,
        "name": "Client Mamoni",
        "public_key": "ak_test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "abilities": [
          "accounts:read",
          "transactions:read",
          "transactions:write",
          "beneficiaries:read",
          "beneficiaries:write",
          "reminders:read",
          "reminders:write",
          "collect:read",
          "collect:write"
        ],
        "status": "ACTIVE",
        "expires_at": null,
        "last_used_at": "2026-05-03T05:38:35.000000Z",
        "last_used_ip": "127.0.0.1",
        "revoked_at": null,
        "created_at": "2026-05-03T05:36:06.000000Z",
        "updated_at": "2026-05-03T05:38:35.000000Z"
      },
      {
        "id": 7,
        "uuid": "c670...33b6-d0e5-4ce2-92ca-3e7d...b12e",
        "user_id": 3,
        "name": "Client Mamoni",
        "public_key": "ak_test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "abilities": [
          "accounts:read",
          "transactions:read",
          "transactions:write",
          "beneficiaries:read",
          "beneficiaries:write",
          "reminders:read",
          "reminders:write",
          "collect:read",
          "collect:write"
        ],
        "status": "ACTIVE",
        "expires_at": null,
        "last_used_at": "2026-05-02T10:33:15.000000Z",
        "last_used_ip": "127.0.0.1",
        "revoked_at": null,
        "created_at": "2026-05-02T10:32:42.000000Z",
        "updated_at": "2026-05-02T10:33:15.000000Z"
      },
      {
        "id": 6,
        "uuid": "980d...0016-2604-48ce-8a3b-8818...f55f",
        "user_id": 3,
        "name": "Client Mamoni",
        "public_key": "ak_test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "abilities": [
          "accounts:read",
          "transactions:read",
          "transactions:write",
          "beneficiaries:read",
          "beneficiaries:write",
          "reminders:read",
          "reminders:write",
          "collect:read",
          "collect:write"
        ],
        "status": "ACTIVE",
        "expires_at": null,
        "last_used_at": null,
        "last_used_ip": null,
        "revoked_at": null,
        "created_at": "2026-05-02T10:31:37.000000Z",
        "updated_at": "2026-05-02T10:31:37.000000Z"
      },
      {
        "id": 5,
        "uuid": "3d97...733c-623b-4672-be87-8f99...432c",
        "user_id": 3,
        "name": "Client Mamoni",
        "public_key": "ak_test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "abilities": [
          "accounts:read",
          "transactions:read",
          "transactions:write",
          "beneficiaries:read",
          "beneficiaries:write",
          "reminders:read",
          "reminders:write",
          "collect:read",
          "collect:write"
        ],
        "status": "ACTIVE",
        "expires_at": null,
        "last_used_at": null,
        "last_used_ip": null,
        "revoked_at": null,
        "created_at": "2026-05-02T10:29:19.000000Z",
        "updated_at": "2026-05-02T10:29:19.000000Z"
      },
      {
        "id": 4,
        "uuid": "1bb6...3643-dd93-44b4-aec7-4972...0558",
        "user_id": 3,
        "name": "Client Mamoni",
        "public_key": "ak_test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "abilities": [
          "accounts:read",
          "transactions:read",
          "transactions:write",
          "beneficiaries:read",
          "beneficiaries:write",
          "reminders:read",
          "reminders:write",
          "collect:read",
          "collect:write"
        ],
        "status": "ACTIVE",
        "expires_at": null,
        "last_used_at": null,
        "last_used_ip": null,
        "revoked_at": null,
        "created_at": "2026-05-02T10:27:09.000000Z",
        "updated_at": "2026-05-02T10:27:09.000000Z"
      },
      {
        "id": 3,
        "uuid": "521a...d198-0ab0-4dd5-87b4-5136...b7b0",
        "user_id": 3,
        "name": "Client Mamoni",
        "public_key": "ak_test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "abilities": [
          "accounts:read",
          "transactions:read",
          "transactions:write",
          "beneficiaries:read",
          "beneficiaries:write",
          "reminders:read",
          "reminders:write",
          "collect:read",
          "collect:write"
        ],
        "status": "ACTIVE",
        "expires_at": null,
        "last_used_at": "2026-05-02T10:25:58.000000Z",
        "last_used_ip": "127.0.0.1",
        "revoked_at": null,
        "created_at": "2026-05-02T10:17:25.000000Z",
        "updated_at": "2026-05-02T10:25:58.000000Z"
      },
      {
        "id": 2,
        "uuid": "b624...d59c-ff36-4b61-9b1c-af94...513d",
        "user_id": 3,
        "name": "Client Mamoni",
        "public_key": "ak_test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "abilities": [
          "accounts:read",
          "transactions:read",
          "transactions:write"
        ],
        "status": "REVOKED",
        "expires_at": null,
        "last_used_at": "2026-04-29T18:54:13.000000Z",
        "last_used_ip": "127.0.0.1",
        "revoked_at": "2026-04-29T18:55:01.000000Z",
        "created_at": "2026-04-29T18:50:04.000000Z",
        "updated_at": "2026-04-29T18:55:01.000000Z"
      },
      {
        "id": 1,
        "uuid": "4d1b...894c-f001-41cf-a7fa-2874...7658",
        "user_id": 3,
        "name": "Client Mamoni",
        "public_key": "ak_test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "abilities": [
          "accounts:read",
          "transactions:read",
          "transactions:write"
        ],
        "status": "ACTIVE",
        "expires_at": null,
        "last_used_at": "2026-04-29T18:28:14.000000Z",
        "last_used_ip": "127.0.0.1",
        "revoked_at": null,
        "created_at": "2026-04-29T18:17:42.000000Z",
        "updated_at": "2026-04-29T18:28:14.000000Z"
      }
    ],
    "first_page_url": "http://localhost:8000/api/v2/client/api-access-keys?page=1",
    "from": 1,
    "last_page": 1,
    "last_page_url": "http://localhost:8000/api/v2/client/api-access-keys?page=1",
    "links": [
      {
        "url": null,
        "label": "&laquo; Previous",
        "page": null,
        "active": false
      },
      {
        "url": "http://localhost:8000/api/v2/client/api-access-keys?page=1",
        "label": "1",
        "page": 1,
        "active": true
      },
      {
        "url": null,
        "label": "Next &raquo;",
        "page": null,
        "active": false
      }
    ],
    "next_page_url": null,
    "path": "http://localhost:8000/api/v2/client/api-access-keys",
    "per_page": 20,
    "prev_page_url": null,
    "to": 8,
    "total": 8
  },
  "status": 200
}
POST /api/v2/client/api-access-keys/{api_key_id}/revoke

Revoquer une cle APIRevoke API key

Desactive une cle API afin d empecher toute nouvelle generation de token.Disables an API key so it can no longer issue new tokens.

Bearer utilisateur requisUser Bearer token required

DescriptionDescription

Revocation d une cle API

Revoquez une cle lorsqu une integration n est plus utilisee, lorsqu un secret a pu etre expose ou lors d une rotation de securite.

L identifiant api_key_id est celui retourne a la creation ou dans la liste des cles. Apres revocation, la cle ne doit plus permettre de generer un token API; les traitements partenaires doivent passer sur une nouvelle cle valide.

Prevoyez cote partenaire une procedure de rotation sans interruption: creer une nouvelle cle, deployer le nouveau secret, verifier les appels, puis revoquer l ancienne cle.

API key revocation

Revoke a key when an integration is no longer used, when a secret may have been exposed, or during security rotation.

The api_key_id is returned at creation or in the key list. After revocation, the key must no longer issue an API token; partner jobs must switch to a new valid key.

Plan a no-downtime rotation process: create a new key, deploy the new secret, verify calls, then revoke the old key.

HeadersHeaders

CleKey ValeurValue
Accept application/json
Authorization Bearer <user_token>

RequeteRequest

Aucun body requis pour cette requete.No body is required for this request.

Reponses observeesObserved responses

401 OK

Cette route nécessite un token généré depuis une clé API.

{
  "success": false,
  "message": "Cette route nécessite un token généré depuis une clé API.",
  "data": [],
  "status": 401
}
200 OK

Clé API révoquée avec succès.

{
  "success": true,
  "message": "Clé API révoquée avec succès.",
  "data": {
    "id": 8,
    "uuid": "913b...d343-7592-4d0a-9189-f836...cca5",
    "user_id": 3,
    "name": "Client Mamoni",
    "public_key": "ak_test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "abilities": [
      "accounts:read",
      "transactions:read",
      "transactions:write",
      "beneficiaries:read",
      "beneficiaries:write",
      "reminders:read",
      "reminders:write",
      "collect:read",
      "collect:write"
    ],
    "status": "REVOKED",
    "expires_at": null,
    "last_used_at": "2026-05-03T05:38:35.000000Z",
    "last_used_ip": "127.0.0.1",
    "revoked_at": "2026-05-03T05:45:29.000000Z",
    "created_at": "2026-05-03T05:36:06.000000Z",
    "updated_at": "2026-05-03T05:45:29.000000Z"
  },
  "status": 200
}
POST /api/v2/client/api-access/token

Verifier une cle revoqueeVerify revoked key

Confirme qu une cle revoquee ne peut plus generer de token API.Confirms that a revoked key can no longer issue an API token.

Cle API revoquee attendueRevoked API key expected

DescriptionDescription

Verification apres revocation

Cet appel utilise le meme endpoint que la generation de token, mais avec une cle deja revoquee. Il permet de verifier que le serveur Mamoni Finance refuse bien les anciennes informations d authentification.

Dans une integration partenaire, ce controle est surtout utile apres une rotation de cle ou un incident de securite. Une reponse d echec avec success: false confirme que l ancien couple cle/secret n est plus accepte.

Verification after revocation

This call uses the same endpoint as token issuance, but with an already revoked key. It verifies that Mamoni Finance rejects old authentication material.

In a partner integration, this check is mainly useful after key rotation or a security incident. A failure response with success: false confirms the old key/secret pair is no longer accepted.

HeadersHeaders

CleKey ValeurValue
Accept application/json
X-Access-Key <access_key>
X-Access-Secret <access_secret>

RequeteRequest

Aucun body requis pour cette requete.No body is required for this request.

Reponses observeesObserved responses

401 OK

Clé API invalide, expirée ou révoquée.

{
  "success": false,
  "message": "Clé API invalide, expirée ou révoquée.",
  "data": [],
  "status": 401
}
POST /api/v2/client/accounts/find-account

Verifier un compte MamoniVerify Mamoni account

Verifie l existence et les informations d un compte Mamoni avant un credit ou un mouvement DAP.Verifies the existence and details of a Mamoni account before a credit or DAP movement.

Bearer requisBearer token required

DescriptionDescription

Verification de compte

Avant de crediter un correspondant ou d utiliser un compte bancaire dans un flux DAP, appelez cet endpoint pour verifier que le numero de compte est connu et exploitable.

Cette verification reduit les erreurs operationnelles: compte inexistant, format incorrect, compte non rattache au client attendu ou saisie erronee. Si la reponse indique un echec, n initiez pas le mouvement financier.

Le champ pin peut etre demande selon le contexte de securite de votre parcours. Lorsqu il est utilise, il doit rester temporaire et ne jamais etre journalise.

Account verification

Before crediting a correspondent or using a bank account in a DAP flow, call this endpoint to verify that the account number exists and can be used.

This verification reduces operational errors: unknown account, invalid format, account not attached to the expected client, or typing mistake. If the response fails, do not initiate the financial movement.

The pin field may be required depending on your security flow. When used, it must remain temporary and must never be logged.

HeadersHeaders

CleKey ValeurValue
Aucun header specifique documente.No specific header documented.

Parametres du bodyBody parameters

ChampField TypeType RequisRequired ExempleExample
accountId string OuiYes 80400007301
pin string OuiYes 1234

RequeteRequest

{
  "accountId": "80400007301"
}

Reponses observeesObserved responses

200 OK

success

{
  "success": true,
  "message": "success",
  "data": {
    "authorizeDeposit": "Yes",
    "authorizeWithdrawal": "Yes",
    "clientMatricul": "000073",
    "clientName": "NGANSO KEMWE  STEVE NICAIS",
    "mobile": "690444983",
    "clientID": "000073",
    "accountID": "8040...7301",
    "accountName": "Compte Mamoni"
  },
  "status": 200
}

ModuleModule

Operations DAPDAP operations

5 EndpointsEndpoints
POST /api/v2/client/dap/move-from-bank/initiate

Initier l alimentation du compte DAPInitiate DAP funding

Initie un debit sur un compte bancaire du partenaire afin d alimenter son compte DAP.Initiates a debit from a partner bank account to fund its DAP account.

Bearer requisBearer token required

DescriptionDescription

Alimentation du compte DAP

Move From Bank permet au partenaire de retirer de l argent depuis l un de ses propres comptes bancaires pour alimenter son compte DAP chez Mamoni Finance. Ce flux est utile lorsque le solde DAP doit etre recharge avant de crediter des correspondants.

Le compte bank_account est le compte source du partenaire. Le montant doit correspondre a la somme a transferer vers la reserve DAP. La reponse retourne une transaction et generalement un bank_uuid a conserver pour les etapes de confirmation.

Ne considerez pas les fonds disponibles tant que le flux de confirmation n est pas termine et que le statut final n est pas SUCCESS.

DAP account funding

Move From Bank lets the partner withdraw money from one of its own bank accounts to fund its DAP account at Mamoni Finance. This flow is used when the DAP balance must be topped up before crediting correspondents.

The bank_account is the partner source account. The amount is the sum to transfer into the DAP reserve. The response returns a transaction and usually a bank_uuid to keep for confirmation steps.

Do not consider funds available until the confirmation flow is complete and the final status is SUCCESS.

HeadersHeaders

CleKey ValeurValue
Accept application/json
Content-Type application/json
Authorization Bearer <api_token>

Parametres du bodyBody parameters

ChampField TypeType RequisRequired ExempleExample
bank_account string OuiYes 80400007301
amount number OuiYes 50000
reason string OuiYes Alimentation compte DAP
description string OuiYes Transfert depuis le compte bancaire partenaire vers le compte DAP

RequeteRequest

{
  "bank_account": "80400007301",
  "amount": 50000,
  "reason": "Alimentation compte DAP",
  "description": "Transfert depuis le compte bancaire partenaire vers le compte DAP"
}

Reponses observeesObserved responses

422 Unprocessable Content

The amount field is required.

{
  "message": "The amount field is required.",
  "errors": {
    "amount": [
      "The amount field is required."
    ]
  }
}
200 OK

Operation move from bank initiee avec succes.

{
  "success": true,
  "message": "Operation move from bank initiee avec succes.",
  "data": {
    "transaction": {
      "id": 3397,
      "check_count": 0,
      "gateway_provider": "TRANZAK",
      "uuid": "4fb7...f850-feac-4ef7-a730-226a...cec2",
      "user_id": 3,
      "type": "MOVE_MONEY",
      "reference": "MOVE_MONE...0503-064720-VUUTFK",
      "operation_code": "WZNOPP",
      "amount": "200.00",
      "phone": null,
      "fees": "0.00",
      "taxes": "0.00",
      "description": "MOVE MONEY | 80400007301 - WZNOPP",
      "user_agent": "PartnerSystem/1.0",
      "client_ip": "127.0.0.1",
      "client_platform": "unknown",
      "device_type": "bot",
      "device_os": "Unknown",
      "client_browser": "PartnerSystem",
      "request_context": {
        "host": "localhost",
        "accept": "application/json",
        "origin": null,
        "referer": null,
        "client_ip": "127.0.0.1",
        "device_os": "Unknown",
        "user_agent": "PartnerSystem/1.0",
        "device_type": "bot",
        "content_type": "application/json",
        "client_browser": "PartnerSystem",
        "request_source": null,
        "client_platform": "unknown"
      },
      "reason": "Alimentation compte DAP",
      "status": "AWAITING_VALIDATION",
      "locked": 0,
      "locked_at": null,
      "account_debit": "8040...7301",
      "account_credit": null,
      "pg_reference": null,
      "bank_uuid": "1717...b319-9692-4138-8342-43b7...94cc",
      "bg_reference": null,
      "refund_bank_uuid": null,
      "refund_bank_reference": null,
      "receipt_path": null,
      "receipt_generated_at": null,
      "receipt_expires_at": null,
      "receipt_download_count": 0,
      "receipt_last_download_at": null,
      "created_at": "2026-05-03T05:47:20.000000Z",
      "updated_at": "2026-05-03T05:47:23.000000Z",
      "status_logs": [
        {
          "id": 13759,
          "transaction_id": 3397,
          "old_status": null,
          "new_status": "PENDING",
          "log": {
            "uuid": "4fb7...f850-feac-4ef7-a730-226a...cec2",
            "user_id": 3,
            "type": "MOVE_MONEY",
            "amount": "200.00",
            "fees": "0.00",
            "reason": "Alimentation compte DAP",
            "description": "MOVE MONEY | 80400007301 - WZNOPP",
            "account_debit": "8040...7301",
            "reference": "MOVE_MONE...0503-064720-VUUTFK",
            "operation_code": "WZNOPP",
            "status": "PENDING",
            "user_agent": "PartnerSystem/1.0",
            "client_ip": "127.0.0.1",
            "client_platform": "unknown",
            "device_type": "bot",
            "device_os": "Unknown",
            "client_browser": "PartnerSystem",
            "request_context": {
              "user_agent": "PartnerSystem/1.0",
              "client_ip": "127.0.0.1",
              "client_platform": "unknown",
              "device_type": "bot",
              "device_os": "Unknown",
              "client_browser": "PartnerSystem",
              "accept": "application/json",
              "content_type": "application/json",
              "origin": null,
              "referer": null,
              "host": "localhost",
              "request_source": null
            },
            "updated_at": "2026-05-03T05:47:20.000000Z",
            "created_at": "2026-05-03T05:47:20.000000Z",
            "id": 3397
          },
          "comment": "Initialisation locale move from bank",
          "changed_at": "2026-05-03T05:47:20.000000Z"
        },
        {
          "id": 13760,
          "transaction_id": 3397,
          "old_status": "PENDING",
          "new_status": "AWAITING_VALIDATION",
          "log": {
            "id": 33526,
            "uuid": "1717...b319-9692-4138-8342-43b7...94cc",
            "type": "WITHDRAWAL",
            "amount": 200,
            "accountId": "8040...7301",
            "client": "000073",
            "transactionCharge": 0,
            "transactionTax": null,
            "status": "INITIATED",
            "gatewayReference": null,
            "typeOperation": "WZNOPP",
            "trxNumber": null,
            "date": "2026-05-03T05:47:23",
            "errorMessage": null,
            "description": "MOVE MONEY | 80400007301 - WZNOPP",
            "benefAccount": null,
            "ValueDateOffSet": null
          },
          "comment": "Transaction creee sur le bank gateway",
          "changed_at": "2026-05-03T05:47:23.000000Z"
        }
      ]
    }
  },
  "status": 200
}

Donnees a conserverData to keep

transaction_reference bank_uuid
POST /api/v2/client/dap/move-from-bank/confirm

Confirmer l alimentation avec PINConfirm funding with PIN

Confirme l operation Move From Bank avec le PIN du partenaire avant validation finale.Confirms the Move From Bank operation with the partner PIN before final validation.

Bearer requisBearer token required

DescriptionDescription

Confirmation PIN

Apres l initiation d un Move From Bank, Mamoni Finance peut demander une confirmation par PIN. Cette etape autorise le debit du compte bancaire source du partenaire.

Envoyez le bank_uuid retourne par l initiation et le PIN saisi par l utilisateur habilite. Le PIN ne doit jamais etre stocke, journalise ou renvoye dans une interface non securisee.

Selon le parcours bancaire, la confirmation peut declencher l envoi d un OTP a valider dans l endpoint suivant.

PIN confirmation

After Move From Bank initiation, Mamoni Finance may require PIN confirmation. This step authorizes the debit from the partner source bank account.

Send the bank_uuid returned by initiation and the PIN entered by the authorized user. The PIN must never be stored, logged, or returned in an unsecured interface.

Depending on the banking flow, this confirmation may trigger an OTP to validate in the next endpoint.

HeadersHeaders

CleKey ValeurValue
Accept application/json
Content-Type application/json
Authorization Bearer <api_token>

Parametres du bodyBody parameters

ChampField TypeType RequisRequired ExempleExample
bank_uuid string OuiYes 1717b319-9692-4138-8342-43b794cc0000
pin string OuiYes 1234

RequeteRequest

{
  "bank_uuid": "1717b319-9692-4138-8342-43b794cc0000",
  "pin": "1234"
}

Reponses observeesObserved responses

200 OK

Confirmation move from bank traitee avec succes.

{
  "success": true,
  "message": "Confirmation move from bank traitee avec succes.",
  "data": {
    "transaction": {
      "id": 3398,
      "check_count": 0,
      "gateway_provider": "TRANZAK",
      "uuid": "7ebc...59cb-fade-4209-9168-39db...4d2d",
      "user_id": 3,
      "type": "MOVE_MONEY",
      "reference": "MOVE_MONE...0503-064847-MJZR5H",
      "operation_code": "WZNOPP",
      "amount": "200.00",
      "phone": null,
      "fees": "0.00",
      "taxes": "0.00",
      "description": "MOVE MONEY | 80400007301 - WZNOPP",
      "user_agent": "PartnerSystem/1.0",
      "client_ip": "127.0.0.1",
      "client_platform": "unknown",
      "device_type": "bot",
      "device_os": "Unknown",
      "client_browser": "PartnerSystem",
      "request_context": {
        "host": "localhost",
        "accept": "application/json",
        "origin": null,
        "referer": null,
        "client_ip": "127.0.0.1",
        "device_os": "Unknown",
        "user_agent": "PartnerSystem/1.0",
        "device_type": "bot",
        "content_type": "application/json",
        "client_browser": "PartnerSystem",
        "request_source": null,
        "client_platform": "unknown"
      },
      "reason": "Alimentation compte DAP",
      "status": "AWAITING_VALIDATION",
      "locked": 0,
      "locked_at": null,
      "account_debit": "8040...7301",
      "account_credit": null,
      "pg_reference": null,
      "bank_uuid": "38f6...6c8f-9fdd-4959-b432-e97f...240e",
      "bg_reference": null,
      "refund_bank_uuid": null,
      "refund_bank_reference": null,
      "receipt_path": null,
      "receipt_generated_at": null,
      "receipt_expires_at": null,
      "receipt_download_count": 0,
      "receipt_last_download_at": null,
      "created_at": "2026-05-03T05:48:47.000000Z",
      "updated_at": "2026-05-03T05:48:50.000000Z",
      "status_logs": [
        {
          "id": 13762,
          "transaction_id": 3398,
          "old_status": null,
          "new_status": "PENDING",
          "log": {
            "uuid": "7ebc...59cb-fade-4209-9168-39db...4d2d",
            "user_id": 3,
            "type": "MOVE_MONEY",
            "amount": "200.00",
            "fees": "0.00",
            "reason": "Alimentation compte DAP",
            "description": "MOVE MONEY | 80400007301 - WZNOPP",
            "account_debit": "8040...7301",
            "reference": "MOVE_MONE...0503-064847-MJZR5H",
            "operation_code": "WZNOPP",
            "status": "PENDING",
            "user_agent": "PartnerSystem/1.0",
            "client_ip": "127.0.0.1",
            "client_platform": "unknown",
            "device_type": "bot",
            "device_os": "Unknown",
            "client_browser": "PartnerSystem",
            "request_context": {
              "user_agent": "PartnerSystem/1.0",
              "client_ip": "127.0.0.1",
              "client_platform": "unknown",
              "device_type": "bot",
              "device_os": "Unknown",
              "client_browser": "PartnerSystem",
              "accept": "application/json",
              "content_type": "application/json",
              "origin": null,
              "referer": null,
              "host": "localhost",
              "request_source": null
            },
            "updated_at": "2026-05-03T05:48:47.000000Z",
            "created_at": "2026-05-03T05:48:47.000000Z",
            "id": 3398
          },
          "comment": "Initialisation locale move from bank",
          "changed_at": "2026-05-03T05:48:47.000000Z"
        },
        {
          "id": 13763,
          "transaction_id": 3398,
          "old_status": "PENDING",
          "new_status": "AWAITING_VALIDATION",
          "log": {
            "id": 33527,
            "uuid": "38f6...6c8f-9fdd-4959-b432-e97f...240e",
            "type": "WITHDRAWAL",
            "amount": 200,
            "accountId": "8040...7301",
            "client": "000073",
            "transactionCharge": 0,
            "transactionTax": null,
            "status": "INITIATED",
            "gatewayReference": null,
            "typeOperation": "WZNOPP",
            "trxNumber": null,
            "date": "2026-05-03T05:48:50",
            "errorMessage": null,
            "description": "MOVE MONEY | 80400007301 - WZNOPP",
            "benefAccount": null,
            "ValueDateOffSet": null
          },
          "comment": "Transaction creee sur le bank gateway",
          "changed_at": "2026-05-03T05:48:50.000000Z"
        }
      ]
    }
  },
  "status": 200
}
422 Unprocessable Content

The pin field is required.

{
  "message": "The pin field is required.",
  "errors": {
    "pin": [
      "The pin field is required."
    ]
  }
}

Donnees a conserverData to keep

bank_uuid
POST /api/v2/client/dap/move-from-bank/validate

Valider l OTP d alimentationValidate funding OTP

Valide le code OTP et finalise l alimentation du compte DAP lorsque le code est correct.Validates the OTP and finalizes DAP funding when the code is correct.

Bearer requisBearer token required

DescriptionDescription

Validation OTP

Lorsque le flux Move From Bank exige un code a usage unique, appelez cet endpoint avec le bank_uuid de l operation et l OTP recu par l utilisateur autorise.

Une validation reussie permet de poursuivre le traitement bancaire jusqu au statut final. Une erreur 422 indique generalement un OTP absent, invalide ou expire: demandez alors une nouvelle saisie ou relancez le parcours selon les consignes Mamoni Finance.

Le code OTP doit etre utilise uniquement pour cette operation et supprime de votre memoire applicative apres l appel.

OTP validation

When the Move From Bank flow requires a one-time code, call this endpoint with the operation bank_uuid and the OTP received by the authorized user.

A successful validation lets bank processing continue to the final status. A 422 error usually means the OTP is missing, invalid, or expired: ask for a new entry or restart the flow according to Mamoni Finance guidance.

The OTP must be used only for this operation and removed from application memory after the call.

HeadersHeaders

CleKey ValeurValue
Accept application/json
Content-Type application/json
Authorization Bearer <api_token>

Parametres du bodyBody parameters

ChampField TypeType RequisRequired ExempleExample
bank_uuid string OuiYes 1717b319-9692-4138-8342-43b794cc0000
otp string OuiYes 654321

RequeteRequest

{
  "bank_uuid": "1717b319-9692-4138-8342-43b794cc0000",
  "otp": "654321"
}

Reponses observeesObserved responses

200 OK

Validation OTP move from bank traitee avec succes.

{
  "success": true,
  "message": "Validation OTP move from bank traitee avec succes.",
  "data": {
    "transaction": {
      "id": 3398,
      "check_count": 0,
      "gateway_provider": "TRANZAK",
      "uuid": "7ebc...59cb-fade-4209-9168-39db...4d2d",
      "user_id": 3,
      "type": "MOVE_MONEY",
      "reference": "MOVE_MONE...0503-064847-MJZR5H",
      "operation_code": "WZNOPP",
      "amount": "200.00",
      "phone": null,
      "fees": "0.00",
      "taxes": "0.00",
      "description": "MOVE MONEY | 80400007301 - WZNOPP",
      "user_agent": "PartnerSystem/1.0",
      "client_ip": "127.0.0.1",
      "client_platform": "unknown",
      "device_type": "bot",
      "device_os": "Unknown",
      "client_browser": "PartnerSystem",
      "request_context": {
        "host": "localhost",
        "accept": "application/json",
        "origin": null,
        "referer": null,
        "client_ip": "127.0.0.1",
        "device_os": "Unknown",
        "user_agent": "PartnerSystem/1.0",
        "device_type": "bot",
        "content_type": "application/json",
        "client_browser": "PartnerSystem",
        "request_source": null,
        "client_platform": "unknown"
      },
      "reason": "Alimentation compte DAP",
      "status": "SUCCESS",
      "locked": 0,
      "locked_at": null,
      "account_debit": "8040...7301",
      "account_credit": null,
      "pg_reference": null,
      "bank_uuid": "38f6...6c8f-9fdd-4959-b432-e97f...240e",
      "bg_reference": "WZNO...0002",
      "refund_bank_uuid": null,
      "refund_bank_reference": null,
      "receipt_path": null,
      "receipt_generated_at": null,
      "receipt_expires_at": null,
      "receipt_download_count": 0,
      "receipt_last_download_at": null,
      "created_at": "2026-05-03T05:48:47.000000Z",
      "updated_at": "2026-05-03T05:52:43.000000Z",
      "status_logs": [
        {
          "id": 13762,
          "transaction_id": 3398,
          "old_status": null,
          "new_status": "PENDING",
          "log": {
            "uuid": "7ebc...59cb-fade-4209-9168-39db...4d2d",
            "user_id": 3,
            "type": "MOVE_MONEY",
            "amount": "200.00",
            "fees": "0.00",
            "reason": "Alimentation compte DAP",
            "description": "MOVE MONEY | 80400007301 - WZNOPP",
            "account_debit": "8040...7301",
            "reference": "MOVE_MONE...0503-064847-MJZR5H",
            "operation_code": "WZNOPP",
            "status": "PENDING",
            "user_agent": "PartnerSystem/1.0",
            "client_ip": "127.0.0.1",
            "client_platform": "unknown",
            "device_type": "bot",
            "device_os": "Unknown",
            "client_browser": "PartnerSystem",
            "request_context": {
              "user_agent": "PartnerSystem/1.0",
              "client_ip": "127.0.0.1",
              "client_platform": "unknown",
              "device_type": "bot",
              "device_os": "Unknown",
              "client_browser": "PartnerSystem",
              "accept": "application/json",
              "content_type": "application/json",
              "origin": null,
              "referer": null,
              "host": "localhost",
              "request_source": null
            },
            "updated_at": "2026-05-03T05:48:47.000000Z",
            "created_at": "2026-05-03T05:48:47.000000Z",
            "id": 3398
          },
          "comment": "Initialisation locale move from bank",
          "changed_at": "2026-05-03T05:48:47.000000Z"
        },
        {
          "id": 13763,
          "transaction_id": 3398,
          "old_status": "PENDING",
          "new_status": "AWAITING_VALIDATION",
          "log": {
            "id": 33527,
            "uuid": "38f6...6c8f-9fdd-4959-b432-e97f...240e",
            "type": "WITHDRAWAL",
            "amount": 200,
            "accountId": "8040...7301",
            "client": "000073",
            "transactionCharge": 0,
            "transactionTax": null,
            "status": "INITIATED",
            "gatewayReference": null,
            "typeOperation": "WZNOPP",
            "trxNumber": null,
            "date": "2026-05-03T05:48:50",
            "errorMessage": null,
            "description": "MOVE MONEY | 80400007301 - WZNOPP",
            "benefAccount": null,
            "ValueDateOffSet": null
          },
          "comment": "Transaction creee sur le bank gateway",
          "changed_at": "2026-05-03T05:48:50.000000Z"
        },
        {
          "id": 13764,
          "transaction_id": 3398,
          "old_status": "AWAITING_VALIDATION",
          "new_status": "SUCCESS",
          "log": {
            "data": {
              "id": 33527,
              "uuid": "38f6...6c8f-9fdd-4959-b432-e97f...240e",
              "type": "WITHDRAWAL",
              "amount": 200,
              "accountId": "8040...7301",
              "client": "000073",
              "transactionCharge": 0,
              "transactionTax": null,
              "status": "SUCCESS",
              "gatewayReference": "MOVE_MONE...0503-064847-MJZR5H",
              "typeOperation": "WZNOPP",
              "trxNumber": "WZNO...0002",
              "date": "2026-05-03T05:48:50",
              "errorMessage": null,
              "description": "MOVE MONEY | 80400007301 - WZNOPP",
              "benefAccount": null,
              "ValueDateOffSet": null
            },
            "message": "PAYMENT COMPLETED",
            "timestamp": 1777787562560,
            "status": 200,
            "isSuccess": true
          },
          "comment": "Debit bancaire valide avec succes apres OTP",
          "changed_at": "2026-05-03T05:52:43.000000Z"
        }
      ]
    }
  },
  "status": 200
}
422 Unprocessable Content

The otp field is required.

{
  "message": "The otp field is required.",
  "errors": {
    "otp": [
      "The otp field is required."
    ]
  }
}

Donnees a conserverData to keep

transaction_reference
POST /api/v2/client/dap/push-to-bank/initiate

Crediter un compte MamoniCredit a Mamoni account

Debite le compte DAP du partenaire pour crediter le compte Mamoni d un correspondant.Debits the partner DAP account to credit a correspondent Mamoni account.

Bearer requisBearer token required

DescriptionDescription

Credit d un correspondant

Push To Bank est l operation principale de paiement. Elle permet au partenaire de crediter automatiquement le compte Mamoni d un correspondant a partir de son compte DAP.

Le compte bank_account est le compte de destination du correspondant. Le montant est debite de la reserve DAP du partenaire, puis envoye au compte Mamoni indique. Avant cet appel, verifiez le compte de destination et assurez vous que le solde DAP est suffisant selon vos controles internes.

La reponse contient une reference de transaction, un statut et des journaux de traitement. Conservez la reference: elle sert au rapprochement, au support et a la relance de verification si le traitement reste en attente.

Correspondent credit

Push To Bank is the main payout operation. It lets the partner automatically credit a correspondent's Mamoni account from the partner DAP account.

The bank_account is the correspondent destination account. The amount is debited from the partner DAP reserve, then sent to the specified Mamoni account. Before this call, verify the destination account and ensure the DAP balance is sufficient according to your internal controls.

The response contains a transaction reference, status, and processing logs. Keep the reference: it is used for reconciliation, support, and retry verification if processing remains pending.

HeadersHeaders

CleKey ValeurValue
Accept application/json
Content-Type application/json
Authorization Bearer <api_token>

Parametres du bodyBody parameters

ChampField TypeType RequisRequired ExempleExample
bank_account string OuiYes 80400007301
amount number OuiYes 25000
reason string OuiYes Credit correspondant
description string OuiYes Paiement partenaire vers le compte du correspondant

RequeteRequest

{
  "bank_account": "80400007301",
  "amount": 25000,
  "reason": "Credit correspondant",
  "description": "Paiement partenaire vers le compte du correspondant"
}

Reponses observeesObserved responses

200 OK

Operation push to bank initiee avec succes.

{
  "success": true,
  "message": "Operation push to bank initiee avec succes.",
  "data": {
    "transaction": {
      "id": 3396,
      "check_count": 1,
      "gateway_provider": "TRANZAK",
      "uuid": "5bb3...5f90-c475-4ae2-a9a3-169b...379c",
      "user_id": 3,
      "type": "DAP",
      "reference": "DAP2...0503-063940-217PVD",
      "operation_code": "WZNOPP",
      "amount": "200.00",
      "phone": null,
      "fees": "0.00",
      "taxes": "0.00",
      "description": "PUSH TO BANK | WZNOPP - 80400007301",
      "user_agent": "PartnerSystem/1.0",
      "client_ip": "127.0.0.1",
      "client_platform": "unknown",
      "device_type": "bot",
      "device_os": "Unknown",
      "client_browser": "PartnerSystem",
      "request_context": {
        "host": "localhost",
        "accept": "application/json",
        "origin": null,
        "referer": null,
        "client_ip": "127.0.0.1",
        "device_os": "Unknown",
        "user_agent": "PartnerSystem/1.0",
        "device_type": "bot",
        "content_type": "application/json",
        "client_browser": "PartnerSystem",
        "request_source": null,
        "client_platform": "unknown"
      },
      "reason": "Credit correspondant",
      "status": "SUCCESS",
      "locked": 0,
      "locked_at": null,
      "account_debit": null,
      "account_credit": "8040...7301",
      "pg_reference": null,
      "bank_uuid": "e7d3...cfd7-5582-4a5f-8768-1561...7803",
      "bg_reference": "WZNO...0001",
      "refund_bank_uuid": null,
      "refund_bank_reference": null,
      "receipt_path": null,
      "receipt_generated_at": null,
      "receipt_expires_at": null,
      "receipt_download_count": 0,
      "receipt_last_download_at": null,
      "created_at": "2026-05-03T05:39:40.000000Z",
      "updated_at": "2026-05-03T05:39:47.000000Z",
      "status_logs": [
        {
          "id": 13756,
          "transaction_id": 3396,
          "old_status": null,
          "new_status": "ON_DEPOSIT",
          "log": {
            "uuid": "5bb3...5f90-c475-4ae2-a9a3-169b...379c",
            "user_id": 3,
            "type": "DAP",
            "amount": "200.00",
            "fees": "0.00",
            "reason": "Credit correspondant",
            "description": "PUSH TO BANK | WZNOPP - 80400007301",
            "account_credit": "8040...7301",
            "reference": "DAP2...0503-063940-217PVD",
            "operation_code": "WZNOPP",
            "status": "ON_DEPOSIT",
            "user_agent": "PartnerSystem/1.0",
            "client_ip": "127.0.0.1",
            "client_platform": "unknown",
            "device_type": "bot",
            "device_os": "Unknown",
            "client_browser": "PartnerSystem",
            "request_context": {
              "user_agent": "PartnerSystem/1.0",
              "client_ip": "127.0.0.1",
              "client_platform": "unknown",
              "device_type": "bot",
              "device_os": "Unknown",
              "client_browser": "PartnerSystem",
              "accept": "application/json",
              "content_type": "application/json",
              "origin": null,
              "referer": null,
              "host": "localhost",
              "request_source": null
            },
            "updated_at": "2026-05-03T05:39:40.000000Z",
            "created_at": "2026-05-03T05:39:40.000000Z",
            "id": 3396
          },
          "comment": "Initialisation locale push to bank",
          "changed_at": "2026-05-03T05:39:40.000000Z"
        },
        {
          "id": 13757,
          "transaction_id": 3396,
          "old_status": "ON_DEPOSIT",
          "new_status": "ON_DEPOSIT_PROCESSING",
          "log": {
            "id": 33525,
            "uuid": "e7d3...cfd7-5582-4a5f-8768-1561...7803",
            "type": "DEPOSIT",
            "amount": 200,
            "accountId": "8040...7301",
            "client": "000073",
            "transactionCharge": 0,
            "transactionTax": null,
            "status": "INITIATED",
            "gatewayReference": null,
            "typeOperation": "WZNOPP",
            "trxNumber": null,
            "date": "2026-05-03T05:39:42",
            "errorMessage": null,
            "description": "PUSH TO BANK | WZNOPP - 80400007301",
            "benefAccount": null,
            "ValueDateOffSet": null
          },
          "comment": "Depot bancaire initie",
          "changed_at": "2026-05-03T05:39:43.000000Z"
        },
        {
          "id": 13758,
          "transaction_id": 3396,
          "old_status": "ON_DEPOSIT_PROCESSING",
          "new_status": "SUCCESS",
          "log": {
            "id": 33525,
            "uuid": "e7d3...cfd7-5582-4a5f-8768-1561...7803",
            "type": "DEPOSIT",
            "amount": 200,
            "accountId": "8040...7301",
            "client": "000073",
            "transactionCharge": 0,
            "transactionTax": null,
            "status": "SUCCESS",
            "gatewayReference": "DAP2...0503-063940-217PVD",
            "typeOperation": "WZNOPP",
            "trxNumber": "WZNO...0001",
            "date": "2026-05-03T05:39:42",
            "errorMessage": null,
            "description": "PUSH TO BANK | WZNOPP - 80400007301",
            "benefAccount": null,
            "ValueDateOffSet": null
          },
          "comment": "Depot bancaire valide avec succes",
          "changed_at": "2026-05-03T05:39:47.000000Z"
        }
      ]
    }
  },
  "status": 200
}
422 Unprocessable Content

The bank account field must be 11 characters. (and 1 more error)

{
  "message": "The bank account field must be 11 characters. (and 1 more error)",
  "errors": {
    "bank_account": [
      "The bank account field must be 11 characters.",
      "The bank account field format is invalid."
    ]
  }
}

Donnees a conserverData to keep

transaction_reference bank_uuid
POST /api/v2/client/dap/push-to-bank/retry

Verifier ou relancer un creditVerify or retry a credit

Verifie le statut d un Push To Bank ou relance son traitement a partir de la reference.Checks a Push To Bank status or retries processing from the reference.

Bearer token requiredBearer token required

DescriptionDescription

Verification ou relance Push To Bank

Utilisez cet endpoint lorsqu un credit de correspondant est en attente, lorsque votre systeme n a pas recu le resultat final ou lorsqu un incident temporaire a interrompu le traitement.

Envoyez la reference retournee par l initiation Push To Bank. Si la transaction est deja finalisee, l API retourne son etat actuel. Si elle est encore traitable, la verification peut relancer le controle cote Mamoni Finance.

Ne creez pas automatiquement une nouvelle transaction tant que vous n avez pas verifie l ancienne reference: cela evite les doublons de credit.

Push To Bank verification or retry

Use this endpoint when a correspondent credit is pending, when your system did not receive the final result, or when a temporary incident interrupted processing.

Send the reference returned by Push To Bank initiation. If the transaction is already final, the API returns its current state. If it can still be processed, verification may retry the Mamoni Finance check.

Do not automatically create a new transaction until you have checked the old reference: this prevents duplicate credits.

HeadersHeaders

CleKey ValeurValue
Accept application/json
Content-Type application/json
Authorization Bearer <api_token>

Parametres du bodyBody parameters

ChampField TypeType RequisRequired ExempleExample
reference string OuiYes DAP20260503063940217PVD

RequeteRequest

{
  "reference": "DAP20260503063940217PVD"
}

Reponses observeesObserved responses

404 OK

Transaction push to bank introuvable.

{
  "success": false,
  "message": "Transaction push to bank introuvable.",
  "data": [],
  "status": 404
}
200 OK

Transaction deja finalisee avec succes.

{
  "success": true,
  "message": "Transaction deja finalisee avec succes.",
  "data": {
    "transaction": {
      "id": 3396,
      "check_count": 1,
      "gateway_provider": "TRANZAK",
      "uuid": "5bb3...5f90-c475-4ae2-a9a3-169b...379c",
      "user_id": 3,
      "type": "DAP",
      "reference": "DAP2...0503-063940-217PVD",
      "operation_code": "WZNOPP",
      "amount": "200.00",
      "phone": null,
      "fees": "0.00",
      "taxes": "0.00",
      "description": "PUSH TO BANK | WZNOPP - 80400007301",
      "user_agent": "PartnerSystem/1.0",
      "client_ip": "127.0.0.1",
      "client_platform": "unknown",
      "device_type": "bot",
      "device_os": "Unknown",
      "client_browser": "PartnerSystem",
      "request_context": {
        "host": "localhost",
        "accept": "application/json",
        "origin": null,
        "referer": null,
        "client_ip": "127.0.0.1",
        "device_os": "Unknown",
        "user_agent": "PartnerSystem/1.0",
        "device_type": "bot",
        "content_type": "application/json",
        "client_browser": "PartnerSystem",
        "request_source": null,
        "client_platform": "unknown"
      },
      "reason": "Credit correspondant",
      "status": "SUCCESS",
      "locked": 0,
      "locked_at": null,
      "account_debit": null,
      "account_credit": "8040...7301",
      "pg_reference": null,
      "bank_uuid": "e7d3...cfd7-5582-4a5f-8768-1561...7803",
      "bg_reference": "WZNO...0001",
      "refund_bank_uuid": null,
      "refund_bank_reference": null,
      "receipt_path": null,
      "receipt_generated_at": null,
      "receipt_expires_at": null,
      "receipt_download_count": 0,
      "receipt_last_download_at": null,
      "created_at": "2026-05-03T05:39:40.000000Z",
      "updated_at": "2026-05-03T05:39:47.000000Z"
    }
  },
  "status": 200
}

Donnees a conserverData to keep

transaction_reference
Copie dans le presse-papiers