Websites10 min read

MTN MoMo API Ghana Ivory Coast: integrate Mobile Money 2026

Mohamed Bah·Fondateur, Kolonell
May 30, 2026
Share:
MTN MoMo API Ghana Ivory Coast: integrate Mobile Money 2026

MTN MoMo API Ghana Ivory Coast: integrate Mobile Money 2026

Websites

MTN Mobile Money (MoMo) operates in 16 African countries: Ghana, Ivory Coast, Cameroon, Uganda, Rwanda, Benin, Congo, etc. 70M+ active users. To sell in these countries, MoMo is essential. MTN launched MoMo Open API 2019 for developer integration. Here's a complete 2026 guide.

TL;DR

- MTN MoMo Open API: standardized multi-country public API.

- Collection: receive customer payments (equivalent M-Pesa C2B).

- Disbursement: send payouts (B2C).

- Fees: 1-3% per transaction per country + volume.

MTN MoMo coverage 2026

CountryUsersMobile money market share
Ghana25M90%
Ivory Coast12M60% (vs Orange Money)
Cameroon8M75%
Uganda18M80%
Rwanda4M90%
Benin3M70%
Congo (DRC + Brazzaville)6M65%
Zambia5M50%
Nigeria (MTN MoMo PSB)15M25% (Opay competition)

MTN MoMo Developer Portal registration

  • Go to momodeveloper.mtn.com
  • Create developer account
  • Subscribe to a product:
  • Collections (receive payments)
  • Disbursements (payouts)
  • Remittance (transfers)
  • Get Subscription Key
  • Create API User + API Key (programmatic)
  • Sandbox first, then production after KYC

Collections integration (Node.js)

Step 1 — create API user (one-time)

`typescript

import axios from 'axios';

import { v4 as uuid } from 'uuid';

async function createApiUser() {

const referenceId = uuid();

await axios.post(

'https://sandbox.momodeveloper.mtn.com/v1_0/apiuser',

{ providerCallbackHost: 'kolonell.com' },

{

headers: {

'X-Reference-Id': referenceId,

'Ocp-Apim-Subscription-Key': process.env.MOMO_SUBSCRIPTION_KEY,

},

}

);

// Create API Key for this user

const apiKey = await axios.post(

https://sandbox.momodeveloper.mtn.com/v1_0/apiuser/${referenceId}/apikey,

null,

{

headers: {

'Ocp-Apim-Subscription-Key': process.env.MOMO_SUBSCRIPTION_KEY,

},

}

);

return { userId: referenceId, apiKey: apiKey.data.apiKey };

}

`

Step 2 — get token

`typescript

async function getMomoToken() {

const auth = Buffer.from(

${process.env.MOMO_USER_ID}:${process.env.MOMO_API_KEY}

).toString('base64');

const res = await axios.post(

'https://sandbox.momodeveloper.mtn.com/collection/token/',

null,

{

headers: {

Authorization: Basic ${auth},

'Ocp-Apim-Subscription-Key': process.env.MOMO_SUBSCRIPTION_KEY,

},

}

);

return res.data.access_token;

}

`

Step 3 — initiate payment (request to pay)

`typescript

async function requestToPay({

phoneNumber, // E.164 MSISDN format without +

amount,

currency, // GHS, XOF, EUR, etc.

externalId,

payerMessage,

payeeNote,

}) {

const token = await getMomoToken();

const referenceId = uuid();

await axios.post(

'https://sandbox.momodeveloper.mtn.com/collection/v1_0/requesttopay',

{

amount: amount.toString(),

currency,

externalId,

payer: {

partyIdType: 'MSISDN',

partyId: phoneNumber,

},

payerMessage,

payeeNote,

},

{

headers: {

Authorization: Bearer ${token},

'X-Reference-Id': referenceId,

'X-Target-Environment': 'sandbox', // or 'mtnghana', 'mtncotedivoire', etc.

'Ocp-Apim-Subscription-Key': process.env.MOMO_SUBSCRIPTION_KEY,

'Content-Type': 'application/json',

},

}

Need a professional website?

Kolonell builds websites that attract clients, optimized for the Sénégalese market. Free quote in 2 minutes.

);

return referenceId; // Save for query

}

`

Step 4 — check status

`typescript

async function queryPayment(referenceId: string) {

const token = await getMomoToken();

const res = await axios.get(

https://sandbox.momodeveloper.mtn.com/collection/v1_0/requesttopay/${referenceId},

{

headers: {

Authorization: Bearer ${token},

'X-Target-Environment': 'sandbox',

'Ocp-Apim-Subscription-Key': process.env.MOMO_SUBSCRIPTION_KEY,

},

}

);

return res.data;

// { status: 'SUCCESSFUL' | 'PENDING' | 'FAILED', ... }

}

`

Standard e-commerce checkout workflow

`

  • User: enters phone number + amount
  • Frontend: POST /api/payment {phone, amount}
  • Backend: call requestToPay → receives referenceId
  • Backend: saves {referenceId, orderId, status: 'PENDING'} in DB
  • Frontend: shows "Check your phone"
  • User: receives MoMo USSD/popup prompt, validates PIN
  • Backend: polls queryPayment(referenceId) every 5s for 60s
  • Backend: SUCCESSFUL status → mark order paid
  • Frontend: success redirect

`

Disbursements (B2C payouts)

For payouts (refunds, payroll, marketplace):

`typescript

async function transfer({

phoneNumber,

amount,

currency,

externalId,

}) {

const token = await getDisbursementToken(); // Disbursement endpoint

const referenceId = uuid();

await axios.post(

'https://sandbox.momodeveloper.mtn.com/disbursement/v1_0/transfer',

{

amount: amount.toString(),

currency,

externalId,

payee: {

partyIdType: 'MSISDN',

partyId: phoneNumber,

},

payerMessage: 'Payout',

payeeNote: 'Order refund',

},

{

headers: {

Authorization: Bearer ${token},

'X-Reference-Id': referenceId,

'X-Target-Environment': 'mtnghana',

'Ocp-Apim-Subscription-Key': process.env.MOMO_DISBURSEMENT_KEY,

},

}

);

return referenceId;

}

`

Country specifics

Ghana

  • Currency: GHS
  • Target environment: mtnghana
  • Fees: 1.5% in Collections
  • Open Banking: Direct GH (competitiveness)

Ivory Coast

  • Currency: XOF
  • Target environment: mtncotedivoire
  • Fees: 2% Collections
  • Competition: Orange Money (Wave more minor)

Cameroon

  • Currency: XAF (CEMAC)
  • Target environment: mtncameroon
  • Fees: 2.5%

Uganda

  • Currency: UGX
  • Target environment: mtnuganda
  • Fees: 1.5-2%

Common mistakes

  • Wrong Target Environment — different sandbox vs prod per country.
  • No unique X-Reference-Id — duplicates rejected.
  • Incorrect MSISDN format — without + without 00.
  • Wrong product Subscription Key — Collections vs Disbursements ≠.
  • Not checking float account — Disbursements fail if empty balance.

2026 pricing

CountryCollectionsDisbursements
Ghana1.5%0.8%
Ivory Coast2%1%
Cameroon2.5%1.2%
Uganda1.5%0.8%

Volumes negotiable >10M XOF/month.

Pan-African alternatives

  • DPO Group: multi-country aggregator, MoMo + cards + crypto
  • Flutterwave: Nigeria-leader aggregator, supports MoMo
  • Paystack: Nigeria-first, expand MoMo Ghana CI
  • PayDunya: Senegal/CI-first, MoMo + Wave + cards

For multi-country startup, aggregator simpler than direct MoMo.

FAQ

Q: MoMo Ivory Coast or Orange Money?

A: Both. Orange Money 50% CI, MoMo 35%. Aggregator (DPO/Flutterwave) covers both.

Q: MoMo business account vs personal?

A: Mandatory business account for API. Creation via local MTN agencies.

Q: KYC duration?

A: 5-15 days after complete deposit. Incorporation docs + KYC directors.

Conclusion

MTN MoMo API 2026 = essential for Ghana / IC / Cameroon. Standardized Open API but per-country setup. For multi-country Africa, aggregator (DPO/Flutterwave) often simpler. For single market scaling, direct MoMo integration wins on margins.

Tags:#MTN MoMo#Mobile Money#Ghana#Ivory Coast#API#Cameroon
Share:

Mohamed Bah

Fondateur, Kolonell

Passionate about digital and entrepreneurship in Africa, Mohamed has been helping Sénégalese businesses with their digital transformation since 2020. Founder of Kolonell, he believes every SME deserves a professional and accessible online présence.