Get Mobile Money Providers
The get mobile money providers endpoint allows you to retrieve a list of all available mobile money providers for mobile money payments. This is useful for building mobile money selection interfaces in your application.
Endpoint
GET https://api.resolutpay.com/mobile-money-providers
Parameters
Parameter | Type | Required | Description |
---|---|---|---|
country | string | No | Country code (default: GH for Ghana) |
Example Request
const axios = require("axios");
const getMobileMoneyProviders = async (country = "GH") => {
try {
const response = await axios.get(
`https://api.resolutpay.com/mobile-money-providers?country=${country}`,
{
headers: {
Authorization: "Bearer YOUR_SECRET_KEY",
},
}
);
const providers = response.data.data;
console.log("Available mobile money providers:", providers);
return providers;
} catch (error) {
console.error(
"Error fetching mobile money providers:",
error.response.data
);
throw error;
}
};
// Get Ghanaian mobile money providers
getMobileMoneyProviders("GH");
// Get Kenyan mobile money providers
getMobileMoneyProviders("KE");
Example Response
{
"status": true,
"message": "Mobile money providers retrieved",
"data": [
{
"id": 1,
"name": "MTN Mobile Money",
"code": "MTN",
"active": true,
"country": "Ghana",
"currency": "GHS",
"type": "mobile_money",
"logo": "https://resolutpay.com/logos/mtn-momo.png",
"createdAt": "2023-01-01T00:00:00.000Z",
"updatedAt": "2023-01-01T00:00:00.000Z"
},
{
"id": 2,
"name": "Telecel Cash",
"code": "TELECEL",
"active": true,
"country": "Ghana",
"currency": "GHS",
"type": "mobile_money",
"logo": "https://resolutpay.com/logos/telecel-cash.png",
"createdAt": "2023-01-01T00:00:00.000Z",
"updatedAt": "2023-01-01T00:00:00.000Z"
},
{
"id": 3,
"name": "Airtel Money",
"code": "AIRTEL",
"active": true,
"country": "Ghana",
"currency": "GHS",
"type": "mobile_money",
"logo": "https://resolutpay.com/logos/airtel-money.png",
"createdAt": "2023-01-01T00:00:00.000Z",
"updatedAt": "2023-01-01T00:00:00.000Z"
}
]
}
Supported Countries
Country | Code | Currency | Providers |
---|---|---|---|
Ghana | GH | GHS | MTN Mobile Money, Telecel Cash, Airtel Money |
Kenya | KE | KES | M-Pesa, Airtel Money |
Uganda | UG | UGX | MTN Mobile Money, Airtel Money |
Tanzania | TZ | TZS | M-Pesa, Airtel Money |
Provider Object Properties
Property | Type | Description |
---|---|---|
id | integer | Unique provider identifier |
name | string | Provider name |
code | string | Provider code |
active | boolean | Whether provider is active |
country | string | Country name |
currency | string | Currency code |
type | string | Provider type (mobile_money) |
logo | string | Provider logo URL |
createdAt | string | Creation timestamp |
updatedAt | string | Last update timestamp |
Complete Example with React
import React, { useState, useEffect } from "react";
import axios from "axios";
const MobileMoneySelector = ({ onProviderSelect }) => {
const [providers, setProviders] = useState([]);
const [loading, setLoading] = useState(true);
const [error, setError] = useState(null);
const [selectedCountry, setSelectedCountry] = useState("GH");
const countries = [
{ code: "GH", name: "Ghana (Default)" },
{ code: "KE", name: "Kenya" },
{ code: "UG", name: "Uganda" },
{ code: "TZ", name: "Tanzania" },
];
const fetchProviders = async (country) => {
try {
setLoading(true);
setError(null);
const response = await axios.get(
`https://api.resolutpay.com/mobile-money-providers?country=${country}`,
{
headers: {
Authorization: `Bearer ${process.env.REACT_APP_RESOLUTPAY_SECRET_KEY}`,
},
}
);
setProviders(response.data.data);
} catch (error) {
setError("Failed to fetch mobile money providers");
console.error("Error:", error.response?.data || error.message);
} finally {
setLoading(false);
}
};
useEffect(() => {
fetchProviders(selectedCountry);
}, [selectedCountry]);
const handleCountryChange = (event) => {
setSelectedCountry(event.target.value);
};
const handleProviderSelect = (provider) => {
onProviderSelect(provider);
};
if (loading) {
return <div>Loading mobile money providers...</div>;
}
if (error) {
return <div>Error: {error}</div>;
}
return (
<div className="mobile-money-selector">
<div className="country-selector">
<label htmlFor="country">Country:</label>
<select
id="country"
value={selectedCountry}
onChange={handleCountryChange}
>
{countries.map((country) => (
<option key={country.code} value={country.code}>
{country.name}
</option>
))}
</select>
</div>
<div className="providers-grid">
{providers.map((provider) => (
<div
key={provider.id}
className="provider-card"
onClick={() => handleProviderSelect(provider)}
>
<img
src={provider.logo}
alt={provider.name}
className="provider-logo"
/>
<h3>{provider.name}</h3>
<p>{provider.country}</p>
</div>
))}
</div>
<div className="provider-info">
{providers.length > 0 && (
<p>
Found {providers.length} mobile money providers in{" "}
{countries.find((c) => c.code === selectedCountry)?.name}
</p>
)}
</div>
</div>
);
};
export default MobileMoneySelector;
Complete Example with Express.js
const express = require("express");
const axios = require("axios");
const app = express();
app.use(express.json());
// Get mobile money providers endpoint
app.get("/mobile-money-providers", async (req, res) => {
try {
const { country = "GH" } = req.query;
const response = await axios.get(
`https://api.resolutpay.com/mobile-money-providers?country=${country}`,
{
headers: {
Authorization: `Bearer ${process.env.RESOLUTPAY_SECRET_KEY}`,
},
}
);
res.json({
success: true,
data: response.data.data,
});
} catch (error) {
console.error(
"Error fetching mobile money providers:",
error.response?.data || error.message
);
res.status(500).json({
success: false,
message:
error.response?.data?.message ||
"Failed to fetch mobile money providers",
});
}
});
// Get specific provider by code
app.get("/mobile-money-providers/:code", async (req, res) => {
try {
const { code } = req.params;
const { country = "GH" } = req.query;
const response = await axios.get(
`https://api.resolutpay.com/mobile-money-providers?country=${country}`,
{
headers: {
Authorization: `Bearer ${process.env.RESOLUTPAY_SECRET_KEY}`,
},
}
);
const provider = response.data.data.find((p) => p.code === code);
if (!provider) {
return res.status(404).json({
success: false,
message: "Mobile money provider not found",
});
}
res.json({
success: true,
data: provider,
});
} catch (error) {
console.error(
"Error fetching mobile money provider:",
error.response?.data || error.message
);
res.status(500).json({
success: false,
message:
error.response?.data?.message ||
"Failed to fetch mobile money provider",
});
}
});
app.listen(3000, () => {
console.log("Server running on port 3000");
});
Mobile Money Payment Flow
When a customer selects a mobile money provider, the payment flow typically involves:
- Provider Selection: Customer chooses their mobile money provider
- Phone Number Input: Customer enters their mobile money phone number
- Payment Initiation: Payment is initiated with the provider
- USSD Prompt: Customer receives a USSD prompt to confirm payment
- Payment Confirmation: Payment is confirmed and processed
Example Mobile Money Payment
const initiateMobileMoneyPayment = async (
providerCode,
phoneNumber,
amount
) => {
try {
const response = await axios.post(
"https://api.resolutpay.com/charge",
{
amount: amount,
email: "customer@example.com",
phone_number: phoneNumber,
reference: "REF_" + Date.now(),
currency: "GHS",
payment_type: "mobile_money",
provider: providerCode,
callback_url: "https://yourwebsite.com/verify",
},
{
headers: {
Authorization: "Bearer YOUR_SECRET_KEY",
"Content-Type": "application/json",
},
}
);
console.log("Mobile money payment initiated:", response.data);
return response.data;
} catch (error) {
console.error(
"Error initiating mobile money payment:",
error.response.data
);
throw error;
}
};
// Usage
initiateMobileMoneyPayment("MTN", "+233201234567", 5000);
Error Responses
Common error responses:
{
"status": false,
"message": "Invalid country code",
"data": null
}
Error | Description |
---|---|
Invalid country code | Country code is not supported |
No providers found | No mobile money providers available for country |
Unauthorized | Invalid API key |
Next Steps
- Get Banks - Get available banks
- Resolve Account - Resolve bank account details
- Validate Account - Validate account numbers