Guides

Payment Providers

Configure global and African payment providers to process payments for your tenants.

Payment Providers

NovaBilling supports multiple payment providers for global and African markets. Configure one or more providers to process payments for your tenants.

Supported Providers

ProviderCoveragePayment Methods
StripeGlobal (195+ countries)Cards, Bank Transfers, Wallets (Apple Pay, Google Pay)
FlutterwaveNigeria, Kenya, Ghana, South Africa, Uganda, TanzaniaCards, Bank Transfer, Mobile Money, USSD
PaystackNigeria, GhanaCards, Bank Transfer, USSD
M-PesaKenyaMobile Money (STK Push)

Configure Stripe

Stripe is the recommended provider for international payments and customers outside Africa.

curl -X POST http://localhost:3000/api/payment-providers \
  -H "Authorization: Bearer sk_live_a1b2c3d4..." \
  -H "Content-Type: application/json" \
  -d '{
    "providerName": "STRIPE",
    "credentials": {
      "secretKey": "sk_live_xxxxx",
      "webhookSecret": "whsec_xxxxx"
    },
    "isActive": true,
    "priority": 1
  }'
Get your Stripe API keys from the Stripe Dashboard. Use test keys (sk_test_...) for development and live keys (sk_live_...) for production.

Configure Flutterwave

curl -X POST http://localhost:3000/api/payment-providers \
  -H "Authorization: Bearer sk_live_a1b2c3d4..." \
  -H "Content-Type: application/json" \
  -d '{
    "providerName": "FLUTTERWAVE",
    "credentials": {
      "publicKey": "FLWPUBK-xxxxx",
      "secretKey": "FLWSECK-xxxxx",
      "encryptionKey": "xxxxx"
    },
    "isActive": true,
    "priority": 2
  }'

Configure Paystack

curl -X POST http://localhost:3000/api/payment-providers \
  -H "Authorization: Bearer sk_live_a1b2c3d4..." \
  -H "Content-Type: application/json" \
  -d '{
    "providerName": "PAYSTACK",
    "credentials": {
      "publicKey": "pk_live_xxxxx",
      "secretKey": "sk_live_xxxxx"
    },
    "isActive": true,
    "priority": 3
  }'

Configure M-Pesa

curl -X POST http://localhost:3000/api/payment-providers \
  -H "Authorization: Bearer sk_live_a1b2c3d4..." \
  -H "Content-Type: application/json" \
  -d '{
    "providerName": "MPESA",
    "credentials": {
      "consumerKey": "xxxxx",
      "consumerSecret": "xxxxx",
      "shortcode": "174379",
      "passkey": "xxxxx",
      "environment": "production"
    },
    "isActive": true,
    "priority": 4
  }'

Test a Connection

Before going live, test that your provider credentials are valid:

curl -X POST http://localhost:3000/api/payment-providers/provider_abc123/test \
  -H "Authorization: Bearer sk_live_a1b2c3d4..."

Provider Priority

When multiple providers are configured, NovaBilling uses the priority field to determine which provider to try first. Lower numbers = higher priority. If the primary provider fails, the system automatically falls back to the next provider.

A recommended setup for a global billing system:

PriorityProviderUse Case
1StripeInternational cards and wallets
2FlutterwaveAfrican markets (NG, KE, GH, ZA, UG, TZ)
3PaystackNigerian market fallback
4M-PesaKenyan mobile money

Credential Security

All provider credentials are encrypted at rest using AES-256 encryption. They are never logged or exposed in API responses.

Copyright © 2026