Bonaventure OgetoBy Bonaventure Ogeto|

Paystack in Ghana: Complete Developer Guide

Paystack in Ghana supports card payments (Visa, Mastercard), mobile money (MTN MoMo, Vodafone Cash, AirtelTigo Money), and bank transfers. Mobile money is the dominant payment method in Ghana, with MTN Mobile Money having the largest market share. All API amounts are in pesewas, where 1 GHS equals 100 pesewas.

Why Ghana Matters for Paystack Developers

Ghana was one of the first markets Paystack expanded to after Nigeria, and the country has its own distinct payment landscape. The Ghana Interbank Payment and Settlement Systems (GhIPSS) oversees electronic payments, and mobile money interoperability has made it possible for customers to send money between different telecom networks.

Key characteristics of the Ghanaian payment market:

  • Mobile money dominates. MTN Mobile Money (MoMo) is the largest mobile money provider in Ghana, followed by Vodafone Cash and AirtelTigo Money. More Ghanaians have mobile money accounts than bank accounts.
  • Mobile money interoperability exists. Ghana has implemented interoperability between mobile money providers, which means customers can pay from any network. This is more advanced than some other African markets.
  • The Ghana Cedi (GHS) is the local currency. All domestic transactions happen in GHS. Amounts in the Paystack API are in pesewas. One cedi equals 100 pesewas.
  • Card usage is growing. Ghana has a growing base of Visa and Mastercard holders, but cards are still secondary to mobile money for everyday online payments.
  • Regulatory oversight is active. The Bank of Ghana regulates payment service providers. Electronic money issuers and payment service providers need proper licensing.

If you are building a product for the Ghanaian market, understanding that mobile money is the primary payment channel will guide your checkout design, your conversion optimization, and your settlement planning.

Getting Started with Paystack in Ghana

Setting up Paystack for a Ghanaian business follows a similar path to other markets, with Ghana-specific verification requirements.

Step 1: Create your Paystack account

Sign up at paystack.com and select Ghana as your country. Test mode is available immediately with test API keys.

Step 2: Complete business verification

To go live, you need your Ghana Revenue Authority (GRA) TIN, certificate of incorporation or business registration from the Registrar General's Department, government-issued ID of the business director, and your Ghanaian bank account details for settlement.

Step 3: Initialize a GHS transaction

var response = await fetch('https://api.paystack.co/transaction/initialize', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer ' + process.env.PAYSTACK_SECRET_KEY,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    email: 'customer@example.com.gh',
    amount: 500000, // 5,000 GHS in pesewas
    currency: 'GHS',
    reference: 'gh_order_' + Date.now(),
    callback_url: 'https://yoursite.com.gh/payment/callback',
  }),
});

var data = await response.json();
// Redirect to data.data.authorization_url

Always pass currency: 'GHS' explicitly. The amount of 500000 means 5,000 GHS (500,000 pesewas divided by 100).

For the full onboarding process and common rejection reasons, see Paystack onboarding and compliance in Ghana.

Payment Channels Available in Ghana

Ghana has a strong set of payment channels on Paystack, with mobile money being the standout feature for the market.

Mobile Money (MTN MoMo, Vodafone Cash, AirtelTigo Money)

This is the highest-converting channel in Ghana. When a customer selects mobile money, they choose their provider (MTN, Vodafone, or AirtelTigo), enter their phone number, and authorize the payment via a USSD prompt or app notification on their phone. The experience varies slightly between providers, but the result is the same: the customer authorizes with their PIN, and Paystack receives confirmation.

Cards (Visa, Mastercard)

Card payments work for customers with Visa or Mastercard issued by Ghanaian or international banks. Card payments go through 3D Secure authentication (OTP verification). Cards are more common among urban professionals and business customers.

Bank Transfer

Customers can pay by transferring from their bank account. This is useful for higher-value transactions and B2B payments where bank transfers are the norm.

// Initialize with mobile money as the primary channel
var response = await fetch('https://api.paystack.co/transaction/initialize', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer ' + process.env.PAYSTACK_SECRET_KEY,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    email: 'customer@example.com',
    amount: 50000, // 500 GHS in pesewas
    currency: 'GHS',
    channels: ['mobile_money', 'card'],
    reference: 'gh_' + Date.now(),
  }),
});

For detailed conversion data and channel-specific engineering patterns, see payment methods available on Paystack in Ghana.

Working with GHS Amounts

The Ghana Cedi (GHS) uses pesewas as the smallest unit. One cedi equals 100 pesewas. All amounts in the Paystack API are in pesewas.

function ghsToPesewas(ghs) {
  return Math.round(ghs * 100);
}

function pesewasToGhs(pesewas) {
  return pesewas / 100;
}

// Examples
ghsToPesewas(500);     // 50000 pesewas = 500 GHS
ghsToPesewas(29.99);   // 2999 pesewas = 29.99 GHS
ghsToPesewas(10000);   // 1000000 pesewas = 10,000 GHS

When displaying amounts to Ghanaian customers, use the GHS symbol or the cedi sign. Format amounts with two decimal places. Ghanaian customers are accustomed to seeing prices as "GHS 500.00" or "GH¢ 500.00".

Always verify the amount after a transaction completes:

var verifyData = await verifyTransaction(reference);

if (verifyData.data.status === 'success') {
  var expectedPesewas = 50000; // 500 GHS
  if (verifyData.data.amount !== expectedPesewas) {
    console.error('Amount mismatch: expected ' + expectedPesewas + ' pesewas, got ' + verifyData.data.amount);
    return;
  }
  // Amount verified. Deliver value.
}

Engineering for Ghana Mobile Money

Mobile money in Ghana works differently from M-Pesa in Kenya. Each telecom provider has its own authorization flow, and the customer experience varies.

MTN Mobile Money: The customer enters their MTN number. They receive a USSD prompt on their phone asking them to authorize the payment by entering their MoMo PIN. The transaction completes once the PIN is entered.

Vodafone Cash: Similar flow but uses Vodafone's authorization mechanism. The customer may need to generate a voucher code or authorize via USSD.

AirtelTigo Money: Follows the same pattern of phone number entry and PIN authorization via USSD.

Key engineering considerations:

  • USSD timeouts are longer than you expect. The customer needs to switch to their dialer, enter the USSD code, navigate menus, and enter their PIN. This can take 30 to 60 seconds. Your frontend should show a waiting state and not time out too quickly.
  • Network-specific errors need clear messaging. If a customer's mobile money account has insufficient balance, or their account is inactive, the error from Paystack will indicate this. Show the customer a clear message rather than a generic "payment failed" screen.
  • Phone number format. Ghanaian numbers follow the format 0XX-XXX-XXXX or +233-XX-XXX-XXXX. Normalize numbers before sending to Paystack.
  • Interoperability means cross-network payments work. A customer with MTN MoMo can sometimes pay merchants on other networks. This is handled at the infrastructure level, but be aware that cross-network transactions may take slightly longer.

Your webhook handler should be prepared for mobile money-specific data in the response:

if (event.event === 'charge.success') {
  var channel = event.data.channel;
  var authorization = event.data.authorization;

  if (channel === 'mobile_money') {
    // Mobile money payment confirmed
    var phone = authorization.mobile_money_number;
    var provider = authorization.bank; // e.g., 'MTN'
    console.log('MoMo payment from ' + phone + ' via ' + provider);
  }
}

Settlement and Reconciliation in Ghana

Settlement in Ghana follows Paystack's standard settlement model, but with timelines specific to the Ghanaian banking system.

  • Settlement destination: Paystack settles to your registered Ghanaian bank account. Make sure your bank details are correct during onboarding.
  • Settlement timing: The schedule depends on your account tier and transaction volume. Check your Paystack dashboard for your specific settlement days and cutoff times.
  • Fee deduction: Paystack deducts its processing fee before settlement. Your dashboard shows both gross and net amounts.
  • Currency: Settlement is in GHS. If you need to convert to other currencies, that happens outside of Paystack through your bank.

For reconciliation, match your internal transaction records against Paystack's settlement reports. The transaction reference is your primary key for matching. Download settlement reports from the Paystack dashboard or fetch them via the API:

var response = await fetch('https://api.paystack.co/settlement', {
  headers: {
    Authorization: 'Bearer ' + process.env.PAYSTACK_SECRET_KEY,
  },
});

var settlements = await response.json();
// Each settlement contains the total amount, settled amount, and date

For a detailed guide on settlement timelines and reconciliation strategies, see settlement and payouts on Paystack in Ghana.

Common Pitfalls for Ghanaian Integrations

These are the mistakes that trip up developers building for the Ghanaian market:

  • Card-first checkout design. Ghana is a mobile money market. If your checkout puts cards first, you are losing conversions. Design for mobile money first, then cards as a secondary option.
  • Ignoring pesewa conversion. The pesewa is less well-known than kobo (Nigeria) or cents. Developers sometimes forget to multiply by 100, resulting in charges that are 100x too low. Add a conversion check before every API call.
  • Not handling USSD authorization delays. When a customer pays with mobile money in Ghana, the USSD authorization flow takes time. Do not show an error after 10 seconds. Wait for the webhook.
  • Assuming Nigerian-style bank transfers. Bank transfers in Ghana may work differently from Nigeria's dedicated virtual account system. Test the bank transfer flow thoroughly in your market.
  • Not testing with all three mobile money providers. MTN, Vodafone, and AirtelTigo have different flows. Test with all three to ensure your checkout works regardless of which provider the customer uses.
  • Hardcoding fee assumptions. Fee structures differ by market and can change. Let Paystack calculate fees and read them from the transaction response.

For checkout design patterns optimized for Ghanaian conversion rates, see building a local checkout experience for Ghana.

Build Payment Systems That Work in Ghana

Paystack in Ghana gives you access to the mobile money infrastructure that powers commerce across the country. The key is understanding how Ghanaian customers pay and designing your flows around their habits.

If you want to build payment systems that work across African markets, the McTaba bootcamp covers multi-country payment integration as part of the curriculum. You will ship code that handles real transactions across different currencies and payment channels.

Create a free McTaba account

Key Takeaways

  • Ghana is a mobile money-heavy market. MTN Mobile Money (MoMo) has the largest share, followed by Vodafone Cash and AirtelTigo Money. Your checkout should prioritize mobile money.
  • All amounts in the Paystack API for Ghana are in pesewas. 1 GHS equals 100 pesewas. Passing 5000 means 50 GHS, not 5,000 GHS.
  • Card payments in Ghana work for Visa and Mastercard. Card penetration is growing but mobile money remains the primary payment method for most Ghanaians.
  • Business verification requires a Ghana Revenue Authority TIN, certificate of incorporation or business registration, and director identification.
  • Settlement to Ghanaian bank accounts follows a different timeline than Nigeria. Check your Paystack dashboard for your specific schedule.
  • Mobile money transactions in Ghana involve USSD-based authorization on some networks. The customer experience varies by telecom provider.
  • Test mode simulates all payment channels. Use it to validate your entire flow including webhook handling before going live.

Frequently Asked Questions

What mobile money providers does Paystack support in Ghana?
Paystack in Ghana supports MTN Mobile Money (MoMo), Vodafone Cash, and AirtelTigo Money. MTN MoMo has the largest market share. All three providers are available through the Paystack checkout.
What is the currency unit for Paystack in Ghana?
Paystack uses pesewas as the amount unit for Ghana. One Ghana Cedi (GHS) equals 100 pesewas. To charge 500 GHS, pass amount: 50000 in the API call.
How long does Paystack settlement take in Ghana?
Settlement timelines in Ghana depend on your account tier and transaction volume. Check your Paystack dashboard for your specific settlement schedule. Settlement happens to your registered Ghanaian bank account.
Do I need a Ghana Revenue Authority TIN to use Paystack in Ghana?
Yes. To go live on Paystack in Ghana, you need a GRA TIN, certificate of incorporation or business registration, and director identification. Test mode is available immediately without these documents.
Can I accept both mobile money and card payments on Paystack in Ghana?
Yes. Paystack in Ghana supports mobile money, card payments (Visa, Mastercard), and bank transfers. You can offer all channels or restrict to specific ones using the channels parameter when initializing a transaction.

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