Bonaventure OgetoBy Bonaventure Ogeto|

Transfers to Ghanaian Mobile Money via Paystack

To send a Paystack transfer to Ghanaian mobile money, create a mobile_money type recipient with the phone number, provider code, and GHS currency. Paystack supports MTN MoMo, Vodafone Cash, and AirtelTigo Money. Transfers settle quickly, with the recipient receiving a notification from their provider. Amounts are in pesewas (1 GHS = 100 pesewas).

Ghanaian Mobile Money Landscape

Mobile money in Ghana is how most people move money. The three major providers are MTN Mobile Money (the largest by market share), Vodafone Cash, and AirtelTigo Money. When you build a payout system for Ghana, mobile money support is essential because many recipients either prefer it over bank transfers or do not have bank accounts.

Paystack lets you send transfers to all three providers using the same API pattern. The only difference is the provider code you pass when creating the recipient.

Mobile money transfers in Ghana are generally faster than bank transfers. The recipient gets a notification from their provider when the funds land, and they can use or withdraw the money immediately. This makes mobile money the preferred payout method for gig workers, small vendors, and individual service providers in Ghana.

Creating Mobile Money Recipients

const createGhanaianMoMoRecipient = async (name, phoneNumber, providerCode) => {
  var normalized = normalizeGhanaianPhone(phoneNumber);

  var response = await fetch('https://api.paystack.co/transferrecipient', {
    method: 'POST',
    headers: {
      Authorization: 'Bearer ' + process.env.PAYSTACK_SECRET_KEY,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      type: 'mobile_money',
      name: name,
      account_number: normalized,
      bank_code: providerCode,
      currency: 'GHS',
    }),
  });

  var data = await response.json();
  if (!data.status) {
    throw new Error('MoMo recipient creation failed: ' + data.message);
  }

  return data.data;
};

// Provider codes (check Paystack docs for current codes)
// Get these from GET /bank?country=ghana&type=mobile_money
var PROVIDERS = {
  MTN: 'MTN', // MTN Mobile Money
  VODAFONE: 'VOD', // Vodafone Cash
  AIRTELTIGO: 'ATL', // AirtelTigo Money
};

function normalizeGhanaianPhone(phone) {
  var cleaned = phone.replace(/[s-+]/g, '');

  // Convert 0xx to 233xx
  if (cleaned.indexOf('0') === 0 && cleaned.length === 10) {
    return '233' + cleaned.substring(1);
  }

  // Already in 233 format
  if (cleaned.indexOf('233') === 0 && cleaned.length === 12) {
    return cleaned;
  }

  // Just the 9-digit number
  if (cleaned.length === 9) {
    return '233' + cleaned;
  }

  throw new Error('Invalid Ghanaian phone number: ' + phone);
}

Note: Provider codes may vary. Fetch the current mobile money provider list from GET /bank?country=ghana&type=mobile_money to get the exact codes Paystack uses. Cache this list in your application.

Initiating Mobile Money Transfers

const sendToGhanaianMoMo = async (recipientCode, amountGHS, reason, reference) => {
  var amountPesewas = Math.round(amountGHS * 100);

  var response = await fetch('https://api.paystack.co/transfer', {
    method: 'POST',
    headers: {
      Authorization: 'Bearer ' + process.env.PAYSTACK_SECRET_KEY,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      source: 'balance',
      amount: amountPesewas,
      recipient: recipientCode,
      reason: reason,
      reference: reference,
    }),
  });

  var data = await response.json();
  if (!data.status) {
    throw new Error('Transfer failed: ' + data.message);
  }

  return data.data;
};

// Example: Pay a vendor 500 GHS via MTN MoMo
var result = await sendToGhanaianMoMo(
  'RCP_ghana_vendor_01',
  500, // 500 GHS
  'Weekly payout - July W3',
  'payout_gh_v01_w29'
);

The amount is in pesewas. 500 GHS = 50,000 pesewas. Track the transfer through webhook events just like any other Paystack transfer. Mobile money transfers typically trigger the transfer.success webhook faster than bank transfers because mobile money settlement is quicker.

Provider-Specific Considerations

MTN Mobile Money

The largest mobile money provider in Ghana. Most of your Ghanaian recipients will likely use MTN MoMo. Transfers are generally reliable, but MTN occasionally has maintenance windows where transfers may be delayed. MTN MoMo has account tiers with different transaction and balance limits based on the user's registration level.

Vodafone Cash

Vodafone's mobile money service. Less market share than MTN but significant. The transfer process is the same. One thing to note: Vodafone Cash users must approve incoming transfers on some account types, which can add a brief delay between your transfer initiation and the funds appearing in the recipient's wallet.

AirtelTigo Money

Following the merger of Airtel Ghana and Tigo, the mobile money service operates under AirtelTigo Money. Coverage and agent network may be smaller than MTN in some areas, but the transfer mechanism through Paystack is the same.

Phone number portability

Ghana supports mobile number portability, meaning a user can move their phone number from one provider to another while keeping the same number. If a recipient ported their number from MTN to Vodafone but you created the recipient with the MTN provider code, the transfer may fail. Always confirm the current provider with the recipient during onboarding. If transfers start failing for a previously working recipient, number portability is a likely cause.

Ghanaian Mobile Money Failure Modes

Mobile money transfers in Ghana fail for specific reasons beyond standard transfer failures.

Wrong provider code. The phone number is registered with a different provider than the one you specified. This is the most common failure and often happens due to number portability. Ask the recipient to confirm their current provider.

Number not registered for mobile money. The phone number exists but is not activated for mobile money. The person has a SIM but has not completed mobile money registration. They need to visit an agent to register.

Wallet limit exceeded. Each provider has transaction and balance limits based on the account tier. If your transfer would exceed the recipient's limit, it fails. The recipient needs to upgrade their account tier by completing additional verification.

Provider system downtime. Mobile money providers occasionally have system issues. Transfers fail with timeout or unavailable errors. These are transient and resolve on retry. MTN MoMo, being the largest, handles the highest volume and is most susceptible to peak-hour congestion.

Inactive or suspended account. The mobile money account has been deactivated due to inactivity or suspended for compliance reasons. The recipient needs to contact their provider.

All failures trigger the standard transfer.failed webhook. Check the reason field to classify and respond appropriately. For the full failure handling framework, see managing transfer failures and reversals.

Bank vs Mobile Money for Ghanaian Payouts

In Ghana, you have two payout options through Paystack: bank transfers (via GhIPSS) and mobile money.

Mobile money is better for: Individual recipients, small to moderate amounts, recipients without bank accounts, speed-sensitive payouts, and rural areas where mobile money agents outnumber bank branches.

Bank transfers are better for: Corporate recipients, large amounts above mobile money limits, recipients who need bank statements for accounting, and formal business relationships where bank settlements are expected.

Most Ghanaian platforms default to mobile money for individual payouts and offer bank transfers as an alternative for corporate vendors. During recipient onboarding, ask which option the person prefers and create the appropriate recipient type.

Build for the Ghanaian Market

Ghanaian mobile money is a critical payout channel for any product serving the Ghanaian market. Understanding the providers, failure modes, and user experience makes your product work where it matters.

The McTaba bootcamp covers payment integration across African markets, including Ghana. You build real products for real users.

Create a free McTaba account

Key Takeaways

  • Paystack supports transfers to three Ghanaian mobile money providers: MTN Mobile Money, Vodafone Cash, and AirtelTigo Money.
  • Use the mobile_money recipient type with the provider code and phone number in Ghanaian format.
  • Amounts are in pesewas (1 GHS = 100 pesewas). To send 500 GHS, pass 50000.
  • Mobile money transfers settle faster than bank transfers. The recipient gets a notification from their provider when funds arrive.
  • Phone number portability is a common issue. A user may have ported their number to a different provider than what you have on record.
  • The transfer flow is identical to other Paystack transfers: create recipient, initiate, track via webhooks.

Frequently Asked Questions

Can I send transfers to Ghanaian mobile money from a Nigerian Paystack account?
No. Paystack transfers are generally limited to the country where your business is registered. To send GHS mobile money transfers, you need a Ghanaian Paystack business account with a GHS balance.
How fast do Ghanaian mobile money transfers settle?
Mobile money transfers in Ghana typically settle within minutes. The recipient gets a notification from their mobile money provider when the funds arrive. Settlement speed can vary during provider maintenance windows or peak periods.
Do I need to specify the mobile money provider when creating a recipient?
Yes. The bank_code field in the recipient creation request identifies the mobile money provider. Use the correct code for MTN, Vodafone, or AirtelTigo. Get the current codes from GET /bank?country=ghana&type=mobile_money.

Ready to build real-world apps?

Join the McTaba Labs full-stack marathon (4 months full-time · 6 months part-time). Learn M-Pesa, USSD, and WhatsApp engineering while shipping 8 production apps.

Apply to the McTaba Marathon