Skip to content

Zirzir

The open-source payment stack for Africa. Not just an SDK — a complete payment infrastructure you can self-host, with the server, dashboard, and webhook engine that used to take a funded fintech 18 months to build.

The SDK

Open-source, MIT-licensed. One unified interface for every African payment gateway — TypeScript, Python, Go. Use it standalone or with the server.

The Server

Self-hostable Go server. Webhook infrastructure, transaction ledger, credential management, RBAC, multi-project support, and a full dashboard. The operational backbone.

The Cloud

Don’t want to run your own server? Same server, same features, zero ops. Point your SDK at zirzir.dev and go.

The Encyclopedia

The real-world reference for African payment gateways — fees, settlement realities, sandbox quirks, and the things official docs don’t tell you.

Africa has a payment fragmentation problem unlike anywhere else in the world. Each country has its own gateways. Each gateway has its own API, auth flow, webhook format, error codes, and quirks.

But the fragmentation goes deeper than just API differences. When you’re building a payment-enabled product, you don’t just need integration code. You need:

  • Webhook infrastructure with retries, deduplication, and signature verification
  • A transaction database with reconciliation logic
  • Dashboards for your finance team
  • Multi-environment support (test vs. live) per provider
  • RBAC so developers don’t have access to production keys
  • The ability to figure out why a transaction is stuck in pending at 11 PM

Every company building in African fintech solves these problems independently. Expensively. Repeatedly. That’s what Zirzir replaces.

Terminal window
npm install @zirzir/sdk
import { Zirzir } from '@zirzir/sdk'
// Standalone — talk directly to a gateway
const zirzir = new Zirzir({
provider: 'chapa',
credentials: { secretKey: process.env.CHAPA_SECRET_KEY! }
})
// Or Server Mode — point at your Zirzir server
const zirzir = new Zirzir({
baseUrl: 'https://pay.yourcompany.com',
apiKey: 'zz_live_...'
})
// Same API either way
const tx = await zirzir.charge({
amount: 500,
currency: 'ETB',
txRef: 'order_123',
})
ProviderCountryTypeStatus
TelebirrEthiopiaMobile MoneyStable
CBEBirrEthiopiaMobile MoneyStable
ChapaEthiopiaPayment GatewayStable
Santim PayEthiopiaMobile MoneyStable
Awash BankEthiopiaBank TransferStable
EthSwitchEthiopiaInterbankStable
M-Pesa (Safaricom)KenyaMobile MoneyBeta
Airtel MoneyKenya/Tanzania/UgandaMobile MoneyBeta
ZirzirDirect IntegrationGlobal SDK (Stripe etc.)
African gateway supportNativePainfulLimited
Webhook infrastructureBuilt inBuild it yourselfBuilt in
Self-hostableYesN/ANo
Open source SDKYesN/ANo
Multi-project supportYesNoYes
USSD flow supportFirst-classPainfulNo
Dashboard & analyticsBuilt inBuild it yourselfBuilt in

Startups

Stop spending 3 months building payment infrastructure before you can ship your actual product. Zirzir is that infrastructure, already built.

Agencies

One Zirzir server, multiple projects. Each client gets isolated credentials, their own dashboard view, their own webhook endpoints.

Platforms

Split payments, multi-party payouts, reconciliation across providers — the server layer handles the complexity your platform would otherwise have to build.

Developers

The SDK is open source and the sandbox works on day one. Clone it, run it, understand how African payment APIs actually work.