Payment Gateway API · v1

One API.
Every payment rail in Africa.

Accept cards, mobile money, BNPL, and airtime. Issue virtual cards. Dispatch deliveries. All from one authenticated API key.

Get API Keys Browse API Docs
15+
Payment Rails
8
API Categories
3
Currencies
99.9%
Uptime SLA
What you can build
One key, full stack
Every endpoint is category-gated. Enable only the rails your product needs.
💳
Payments
Initiate and verify payments across card, mobile money, and bank rails. Full refund support.
POST /payments/initialize GET /payments/verify/{ref} POST /payments/refund
💰
Wallet & Ledger
Check balances, read ledger history, top up float, and request settlements.
GET /balance GET /ledger POST /settlements/request
🪝
Webhooks
Register, update, and simulate webhooks. HMAC-signed delivery for every event.
POST /webhooks POST /webhooks/simulate
📱
Airtime & Data
Purchase airtime and data bundles for any operator in Zimbabwe, South Africa, and the UK.
GET /airtime/operators POST /airtime/purchase POST /data/purchase
🧾
Bills & Utilities
Pay ZESA, DStv, and other billers. Validate account numbers before charging.
GET /bills/billers GET /bills/validate POST /electricity/purchase
🎁
Virtual Cards & Gift Cards
Issue, fund, freeze, and terminate virtual Visa/Mastercard cards and gift cards.
POST /virtual-cards/issue POST /virtual-cards/{id}/fund GET /gift-cards/products
🚚
Courier Marketplace
Query available couriers by location and dispatch deliveries linked to any payment.
GET /couriers/available POST /couriers/onboard
💬
WhatsApp Checkout Flow
Send customers a native WhatsApp Flow so they can browse products and pay without leaving the app.
flow_token: MC-{merchant_id} POST /flows/merchant-checkout

Start accepting payments in minutes

Authenticate with your API key. Every request goes over HTTPS. Sandbox and production keys are separate; flip X-Environment to switch.

  1. Sign in to the merchant portal and generate an API key under Developer → API Keys.
  2. Enable categories: each capability (payments, airtime, etc.) is independently toggled per key.
  3. Point your webhook URL at POST /v1/webhooks. All events arrive HMAC-signed.
  4. Go live: swap the sandbox key for your production key. Same endpoints, real money.
# Initialize a payment
POST /api/v1/payments/initialize
Authorization: Bearer sk_live_••••••••••
Content-Type: application/json

{
  "amount_cents": 25000,
  "currency":     "USD",
  "method":       "ecocash",
  "phone":        "0771234567",
  "description":  "Order #1234",
  "reference":    "ORD-1234"
}

─── 202 Accepted ─────────────────────
{
  "ok":        true,
  "reference": "ORD-1234",
  "status":    "pending",
  "message":   "EcoCash prompt sent"
}
Security
Enterprise-grade from day one
Every integration point is locked down: no unsigned webhooks, no plain-text secrets.
🔑
Bearer Key Auth
Per-key category scoping
🔏
HMAC-Signed Webhooks
SHA-256, verified on delivery
🚦
Rate Limiting
Per-key, per-category limits
🔒
TLS 1.3
All traffic encrypted in transit
🛡️
Idempotency Keys
Replay-safe by design
📋
Audit Log
Every API call timestamped

Ready to integrate?

Create your free account, generate an API key, and make your first payment in under 10 minutes.

Open Developer Portal Browse API Docs