Mobile money collection webhook
This event notifies you about the status of a collection (funding) transaction. Collections follow a lifecycle with different states:collection.initiated, collection.processing, collection.completed, and collection.failed.
Always verify the webhook signature before processing events. See other webhook events for payout notifications.
- Initiated: The request has been successfully sent to the provider.
- Processing: The customer has been notified and we are awaiting authorization.
- Completed: The funds have been successfully collected and added to the wallet.
- Failed: The collection could not be completed.
Sample Payloads
collection.initiated
collection.initiated
{
"event": "collection.initiated",
"data": {
"id": "5ded2ca9-888a-4ae2-b1e6-15f6252750f5",
"referenceNumber": "RAN3SO3TUFMJA",
"amount": "100.00",
"type": "FUNDING",
"state": "INITIATED",
"paymentMethod": "MOBILE_MONEY",
"destination": "RW wallet",
"source": {
"bankName": null,
"accountNumber": "+250123******",
"provider": "MTN_MOMO_RWA"
},
"created": "2026-02-13T12:46:56.834795305Z",
"processed": "2026-02-13T12:46:56.834795305Z"
}
}
collection.completed
collection.completed
{
"event": "collection.completed",
"data": {
"id": "0e32ab5b-3324-45ef-b851-d5abfdf4a9c8",
"referenceNumber": "IGTXZMCVYQJUA",
"amount": "50.00",
"settlementAmount": "36.00",
"type": "FUNDING",
"state": "COMPLETED",
"paymentMethod": "MOBILE_MONEY",
"destination": "RW wallet",
"source": {
"bankName": "MTN_MOMO_RWA",
"accountNumber": "250123******",
"provider": "MTN_MOMO_RWA"
},
"fee": {
"vat": "2.00",
"stampDuty": "2.00",
"base": "10.00"
},
"created": "2026-02-13T12:46:31.789506Z",
"processed": "2026-02-13T12:46:31.789506Z"
}
}
Payload Breakdown
| Field | Type | Description |
|---|---|---|
event | string | The name of the event that occurred (e.g., “collection.completed”). |
data.id | string | Unique identifier for the transaction. |
data.referenceNumber | string | Unique reference number assigned to the transaction. |
data.amount | string | The total gross amount of the transaction. |
data.paymentMethod | string | The method used for payment (e.g., MOBILE_MONEY). |
data.settlementAmount | string | The final amount settled after deducting all fees. |
data.type | string | The type of transaction (e.g., “FUNDING”). |
data.state | string | The final state of the transaction (e.g., “COMPLETED”). |
data.destination | string | The destination of the funds (e.g., “RW wallet”). |
data.source.provider | string | The mobile money operator (e.g., “MTN_MOMO_RWA”). |
data.source.accountNumber | string | The customer phone number or account identifier. |
data.fee.vat | string | The Value Added Tax portion of the fee. |
data.fee.stampDuty | string | The stamp duty portion of the fee. |
data.fee.base | string | The base fee for the transaction. |
data.created | string | ISO 8601 timestamp of when the transaction was created. |
data.processed | string | ISO 8601 timestamp of when the transaction was processed. |
Momo Collections Webhook
{
"message": "webhook event log fetched successfully",
"status": "success",
"data": {
"id": "69caf5d6-4d0f-49e1-997d-b09b0cc91d9a",
"name": "collection.completed",
"mode": "LIVE",
"state": "FAILED",
"notification": {
"url": "https://webhook.site/1bb210a0-626b-47c9-a38e-71b29fdef40d"
},
"response": {
"duration": "67",
"code": "500"
},
"payload": {
"event": "collection.completed",
"data": {
"id": "b5c0b6c0-3cec-4677-b15b-4035df4ba8b0",
"referenceNumber": "TTJJKUWZEXBOG",
"amount": "200.00",
"settlementAmount": "186.00",
"type": "FUNDING",
"state": "COMPLETED",
"paymentMethod": "MOBILE_MONEY",
"destination": "RW wallet",
"source": {
"bankName": "MTN_MOMO_RWA",
"accountName": null,
"accountNumber": null,
"provider": null
},
"fee": {
"vat": "2.00",
"stampDuty": "2.00",
"base": "10.00"
},
"created": "2026-03-26T10:40:25.758487Z",
"processed": "2026-03-26T10:40:25.758487Z"
}
},
"created": "2026-03-26T10:40:31.841388Z",
"processed": "2026-03-26T10:40:31.977505Z"
}
}
Payload Breakdown
| Field | Type | Description |
|---|---|---|
message | string | The message returned by the API. |
status | string | The status of the request. |
data | object | The data returned by the API. |
data.id | string | The ID of the webhook event. |
data.name | string | The name of the webhook event. |
data.mode | string | The mode of the webhook event. |
data.state | string | The state of the webhook event. |
data.notification | object | The notification details of the webhook event. |
data.notification.url | string | The URL of the webhook event. |
data.response | object | The response details of the webhook event. |
data.response.duration | string | The duration of the webhook event. |
data.response.code | string | The response code of the webhook event. |
data.payload | object | The payload of the webhook event. |
data.payload.event | string | The event name of the webhook event. |
data.payload.data | object | The data of the webhook event. |
data.payload.data.id | string | The ID of the webhook event. |
data.payload.data.referenceNumber | string | The reference number of the webhook event. |
data.payload.data.amount | string | The amount of the webhook event. |
data.payload.data.settlementAmount | string | The settlement amount of the webhook event. |
data.payload.data.type | string | The type of the webhook event. |
data.payload.data.state | string | The state of the webhook event. |
data.payload.data.paymentMethod | string | The payment method of the webhook event. |
data.payload.data.destination | string | The destination of the webhook event. |
data.payload.data.source | object | The source of the webhook event. |
data.payload.data.source.bankName | string | The bank name of the webhook event. |
data.payload.data.source.accountName | string | The account name of the webhook event. |
data.payload.data.source.accountNumber | string | The account number of the webhook event. |
data.payload.data.source.provider | string | The provider of the webhook event. |
data.payload.data.fee | object | The fee of the webhook event. |
data.payload.data.fee.vat | string | The VAT of the webhook event. |
data.payload.data.fee.stampDuty | string | The stamp duty of the webhook event. |
data.payload.data.fee.base | string | The base fee of the webhook event. |
data.payload.data.created | string | The created timestamp of the webhook event. |
data.payload.data.processed | string | The processed timestamp of the webhook event. |
data.created | string | The created timestamp of the webhook event. |
data.processed | string | The processed timestamp of the webhook event. |
Momo Payouts Webhook
meCash sends webhook notifications for mobile money payouts. Subscribe to these events to track the lifecycle of your payouts.- payout.completed
- payout.pending
- payout.refund
- payout.failed
This event is triggered when a payout is successfully processed and the funds have been delivered to the recipient.
{
"event": "payout.completed",
"data": {
"id": "5bab8c78-d3c1-4f91-88fd-6e81700aa97f",
"reason": "Refund",
"remark": "Testing",
"referenceNumber": "009H8DYVZES86",
"type": "SEND",
"state": "COMPLETED",
"quote": {
"id": "7c8eb365-285c-4b75-bcc8-xxxxxxxx",
"paymentChannel": "MOBILE_MONEY",
"source": {
"currency": "RWF",
"country": "RW",
"amount": "50.00"
},
"target": {
"currency": "RWF",
"country": "RW",
"amount": "50.00"
},
"rate": "1.0000",
"fee": {
"amount": "0.600000",
"stampDuty": "0.000000"
},
"summary": {
"total": "50.60"
}
},
"recipient": {
"name": "Ejiro Dare",
"account": {
"accountNumber": "+25079137xxxx",
"mobileProvider": "MTN_MOMO_RWA"
}
},
"created": "2026-05-08T15:05:09.040130Z",
"processed": "2026-05-08T15:06:58.208062455Z"
}
}
This event is triggered when a payout is initiated and is currently being processed by the network.
{
"event": "payout.pending",
"data": {
"id": "5bab8c78-d3c1-4f91-88fd-6e81700aa97f",
"reason": "Refund",
"remark": "Testing",
"referenceNumber": "009H8DYVZES86",
"type": "SEND",
"state": "PENDING",
"quote": {
"id": "7c8eb365-285c-4b75-bcc8-xxxxxxxx",
"paymentChannel": "MOBILE_MONEY",
"source": {
"currency": "RWF",
"country": "RW",
"amount": "50.00"
},
"target": {
"currency": "RWF",
"country": "RW",
"amount": "50.00"
},
"rate": "1.000000000000",
"fee": {
"amount": "0.6000",
"stampDuty": "0.00"
},
"summary": {
"total": "50.60"
}
},
"recipient": {
"name": "Ejiro Dare",
"account": {
"accountNumber": "+25079137xxxx",
"mobileProvider": "MTN_MOMO_RWA"
}
},
"created": "2026-05-08T15:05:09.040129870Z",
"processed": "2026-05-08T15:05:09.040129870Z"
}
}
This event is triggered if a payout fails at the network level and the funds are returned to your balance.
{
"event": "payout.refund",
"data": {
"id": "33bb4d10-60ac-4cd4-bcc0-bb084bf600ef",
"remark": "RSVL-VKWQYVUK5O49V",
"referenceNumber": "BNO2PZ2H2YWBW",
"type": "REFUND",
"state": "REFUNDED",
"quote": {
"id": "c299c608-128c-4d2a-a67e-e74fa153cbbf",
"paymentChannel": "MOBILE_MONEY",
"source": {
"currency": "RWF",
"country": "RW",
"amount": "20.00"
},
"target": {
"currency": "RWF",
"country": "RW",
"amount": "20.00"
},
"rate": "1.0000",
"fee": {
"amount": "0.240000",
"stampDuty": "0.000000"
},
"summary": {
"total": "20.24"
}
},
"recipient": {
"name": "Ejiro Dare",
"account": {
"accountNumber": "+25079137xxxx",
"mobileProvider": "MTN_MOMO_RWA"
}
},
"created": "2026-05-08T14:51:21.599289189Z",
"processed": "2026-05-08T14:51:21.599289189Z"
}
}
This event is triggered when a payout fails before reaching the recipient.
{
"event": "payout.failed",
"data": {
"id": "e634e74b-c5ca-47ee-837d-c2a95ca4b9ea",
"reason": "Refund",
"remark": "Testing",
"referenceNumber": "VKWQYVUK5O49V",
"type": "SEND",
"state": "FAILED",
"quote": {
"id": "c299c608-128c-4d2a-a67e-e74fa153cbbf",
"paymentChannel": "MOBILE_MONEY",
"source": {
"currency": "RWF",
"country": "RW",
"amount": "20.00"
},
"target": {
"currency": "RWF",
"country": "RW",
"amount": "20.00"
},
"rate": "1.0000",
"fee": {
"amount": "0.240000",
"stampDuty": "0.000000"
},
"summary": {
"total": "20.24"
}
},
"recipient": {
"name": "Ejiro Dare",
"account": {
"accountNumber": "+25079137xxxx",
"mobileProvider": "MTN_MOMO_RWA"
}
},
"created": "2026-05-08T13:59:57.262053Z",
"processed": "2026-05-08T13:59:57.262053Z"
}
}

