Building a Local Checkout Experience for Kenya
For a Kenya-optimised Paystack checkout: (1) include "mobile_money" as a channel — this enables M-Pesa STK push through Paystack; (2) amounts are in KES sent to Paystack in kobo/cents (multiply by 100); (3) set currency: "KES"; (4) include the customer phone number (07XXXXXXXX format) so Paystack can trigger the M-Pesa STK push to the right number; (5) do not restrict to card-only if you want Kenyan conversions.
Kenya-Optimised Checkout Configuration
// Kenya-optimised transaction initialization
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.email,
phone: customer.phone, // e.g., '0712345678' or '+254712345678' — required for M-Pesa STK push
amount: Math.round(orderAmountKES * 100), // KES to smallest unit
currency: 'KES',
reference: generateReference(),
channels: ['mobile_money', 'card', 'bank'], // M-Pesa first in the list
metadata: {
order_id: order.id,
},
callback_url: 'https://yourapp.com/payment/callback',
}),
});
M-Pesa STK push flow via Paystack:
- Customer selects M-Pesa at checkout
- Paystack sends an STK push to the customer's phone
- Customer enters their M-Pesa PIN
- Paystack fires a
charge.successwebhook to your server
The STK push requires a live Safaricom number — test mode simulates it automatically.
Localisation Tips for Kenyan Users
- Currency display: Show as "KES 1,000" or "Ksh 1,000" — both are familiar to Kenyan users.
- M-Pesa STK push delays: Tell customers "A payment prompt will appear on your phone within 30 seconds." Safaricom network congestion can delay STK pushes.
- Wrong number: If the customer enters their email but the phone number is wrong, the STK push fails silently. Add a phone number confirmation step at checkout.
- Airtel Money: Paystack also supports Airtel Money in Kenya via the mobile_money channel — it is enabled automatically for Airtel numbers.
Learn More
This guide is part of the Paystack by country guide.
Key Takeaways
- ✓M-Pesa is the dominant payment method in Kenya — enable mobile_money channel in every Kenyan checkout.
- ✓KES amounts go to Paystack in the smallest currency unit (multiply KES by 100 — Paystack treats it as cents/kobo).
- ✓Include the customer phone number in the initialize call to enable the M-Pesa STK push.
- ✓Card is supported for Kenyan Visa/Mastercard users, but M-Pesa has far higher checkout conversion.
- ✓Set currency: "KES" explicitly — Paystack supports multi-currency and will default to your account currency otherwise.
- ✓M-Pesa payments require the customer to have their phone and network connectivity to confirm the STK push.
Frequently Asked Questions
- Does Paystack support M-Pesa in Kenya?
- Yes. Paystack supports M-Pesa in Kenya via the mobile_money channel. When a customer selects M-Pesa at checkout, Paystack triggers an STK push to their Safaricom number. The customer enters their PIN and the payment is confirmed via a charge.success webhook.
- Why did the M-Pesa STK push not reach the customer?
- Common reasons: wrong phone number in the initialize call, Safaricom network delay (wait 60 seconds before retrying), the phone number is not registered on M-Pesa, or the customer's M-Pesa balance is insufficient. Verify the phone number format — use international format (+254XXXXXXXXX) for reliability.
- Can I accept USD from international customers via Paystack in Kenya?
- Paystack in Kenya supports KES transactions. For USD or multi-currency acceptance, you would need to configure currency conversion at the application level or use a Paystack account configured for your specific use case. Contact Paystack Kenya support for multi-currency merchant arrangements.
- Is PesaLink supported on Paystack in Kenya?
- PesaLink (Kenya Interbank Settlement System for peer-to-peer transfers) is a bank-to-bank transfer system in Kenya. As of 2026, Paystack Kenya primarily supports M-Pesa, Airtel Money, and card. For PesaLink, customers would need to use their bank's PesaLink integration separately, or you could use a Kenyan fintech gateway that supports PesaLink directly.
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