One API. Every payment provider.
Billing without borders.

NovaBilling is an open billing platform inspired by Stripe's developer experience and Lago's flexibility -- purpose-built for Africa and the world. Connect Stripe, Flutterwave, Paystack, and M-Pesa through a single, unified API. Manage customers, subscriptions, invoices, and payments across 17 currencies.

Why NovaBilling?

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 for global cards. Flutterwave & Paystack for West Africa. M-Pesa for East Africa. Automatic failover between providers when one is unavailable.

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.

Real-Time Webhooks

Signature-verified webhook notifications for every event -- payments, subscriptions, invoices. Automatic retries with exponential backoff.

Enterprise Security

AES-256 credential encryption, JWT + API key dual authentication, scoped permissions, and rate limiting out of the box.

Get Started in 60 Seconds

Install an SDK and create your first subscription.
npm install novabilling
import { NovaBillingClient } from 'novabilling';

const nova = new NovaBillingClient({
  token: process.env.NOVA_API_KEY,
});

// Create a customer
const customer = await nova.customers.create({
  externalId: 'usr_001',
  email: 'amina@kampaltech.ug',
  name: 'Amina Nakato',
  currency: 'UGX',
});

// Subscribe them to a plan
const sub = await nova.subscriptions.create({
  customerId: customer.id,
  planId: 'plan_growth',
  currency: 'UGX',
});

console.log(sub.status); // "ACTIVE"
Ready to dive deeper? Follow the full Quickstart Guide for a complete walkthrough -- from registration to your first payment.

Supported Currencies

NovaBilling supports 17 currencies across Africa and internationally.
RegionCurrencies
West AfricaNGN GHS XOF
East AfricaKES UGX TZS RWF ETB
North AfricaEGP MAD DZD
Central AfricaXAF
Southern AfricaZAR ZMW
InternationalUSD EUR GBP

Explore the Docs

Quickstart

Register, create API keys, configure a payment provider, and start billing in under 5 minutes.

Authentication

Understand JWT tokens for tenant management and API keys for data operations.

TypeScript SDK

Full reference for the NovaBillingClient with type-safe methods for every resource.

Python SDK

Sync and async clients with comprehensive type hints and error handling.
Copyright © 2026