Mctaba Labs logo
BootcampData ScienceThe WhiteboardProjectsEventsMasterclassesWebinarsLearn
Book CallApply

500+ developers already in the community

Get answers, find accountability partners, and stay ahead

Join Discord →
Mctaba Labs logo

Educating 1 million students in tech by 2030.

Programs

  • Coding Bootcamp in Nairobi
  • Data Science to AI Engineering
  • HighSchool Graduates Launchpad
  • AI & Business Automation
  • Corporate Training
  • Kids & Teens
  • McTaba Story & Mission
  • Full-Stack Curriculum
  • Course Pricing & Plans
  • Frequently Asked Questions

Resources

  • Join Discord Community
  • Tech Events in Nairobi
  • Masterclasses
  • Free Resources
  • Learn
  • Data Science Guides
  • African Payments Reference
  • Campus
  • Africa Tech Talent Report
  • Partner With Us
  • Start a Project
  • Software & AI Studio
  • Our Work
  • Outcomes

Contact Us

  • 124 Manyani East Road, Lavington, Nairobi
  • +254727795603
  • Book a Discovery Call

Office Hours:

Mon-Fri: 9am - 2pm EAT

Sat: 10am - 12pm EAT

© 2026 Mctaba Labs - A product of Edtech Industries. All rights reserved.

Privacy PolicyTerms of ServiceRefund Policy
  1. Learn
  2. African Payments Developer Reference
  3. Paystack Mobile Money Provider Codes: mtn, atl, vod, mpesa, orange and wave by Country
Bonaventure OgetoBy Bonaventure Ogeto|Updated November 3, 2026

Last checked 3 November 2026

Paystack Mobile Money Provider Codes: mtn, atl, vod, mpesa, orange and wave by Country

Send the provider code in the mobile_money object of a Paystack charge: mtn (Ghana, Côte d'Ivoire), atl (Ghana, Kenya), vod (Ghana), mpesa (Kenya), orange and wave (Côte d'Ivoire). Mobile money is only for businesses in Ghana, Kenya and Côte d'Ivoire. Checked on 3 November 2026.

In this article

  1. 1. The six codes, and the country each one works in
  2. 2. What the charge request looks like
  3. 3. After the charge: 180 seconds, a webhook, and Verify
  4. 4. The three Kenyan M-Pesa variants: STK push, Offline and Till
  5. 5. Test with the published numbers, then confirm in live

The six codes, and the country each one works in

Imagine your checkout shows a phone field and a network dropdown. Somebody in Kisumu picks M-Pesa, somebody in Kumasi picks MTN. Behind the dropdown, your server sends one short string, and Paystack rejects the charge if the string is wrong for the country.

Paystack documents the codes in its payment channels page. The feature "is only available to businesses in Ghana, Kenya, and Côte d'Ivoire" (Paystack payment channels docs, checked on 3 November 2026). Here is the table, with the country as Paystack lists it.

NetworkCodeCountry
MTNmtnGhana and Côte d'Ivoire
ATMoney and Airtel MoneyatlGhana and Kenya
TelecelvodGhana
M-PESAmpesaKenya
OrangeorangeCôte d'Ivoire
WavewaveCôte d'Ivoire

Sources: Paystack payment channels docs, checked on 3 November 2026.

To practise these calls against a sandbox, take the Payment Integration for Developers course.

Two details trip people. The same code mtn means a different network and country depending on the business you are charging from. And atl covers Airtel Money in Kenya and Ghana under one code.

This sits inside a bigger picture of which rails work where. The African payment rails matrix has the wider table, and how to check a payment API against your own country explains how to confirm a country yourself.

What the charge request looks like

You send a POST to https://api.paystack.co/charge with your secret key as a Bearer token. The body holds amount, email, currency and a mobile_money object with phone and provider (Paystack payment channels docs, checked on 3 November 2026).

POST https://api.paystack.co/charge
{
  "amount": 1000,
  "email": "customer@example.com",
  "currency": "GHS",
  "mobile_money": { "phone": "0551234987", "provider": "mtn" }
}

The docs example above uses GHS and an MTN number (Paystack payment channels docs, checked on 3 November 2026). For Kenya you change the currency to KES and the provider to mpesa. Paystack's currency table lists KES as available in Kenya (Paystack API reference, checked on 3 November 2026).

Phone format matters for M-Pesa. The docs recommend adding the country code for STK push, so 0722000000 becomes +254722000000 (Paystack payment channels docs, checked on 3 November 2026). The Ghana example in the same page uses the local form, 0551234987.

A good request returns data.status of pay_offline and a display text, "Please complete authorization process on your mobile phone". Show that text and wait (Paystack payment channels docs, checked on 3 November 2026).

Get weekly developer tips

Join 25,000+ developers. Practical guides, job tips, and new content — straight to your inbox.

No spam. Unsubscribe anytime.

After the charge: 180 seconds, a webhook, and Verify

Think of the customer at a matatu stage with a phone in one hand. The prompt arrives on that phone, not on your page. Paystack says the customer has 180 seconds to finish or the transaction fails, and you need a webhook URL to receive the final status (Paystack payment channels docs, checked on 3 November 2026).

  • Wait for the charge.success webhook and mark the order paid only then.
  • If nothing arrives after 180 seconds, call Verify Transaction. The failure reason sits in data.message (Paystack payment channels docs, checked on 3 November 2026).
  • Do not try to charge a returning customer directly. Paystack says that is not available for mobile money, so every payment is a new transaction (Paystack payment channels docs, checked on 3 November 2026).

Webhook delivery also differs by environment. In live mode events go out every 3 minutes for the first 4 tries, then hourly for 72 hours. In test mode they go out hourly for 10 hours (Paystack webhooks docs, checked on 3 November 2026). Verify the x-paystack-signature header before you trust an event.

The three Kenyan M-Pesa variants: STK push, Offline and Till

Kenya has more than one way to pay with M-Pesa, and Paystack mirrors them.

  • STK push (mpesa): the customer gets a prompt and enters their PIN (Paystack payment channels docs, checked on 3 November 2026).
  • Offline (mpesa_offline, currency KES): the response gives an account_number, which is the Paybill, and an account_reference that identifies the transaction. Paystack warns that "wrong amounts will lead to transaction failure", so a new charge is needed to change the amount (Paystack payment channels docs, checked on 3 November 2026).
  • Till (mptill): set account to the other business's Till number. That business's phone receives the authorisation prompt (Paystack payment channels docs, checked on 3 November 2026).

Offline suits a customer who reads a paybill off a screen at a pharmacy counter. STK push suits the customer already on your site. Till covers payments to another business's Till number.

If you collect from Kenyan banks too, Pesalink is a separate channel: available to registered Kenyan businesses, enabled by contacting Paystack support, with an account valid for 25 minutes (Paystack payment channels docs, checked on 3 November 2026).

Test with the published numbers, then confirm in live

Paystack publishes mobile money test numbers: an MTN number 055 123 498 7 with no PIN or OTP, an M-Pesa Kenya number +254 710 000 000 with no PIN or OTP, and an Orange Côte d'Ivoire number that needs OTP 1234 (Paystack test payments, checked on 3 November 2026). The page does not list a separate Telecel or Wave test number.

Test mode proves your code path: request, pay_offline, webhook, order update. It cannot prove a real phone will get a real prompt. Do one small live payment before you tell a client it works.

For the build skills, the Payment Integration for Developers course covers charge requests, callbacks and reconciliation. To see where each rail's sandbox stops matching production, read sandbox to production across African payment rails. Existing guides: accepting mobile money through Paystack and mobile money charge stuck at pending. If you want it built for you, see payments integration at Mctaba Labs.

Key Takeaways

  • ✓Six codes: mtn, atl, vod, mpesa, orange and wave, each tied to a country on the Paystack docs page.
  • ✓Mobile money is for businesses in Ghana, Kenya and Côte d'Ivoire only.
  • ✓Kenya has three M-Pesa variants: mpesa, mpesa_offline and mptill.
  • ✓The customer has 180 seconds; trust the webhook, then Verify if it is late.

Frequently Asked Questions

What is the Paystack provider code for M-Pesa?
The code is mpesa for STK push in Kenya. Paystack also documents mpesa_offline for Paybill-style payments and mptill for paying another business's Till. Checked on 3 November 2026.
Does Paystack mobile money work in Uganda or Tanzania?
Paystack says mobile money is only available to businesses in Ghana, Kenya and Côte d'Ivoire. Uganda and Tanzania are not on that list. Checked on 3 November 2026.
Which code do I send for Airtel Money?
Send atl. Paystack lists ATMoney and Airtel Money under that code for Ghana and Kenya. Checked on 3 November 2026.
How long does the customer have to approve a mobile money charge?
Paystack gives the customer 180 seconds. If no charge.success webhook arrives, call Verify Transaction to read the result. Checked on 3 November 2026.

Learn M-Pesa Daraja properly

STK push, C2B, B2C, callbacks and reconciliation, built in a live four-week course with code review.

See the payments course

Need it live by next month? Our studio builds it

Related guides

  • How to Check Whether a Payment API Really Supports Your Country
  • Paystack Pesalink in Kenya: How the Bank Transfer Charge Works, Step by Step

Keep reading

African Payment Rails by Country: APIs, Sandboxes and Onboarding (Checked November 2026)

A dated matrix of M-Pesa Daraja, Paystack, MTN MoMo and Airtel Money: public API, sandbox, who can onboard, official docs link, and what we could not confirm.

Read more

Payment API Sandbox to Production in Africa: What Changes on Paystack, Daraja and MTN MoMo

A side by side look at the go-live step on Paystack, Daraja and MTN MoMo, with who approves you, what you submit and what behaves differently once money is real.

Read more

Accepting Mobile Money Payments Through Paystack

Mobile money is the dominant payment method in Ghana, and Paystack supports MTN MoMo, AirtelTigo Money, and Vodafone Cash. This guide covers how mobile money payments work through both the hosted checkout and the Charge API, including handling the asynchronous approval flow.

Read more

Explore related topics

M-Pesa & African Stack

M-Pesa Daraja API tutorials, USSD development, and WhatsApp Business API guides. The African Stack that global bootcamps do not teach.

Paystack for African Developers

Complete Paystack engineering resource. 653 articles covering every API, every error, and every integration pattern African developers actually need.

The African Stack: Skills for This Market

The skills that make Kenyan developers hard to replace: M-Pesa, USSD, WhatsApp, fintech, and building for the African market.

Bonaventure Ogeto

Bonaventure Ogeto

Founder and CEO, Mctaba Labs

Software engineer for 8+ years. He runs a Nairobi studio that ships products on M-Pesa, WhatsApp and AI, and teaches what the studio ships.

More about the author