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.
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:
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.
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.
Get weekly developer tips
Join 25,000+ developers. Practical guides, job tips, and new content — straight to your inbox.
No spam. Unsubscribe anytime.
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.
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.
}
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:
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 in Ghana follows Paystack's standard settlement model, but with timelines specific to the Ghanaian banking system.
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.
These are the mistakes that trip up developers building for the Ghanaian market:
For checkout design patterns optimized for Ghanaian conversion rates, see building a local checkout experience for Ghana.
KES 2,999
The definitive guide to building payment systems with Paystack — from your first transaction to production-grade payment infrastructure across Africa. 9 modules, 47 lessons. Free preview available.
Start Paystack Course