Tanzania M-Pesa (Vodacom Open API) and Kenya M-Pesa (Safaricom Daraja) share the same fundamental architecture: request-callback pattern for mobile money payments. The differences are in the operator (Vodacom vs Safaricom), the developer portal, the authentication mechanism (API key + session key vs OAuth 2.0), the endpoint URLs, the callback payload format, and the ease of access (Daraja is easier and faster to get started with). A developer who knows one can adapt to the other in one to three days. The core skills, including callback handling, async payment flows, error management, and security, transfer completely.
Operates through the Vodacom Open API. Harder to access for individual developers. Session key authentication. Less mature developer ecosystem.
Operates through the Daraja API. Easiest mobile money API to start with in East Africa. OAuth 2.0 authentication. Large developer community.
| Criterion | Vodacom M-Pesa (Tanzania) | Safaricom M-Pesa (Kenya) |
|---|---|---|
| Operator | Vodacom Tanzania | Safaricom Kenya |
| API platform | Vodacom Open API | Safaricom Daraja |
| Authentication | API key + session key | OAuth 2.0 (consumer key + consumer secret) |
| Collections (C2B) | C2B API via Vodacom Open API | STK Push (Lipa Na M-Pesa Online) |
| Disbursements (B2C) | B2C API | B2C API |
| Developer portal | Vodacom Developer Portal | developer.safaricom.co.ke |
| Sandbox access | Available, requires registration | Instant, self-service |
| Production access | Requires business approval (weeks) | Faster approval with valid business shortcode |
| Currency | TZS | KES |
| Callback architecture | Request-callback (webhook) | Request-callback (webhook) |
| Developer community size | Smaller, growing | Large, well-established |
| Documentation quality | Adequate | Mature, with tutorials and code examples |
| Market context | Three-rail market (M-Pesa, Tigo Pesa, Airtel Money) | M-Pesa dominant (90%+ market share) |
Here is a scenario that plays out regularly: a Tanzanian developer Googles "M-Pesa API integration," finds a Daraja tutorial, copies the code, points it at a Vodacom endpoint, and it breaks. The error messages make no sense because the entire authentication mechanism is different.
The confusion is baked into the brand. M-Pesa was created by Vodafone and first launched in Kenya through Safaricom in 2007. When it expanded to Tanzania, it went through Vodacom (Vodafone's subsidiary). For years, they shared core technology. But as both companies grew, they built their own developer platforms independently.
Today:
The brand name is the same. Everything else that a developer touches is different. This article goes through each difference and, more importantly, explains what stays the same so you understand what skills transfer.
This is the first thing that breaks when you try to use Daraja code against Vodacom's API.
Safaricom Daraja (Kenya):
This is standard OAuth 2.0 client credentials flow. If you have used any OAuth-based API (Google, GitHub, Stripe), the pattern is familiar.
Vodacom Open API (Tanzania):
The extra decryption step catches many developers off guard. It is not standard OAuth, and the documentation around it requires careful reading. Once you have the session key, the rest of the API calls work similarly to Daraja: send a request, get a response, handle callbacks.
The key insight: these are two different mechanisms for the same purpose (proving you are authorized to make API calls). Once you understand what authentication does and why, adapting between mechanisms is not conceptually hard. It is just different code.
Get weekly developer tips
Join 25,000+ developers. Practical guides, job tips, and new content — straight to your inbox.
No spam. Unsubscribe anytime.
Both APIs implement the request-callback (webhook) pattern for payment processing. This is the most important shared architecture:
This flow is identical in both systems. The differences are in the details:
C2B (collecting from customers):
Callback payloads:
ResultCode, ResultDesc, MpesaReceiptNumber, and nested metadata.Error codes:
The takeaway: if you write a well-structured payment handler with a provider abstraction (an interface for "initiate payment" and "handle callback"), you can swap the Daraja implementation for a Vodacom implementation without changing any of your business logic. The architecture is identical. The serialization is different.
This is not a subjective preference. Daraja is objectively easier to start with:
For a Tanzanian developer who wants to learn mobile money integration, this creates a counterintuitive recommendation: start with the Kenyan API. Not because you will deploy Daraja in Tanzania (you will not), but because Daraja provides the fastest path to understanding the architecture. Once you understand request-callback patterns, webhook handling, and error management on Daraja, adapting to Vodacom is a matter of days, not weeks.
This is exactly why McTaba's M-Pesa Integration for Developers course (KES 9,999 / ~TZS 200,000) uses Daraja as the teaching platform. The goal is to teach you the pattern, not one specific API's documentation.
Beyond the API differences, the market context is fundamentally different:
Kenya: M-Pesa has over 90% mobile money market share. A Kenyan checkout that supports only M-Pesa covers almost the entire market. Airtel Money exists but is a distant second. Integrating M-Pesa alone is often enough.
Tanzania: The market is split across three providers. M-Pesa (Vodacom) is the largest but does not dominate the way Safaricom does in Kenya. Tigo Pesa and Airtel Money have substantial user bases. A Tanzanian checkout that supports only M-Pesa loses a significant portion of potential customers.
This means a Tanzanian developer's job is harder in one specific way: you need to support three payment rails, not one. The architecture is the same for all three, but the development work is multiplied (unless you use an aggregator that abstracts the three rails into one API).
Tanzania's advantage is interoperability. Since 2014, customers can send money between all three providers. This does not help with merchant payments (customers still pay from their own wallet), but it means the ecosystem functions as a unified network at the user level. For developers, the practical impact is that you need to support all three collection points, but users can fund any of their wallets from any other.
If you learn mobile money integration on one platform, here is exactly what transfers to the other:
Transfers completely (these are the hard parts):
Needs adaptation (these are the easy parts):
The hard parts transfer. The easy parts need adaptation. This is why the most efficient path for any East African mobile money developer is: learn the architecture on the best-documented platform (Daraja), then adapt to your target market. The adaptation is a day or two of work. The architecture takes weeks to learn properly.
Create a free McTaba Academy account. Access starter lessons, join the community, and explore at your own pace.
Create Free Account