Skip to main content

SDK Integrations

The NaijaBase SDK includes built-in support for Nigerian payment gateways and messaging providers via the integrations client.

Setup

No sign-in required. The SDK uses your anon key automatically:

import { createClient } from '@naijabase/js'

const nb = createClient(
'https://api.naijabase.dev/projects/YOUR_ID',
'YOUR_ANON_KEY'
)

// No nb.auth.signIn() needed

Payments

Paystack

// Create checkout
const { checkout_url, reference } =
await nb.integrations.payments.paystack.createCheckout({
email: 'user@example.com',
amount: 5000, // NGN 5,000
callbackUrl: 'https://yourapp.com/verify'
})

// Redirect user to checkout_url

// Verify after payment
const result = await nb.integrations.payments.paystack.verifyPayment(reference)

if (result.verified) {
console.log('Paid:', result.amount, 'NGN')
}

Available methods:

nb.integrations.payments.paystack.createCheckout(params)
nb.integrations.payments.paystack.verifyPayment(reference)
nb.integrations.payments.paystack.listTransactions(params)
nb.integrations.payments.paystack.listBanks()
nb.integrations.payments.paystack.resolveBankAccount(params)
nb.integrations.payments.paystack.createSubaccount(params)

Flutterwave

// Create payment
const { payment_url, reference } =
await nb.integrations.payments.flutterwave.createPayment({
email: 'user@example.com',
amount: 5000,
currency: 'NGN', // or USD, GHS, KES
callbackUrl: 'https://yourapp.com/verify'
})

// Redirect user to payment_url

// Verify after payment
const result = await nb.integrations.payments.flutterwave.verifyByReference(reference)

if (result.verified) {
console.log('Paid:', result.amount, result.currency)
}

Available methods:

nb.integrations.payments.flutterwave.createPayment(params)
nb.integrations.payments.flutterwave.verifyTransaction(id)
nb.integrations.payments.flutterwave.verifyByReference(ref)
nb.integrations.payments.flutterwave.listTransactions(params)
nb.integrations.payments.flutterwave.getBalance(currency)
nb.integrations.payments.flutterwave.listBanks()
nb.integrations.payments.flutterwave.resolveBankAccount(params)

Choosing between Paystack and Flutterwave

FeaturePaystackFlutterwave
Nigerian cards
Bank transfer
USSD
Multi-currency❌ NGN only✅ USD, GHS, KES...
Pan-AfricanLimited
Mobile money

Use Paystack for NGN-only Nigerian apps. Use Flutterwave for multi-currency or pan-African products.

Messaging

Termii SMS

// Send OTP
await nb.integrations.messaging.termii.sendOTP({
phone: '+2348012345678'
})

// User receives SMS: "Your verification code is 482910. Valid for 10 minutes."

// Verify OTP
const result = await nb.integrations.messaging.termii.verifyOTP({
phone: '+2348012345678',
code: userEnteredCode
})

if (result.verified) {
// Phone number confirmed ✅
}

// Send plain SMS
await nb.integrations.messaging.termii.sendMessage({
phone: '+2348012345678',
message: 'Your order has been confirmed.'
})

Available methods:

nb.integrations.messaging.termii.sendOTP(params)
nb.integrations.messaging.termii.verifyOTP(params)
nb.integrations.messaging.termii.sendMessage(params)
nb.integrations.messaging.termii.getBalance()
nb.integrations.messaging.termii.getStatus(messageId)

Connecting integrations

Before using any integration your project must be connected in the NaijaBase dashboard:

app.naijabase.dev
→ your project
→ Integrations tab
→ Click Connect on Paystack, Flutterwave, or Termii
→ Enter your API keys
→ Save

Once connected the SDK uses your encrypted keys automatically. Keys are never exposed to the browser.

Webhook events

Subscribe to payment events via Realtime:

await nb.realtime.connect()

nb.realtime.from('nb_webhook_events')
.on('INSERT', (payload) => {
const event = payload.new

if (event.event_type === 'charge.success') {
// Paystack payment received
console.log(event.payload)
}

if (event.event_type === 'charge.completed') {
// Flutterwave payment received
console.log(event.payload)
}
})
.subscribe()

Add your webhook URLs in each provider dashboard:

Paystack:
https://api.naijabase.dev/projects/YOUR_ID/webhooks/paystack

Flutterwave:
https://api.naijabase.dev/projects/YOUR_ID/webhooks/flutterwave