The open-source
payment stack
for Africa
Not just an SDK — a complete payment infrastructure you can self-host. The server, dashboard, and webhook engine that used to take 18 months to build.
$ npm install @zirzir/sdk import { Zirzir } from '@zirzir/sdk'
const zirzir = new Zirzir({
provider: 'chapa',
credentials: { secretKey: process.env.CHAPA_KEY }
})
const tx = await zirzir.charge({
amount: 500,
currency: 'ETB',
txRef: 'order_123',
email: 'customer@example.com'
})
// Redirect to tx.paymentUrl
Every company solves these problems
independently. Expensively. Repeatedly.
That's what Zirzir replaces.
Fragmented gateways
Every African country has different payment providers. Telebirr in Ethiopia, M-Pesa in Kenya, each with unique APIs, auth flows, and settlement quirks.
Repeated infrastructure
Webhook retries, transaction databases, dashboards, credential management, multi-environment support. Everyone builds the same plumbing.
Months before first payment
Provider approvals, API integration, testing sandboxes that don't match production. A funded fintech takes 18 months to build what should take a week.
Three layers. One stack.
Use just the SDK for direct gateway access, add the server for full payment operations, or let us host it.
One unified interface for every African payment gateway. TypeScript, Python, and Go. Use standalone or connect to a Zirzir server.
- Single charge/verify/refund API
- TypeScript, Python, Go SDKs
- Standalone or Server mode
- Built-in provider adapters
- Webhook signature verification
- Full type safety
import { Zirzir } from '@zirzir/sdk'
const zirzir = new Zirzir({
provider: 'chapa',
credentials: { secretKey: '...' }
})
const tx = await zirzir.charge({
amount: 500,
currency: 'ETB',
txRef: 'order_123',
})One API. Two modes.
Start standalone for quick prototyping — call gateways directly with zero infrastructure. Switch to server mode when you need webhook retries, a transaction ledger, and a dashboard.
Same charge(),
same verify(),
same refund().
Just change the config.
import { Zirzir } from '@zirzir/sdk'
// Talk directly to the payment gateway
const zirzir = new Zirzir({
provider: 'chapa',
credentials: { secretKey: process.env.CHAPA_KEY! }
})
const tx = await zirzir.charge({
amount: 500,
currency: 'ETB',
txRef: 'order_123',
email: 'customer@example.com'
})
Every gateway. One integration.
From Telebirr to M-Pesa, normalize every provider into a single Transaction object. Add a new country in minutes, not months.
Telebirr
stableEthiopia
Mobile Money
Chapa
stableEthiopia
Payment Gateway
CBEBirr
stableEthiopia
Mobile Money
Santim Pay
stableEthiopia
Mobile Money
Awash Bank
stableEthiopia
Bank Transfer
EthSwitch
stableEthiopia
Interbank
M-Pesa
betaKenya
Mobile Money
Airtel Money
betaEast Africa
Mobile Money
Coming soon
Built for builders
Whether you're a solo developer or an enterprise, Zirzir adapts to your scale.
Startups
Stop building payment infrastructure before shipping your product. Go from zero to accepting payments in an afternoon.
Agencies
One Zirzir server, multiple isolated client projects. Each with their own credentials, environments, and API keys.
Platforms
Split payments, multi-party payouts, reconciliation across providers. Built for marketplaces and SaaS platforms.
Developers
Explore African fintech with a sandbox that works day one. No approvals, no contracts, just code.
Open Core, Not Open Bait
Same model as Supabase, Plausible, and Gitea. The SDK and server are fully open source under MIT. Zirzir Cloud is how we fund development — but you never need it.
You can run the entire stack yourself. Fork it, modify it, deploy it. No vendor lock-in, no surprise pricing changes, no data hostage situations.
View Source on GitHub| Zirzir | Proprietary | |
|---|---|---|
| Source code | Fully open (MIT) | Proprietary |
| Self-hosting | Yes, Docker + Go binary | No |
| Provider lock-in | None | Platform-dependent |
| Pricing | Free (self-host) or pay for Cloud | % per transaction |
| African gateways | Native, first-class | Limited or none |
| USSD flows | First-class support | Afterthought |
Ready to ship payments?
Install the SDK, point it at a gateway, and charge your first customer. No approvals needed for sandbox.
$ npm install @zirzir/sdk