Senegal-based mobile money platform with business APIs for checkout, payouts, and balance management
Wave is a Senegal-based mobile money platform providing business APIs for payment collection, fund disbursement, and wallet management across West and East Africa. The platform supports XOF (West African Franc) transactions and operates in multiple countries including Senegal, Côte d'Ivoire, Mali, Burkina Faso, and The Gambia.
Not all Wave products are available in all markets. Reference the table below:
| Country | Currency | Checkout API |
|---|
| Payout API |
|---|
| Balance API |
|---|
| 🇸🇳 Senegal | XOF | ✅ | ✅ | ✅ |
| 🇨🇮 Côte d'Ivoire | XOF | ✅ | ✅ | ✅ |
| 🇲🇱 Mali | XOF | ✅ | ✅ | ✅ |
| 🇧🇫 Burkina Faso | XOF | ✅ | ✅ | ✅ |
| 🇬🇲 The Gambia | GMD | ✅ | ⚠️ Limited | ✅ |
⚠️ GMD (Gambian Dalasi): The Gambia uses
"GMD"as the currency code — NOT"XOF". Passing"XOF"for Gambian customers will fail. The API key for Gambia is issued separately from UEMOA-region keys. Contact Wave to enable GMD on your account.
⚠️ Onboarding barrier — Senegal business registration required. Wave's Business Portal signup at
business.wave.comrequires a Senegal-registered business phone number to complete account creation. If you are an international developer or a non-Senegalese company, you will not be able to self-register. You must either (1) partner with a Senegalese registered business, (2) contact Wave directly at [email protected] for enterprise onboarding, or (3) use a Wave-connected aggregator (e.g. Flutterwave or CinetPay) which may offer Wave as a channel without requiring a direct Wave account.
All requests must include an HTTPS Authorization header with the Bearer scheme:
Authorization: Bearer wave_sn_prod_YOUR_API_KEY_HERE
Example with cURL:
curl -X POST https://api.wave.com/v1/checkout/sessions \
-H "Authorization: Bearer wave_sn_prod_YhUNb9d...i4bA6" \
-H "Content-Type: application/json" \
-d '{
"amount": "1000",
"currency": "XOF"
}'
Example with Python:
import requests
api_key = "wave_sn_prod_YOUR_API_KEY_HERE"
headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
response = requests.post(
"https://api.wave.com/v1/checkout/sessions",
headers=headers,
json={
"amount": "1000",
"currency": "XOF",
"success_url": "https://example.com/success",
"error_url": "https://example.com/error"
}
)
Example with Node.js:
const axios = require('axios');
const apiKey = 'wave_sn_prod_YOUR_API_KEY_HERE';
axios.post('https://api.wave.com/v1/checkout/sessions', {
amount: '1000',
currency: 'XOF',
success_url: 'https://example.com/success',
error_url: 'https://example.com/error'
}, {
headers: {
'Authorization': `Bearer ${apiKey}`,
'Content-Type': 'application/json'
}
})
.then(response => console.log(response.data))
.catch(error => console.error(error.response.data));