Skip to main content
The meCash Mobile Money Collections API enables merchants to programmatically request payments from customers using mobile money wallets. This is ideal for funding your meCash wallet or collecting payments in local currencies like MWK, RWF, KES, and TZS.

1. Discover Supported Mobile Networks

Before requesting a payment, you should discover which mobile money networks are supported in the target country and currency by passing the country code.

Get Networks Endpoint

GET: {{baseURL}}/v1/mobileMoneyOperator

Query Parameters

FieldTypeDescriptionRequired
countrystringISO country code (e.g., MW, RW, KE, TZ).βœ… Yes
currencystringISO currency code (e.g., MWK, RWF, KES, TZS).βœ… Yes
This Endpoint is optional for Kenyan Mobile Money Collections.
curl --location '{{baseURL}}/v1/mobileMoneyOperator?country=MW&currency=MWK' \
--header 'Content-Type: application/json' \
--header 'x-api-key: YOUR_API_KEY'

Sample Response

{
    "message": "recipient mobile networks fetched successfully",
    "status": "success",
    "data": [
        {
            "name": "TNM Mpamba",
            "country": "MW",
            "code": "TNM Mpamba"
        },
        {
            "name": "Airtel Money",
            "country": "MW",
            "code": "Airtel Money"
        }
    ]
}

2. Request a Payment (Initiate Collection)

Once you have the network details, you can initiate a collection request. This will trigger a prompt on the customer’s mobile device to authorize the payment.

Initiate Collection Endpoint

POST: {{baseURL}}/v1/funding

Request Body Breakdown

FieldTypeDescriptionRequired
currencystringISO currency code.βœ… Yes
countrystringISO country code.βœ… Yes
amountnumberThe total amount to collect.βœ… Yes
paymentMethodstringMust be MOBILE_MONEY.βœ… Yes
mobileobjectContainer for mobile-specific details.βœ… Yes
mobile.numberstringThe customer phone number (with country code).βœ… Yes
mobile.providerstringThe name/code of the mobile money network.βœ… Yes
curl --location '{{baseURL}}/v1/funding' \
--header 'Content-Type: application/json' \
--header 'x-api-key: YOUR_API_KEY' \
--data '{
    "currency":"MWK",
    "country":"MW",
    "amount": 100.00,
    "mobile": {
        "number": "+265123456789",
        "provider": "Airtel Money"
    },
    "paymentMethod": "MOBILE_MONEY"
}'

Sample Response

{
    "message": "fund transaction initiated successfully",
    "status": "success",
    "data": {
        "referenceNumber": "Q1PEGKO4QFRRR",
        "uniqueReference": "ad33948f-68fd-4279-8d5c-651f43ec294a",
        "transactionId": "be6a81e7-59f3-406b-9d92-a615e8ccfb4c",
        "paymentMethod": "MOBILE_MONEY",
        "amount": 100.00
    }
}

3. Webhook Lifecycle Events

Mobile money collections are asynchronous. You should listen for the following webhook events (detailed in the Collection Webhook guide) to track the payment lifecycle:
EventDescription
collection.initiatedThe collection request has been sent to the provider.
collection.processingThe customer has been prompted and we are awaiting authorization.
collection.completedThe payment was successful and funds have been added to your wallet.
collection.failedThe payment was rejected or timed out.
Ensure your webhook URL is correctly configured and verified to receive these notifications.