One API. Every payment provider.
Billing without borders.
PimaBill is open-source billing for the way Africa pays. Connect Stripe, Flutterwave, Paystack, Pesapal, MTN MoMo, Airtel Money and more through one API. Manage customers, subscriptions, invoices, payments, payouts and a double-entry ledger in any currency.
Why PimaBill?
Borderless by Default
Support 17 currencies across 40+ countries. Automatic currency matching routes payments to the right provider -- from mobile money in Nairobi to card payments in New York.
Multi-Tenant Architecture
Every tenant gets an isolated database with encrypted credentials. Built for SaaS platforms that need to offer billing to their own customers.
Ship in Minutes
Type-safe TypeScript and Python SDKs generated from our OpenAPI spec. Full autocomplete, comprehensive error handling, and always in sync with the API.
4 Payment Providers
Stripe and PayPal for global cards. Flutterwave and Paystack for West Africa. Pesapal, MTN MoMo and Airtel Money for East Africa. USDT and Bitcoin straight to your own wallet.
Smart Subscriptions
Free trials, plan upgrades, downgrades, pausing, resuming, and automated renewals. Proration and dunning handled automatically.
Invoices & Checkout
Auto-generate PDF invoices. Create hosted checkout URLs for any invoice. Email delivery on every billing event with automatic retries.
Revenue Analytics
Track revenue, subscriptions, churn, and payment success rates. Filter by date range, currency, and provider with daily, weekly, or monthly grouping.
Get Started in 60 Seconds
Install an SDK and create your first subscription.
npm install pimabill
pip install pimabill
import { PimaBillClient } from 'pimabill';
const pima = new PimaBillClient({
token: process.env.PIMABILL_API_KEY!,
});
// Create a customer
const customer = await pima.customers.create({
externalId: 'usr_001',
email: 'amina@kampaltech.ug',
name: 'Amina Nakato',
currency: 'UGX',
});
// Subscribe them to a plan
const sub = await pima.subscriptions.create({
customerId: customer.id,
planId: 'plan_growth',
currency: 'UGX',
});
console.log(sub.status); // "ACTIVE"
import os
from pimabill import PimaBillClient
pima = PimaBillClient(token=os.environ["PIMABILL_API_KEY"])
# Create a customer
customer = pima.customers.create(
external_id="usr_001",
email="amina@kampaltech.ug",
name="Amina Nakato",
currency="UGX",
)
# Subscribe them to a plan
sub = pima.subscriptions.create(
customer_id=customer.id,
plan_id="plan_growth",
currency="UGX",
)
print(sub.status) # "ACTIVE"
# Create a customer
curl -X POST http://localhost:4000/api/customers \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"externalId": "usr_001",
"email": "amina@kampaltech.ug",
"name": "Amina Nakato",
"currency": "UGX"
}'
# Create a subscription
curl -X POST http://localhost:4000/api/subscriptions \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"customerId": "cust_abc123",
"planId": "plan_growth",
"currency": "UGX"
}'
Ready to dive deeper? Follow the full Quickstart Guide for a complete walkthrough -- from registration to your first payment.
Supported Currencies
PimaBill supports 17 currencies across Africa and internationally.
| Region | Currencies |
|---|---|
| West Africa | NGN GHS XOF |
| East Africa | KES UGX TZS RWF ETB |
| North Africa | EGP MAD DZD |
| Central Africa | XAF |
| Southern Africa | ZAR ZMW |
| International | USD EUR GBP |