Every developer building for the African market hits the same wall: payments.
Stop juggling five payment APIs. Start shipping products.
Every developer building for the African market hits the same wall: payments.
You want to accept Mobile Money in Uganda? Integrate Iotec. Need M-Pesa in Kenya? Add Relworx. Want card payments for international customers? Set up Stripe. Each provider has its own API, its own authentication flow, its own webhook format, and its own dashboard.
Before you know it, your codebase has three different payment integrations, three sets of API keys to manage, three webhook handlers to maintain, and three dashboards to check every morning. Your payment code is now more complex than your actual product.
There has to be a better way. And there is.
East Africa's payment landscape is uniquely fragmented. Unlike markets where Stripe or PayPal dominate, African developers deal with:
The result? Developers spend weeks on payment integration instead of building features their users actually need.
DGateway is a unified payment gateway built specifically for this problem. Instead of integrating each provider separately, you make one API call:
const res = await fetch(`${API_URL}/v1/payments/collect`, {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-Api-Key": API_KEY,
},
body: JSON.stringify({
amount: 50000,
currency: "UGX",
phone_number: "256771234567",
description: "Order #1234",
}),
});That's it. DGateway handles the rest:
Auto-routing — Based on the currency and transaction type, DGateway picks the best provider. Send UGX? It routes to Iotec. Send KES? It routes to Relworx. Send USD with no phone number? It routes to Stripe.
Credential management — Provider API keys live on the DGateway platform, not in your code. Your app only needs one DGateway API key.
Normalized responses — Every provider returns the same response format. No more writing adapter code for each provider's quirky JSON structure.
Unified status tracking — One webhook format, one status polling endpoint, one transaction dashboard. Whether the payment went through Iotec or Stripe, you check status the same way.
Before DGateway:
Your App → Iotec API (UGX Mobile Money)
Your App → Relworx API (KES Mobile Money)
Your App → Stripe API (Card Payments)
Your App → PesaPal API (Mixed)
= 4 integrations, 4 webhook handlers, 4 credential sets
After DGateway:
Your App → DGateway API → Iotec / Relworx / Stripe / PesaPal
= 1 integration, 1 webhook handler, 1 API key
Your payment code goes from hundreds of lines across multiple files to a single 30-line API client.
| Without DGateway | With DGateway |
|---|---|
| 4+ provider integrations | 1 integration |
| 2-3 weeks of payment code | 1 afternoon |
| 4 sets of API credentials | 1 API key |
| 4 webhook handlers | 1 webhook handler |
| Provider-specific error handling | Unified error format |
| Manual provider selection logic | Automatic routing |
| Country | Currency | Mobile Money | Cards | Providers |
|---|---|---|---|---|
| Uganda | UGX | MTN MoMo, Airtel Money | Visa, Mastercard | Iotec, Relworx, Stripe |
| Kenya | KES | M-Pesa, Airtel Money | Visa, Mastercard | Relworx, PesaPal, Stripe |
| Rwanda | RWF | MTN MoMo, Airtel Money | — | Relworx |
| Tanzania | TZS | M-Pesa, Tigo Pesa, Airtel Money | Visa, Mastercard | Relworx, PesaPal |
DGateway isn't just another payment aggregator. It's built by developers who were tired of the same integration headaches. The API is clean, the docs are practical, and the dashboard gives you real-time visibility into every transaction across every provider.
Stop building payment infrastructure. Start building your product.
DGateway supports Uganda (UGX), Kenya (KES), Rwanda (RWF), and Tanzania (TZS) with automatic provider routing. Get started free.