Transfer (Payout)
| Element | Description |
|---|---|
| Method | POST |
| Endpoint | /v1/payout |
| Auth | ✅ Authorization: Basic base64(api_key:api_client) |
| Idempotence | ✅ X-Idempotency-Key required to avoid duplicates |
| Payload Type | application/json |
Headers
| Key | Description | Required |
|---|---|---|
Authorization | Basic base64(api_key:api_client) | ✅ |
X-Idempotency-Key | UUID ensuring request uniqueness | ✅ |
Request Body
{
"reference": "55a4e677-5700-4ed0-9a2a-9300db894ddb",
"accountId": "merchant_qdadaklwldakld",
"amount": 300,
"msisdn": "+2250749929598",
"country": "CI",
"customerName": "Habib"
}Parameter Description
| Field | Type | Description | Required |
|---|---|---|---|
reference | string | Unique transfer identifier (merchant-side UUID). | ✅ |
accountId | string | Merchant account or sub-account to debit. | ✅ |
amount | number | Amount to transfer. | ✅ |
msisdn | string | Beneficiary's phone number (E.164 format). | ✅ |
country | string | Country ISO code (CI, CM). | ✅ |
customerName | string | Beneficiary's name. | ✅ |
Response Example
{
"type": "payout",
"fee": 6,
"reference": "mtr_fhscgaywizujwjyymlge1hncaq",
"phoneNumber": "+2250700000000",
"customerName": "John Doe",
"amount": 300,
"chargedAmount": 306,
"status": "processed",
"currency": "XOF",
"customerReference": "55a4e677-5700-4ed0-9a2a-9300db894ddb",
"confirmationRequired": false,
"confirmationStatus": "none",
"transaction": {
"reference": "TFHL2A4D3QQC11NW9",
"status": "completed",
"processedAt": "2025-08-29T13:39:35.138Z",
"phoneNumber": "+2250700000000",
"amount": "300.00",
"fees": "6.00",
"chargedAmount": "306.00",
"currency": "XOF"
},
"createdAt": "2025-08-22T02:00:16.026Z"
}Response Interpretation
| Field | Description |
|---|---|
| type | Transaction type — here payout (outgoing transfer). |
| fee | Service fee amount applied. |
| reference | API-side system reference for the transfer. |
| phoneNumber | Beneficiary's phone number. |
| customerName | Beneficiary's name. |
| amount | Transfer amount (excluding fees). |
| chargedAmount | Total amount debited from merchant account (amount + fees). |
| status | Overall transfer status (processing, processed, expired, etc.). |
| currency | Currency used (XOF, USD, EUR, etc.). |
| customerReference | Original reference provided by the merchant for correlation. |
| confirmationRequired | Indicates if the beneficiary must confirm before receiving. (Usually false for standard merchant transfers.) |
| confirmationStatus | Confirmation status (useful if beneficiary validation is required). |
| transaction | Final transfer details executed in the Core System. |
| createdAt | Transfer creation timestamp. |
transaction Key
This field contains the final transaction information once the transfer is processed by the Mobile Money processor or internal Core.
| Field | Description |
|---|---|
| transaction.reference | Technical reference generated by the processing system. |
| transaction.status | Final status (completed, failed, pending). |
| transaction.processedAt | Transfer finalization timestamp. |
| transaction.phoneNumber | Credited account number. |
| transaction.amount | Exact credited amount. |
| transaction.fees | Fees applied at the processor level. |
| transaction.chargedAmount | Total amount debited from merchant account. |
| transaction.currency | Currency used. |
💡 The transaction field becomes available once the transfer is successfully processed.
If it's empty (
{}), it means the transfer is still in progress (status = processing).
Transfer Status
GET /v1/payout/{reference}| Element | Description |
|---|---|
| Method | GET |
| Endpoint | /v1/payout/{reference} |
| Auth | ✅ Authorization required |
| Payload | None |
| Description | Returns the complete transfer status corresponding to the provided reference. |
Response Example
{
"type": "payout",
"fee": 6,
"reference": "mtr_fhscgaywizujwjyymlge1hncaq",
"phoneNumber": "+2250700000000",
"customerName": "John Doe",
"amount": 300,
"chargedAmount": 306,
"status": "processed",
"currency": "XOF",
"customerReference": "55a4e677-5700-4ed0-9a2a-9300db894ddb",
"confirmationRequired": false,
"confirmationStatus": "none",
"createdAt": "2025-08-22T02:00:16.026Z",
"transaction": {},
"failure": null
}Response Interpretation
| Field | Description |
|---|---|
| status | Overall transfer status. |
| transaction | Object containing final information (empty if not yet processed). |
| failure | Error details in case of failure (null if successful). |
Possible Statuses
| Status | Description |
|---|---|
| pending | Request received, awaiting processing. |
| processing | Transfer in progress (contacting Mobile Money operator). |
| processed | Transfer processed on API side, awaiting processor result. |
| completed | Transfer confirmed and credited to beneficiary account. |
| failed | Processing error (invalid number, insufficient balance, etc.). |
| reversed | Funds returned to merchant following a failure or cancellation. |
| expired | Processing deadline exceeded without response. |
Obligation
- Use
X-Idempotency-Keyto avoid duplicate transfers. - Check the
statusor subscribe to thepayout.completedwebhook to receive final confirmation. - In case of
failure, check thefailurefield for error details (code, message, operator). - Do not attempt to manually retry a transfer without verifying
failedorexpiredstatus. - For real-time tracking, use WebSocket or Webhooks (
payout.updated,payout.completed).