Docs API Get API Keys
Gateway Live Mode Active

Accept payments in minutes, not weeks.

BursaPay Gateway is a developer-first payment API. We handle checkout webhooks, transaction verification, retries, and wallet accounting so you can focus on building.

Request API Access View API Docs

Simple, powerful payments built for developers

A complete, managed payment integration. We handle the heavy lifting so your systems stay clean.

Zero Webhook Setup

We handle checkout webhooks, verify signatures, and route events to your wallet automatically. No manual handlers needed.

One API, All-in-One

Initialize payments, verify transactions, manage customers, and process refunds through a clean, consistent JSON API.

Built-in Wallet

Successful payments credit your developer wallet automatically. Request bank withdrawals at any time through the portal.

Signed Webhooks

HMAC-signed payloads delivered to your server with up to 5 retry attempts using exponential backoff.

Full Refund Support

Process full or partial refunds with one API call. Reversals, wallet debit, and completion webhooks handled for you.

Customer Management

Customer records generate automatically from transactions. Filter histories and track customer value through the API.

Two requests. Full payment flow.

Initialize a checkout, then verify the result. That is the entire integration.

import requests

API_KEY = "sk_live_your_key"
BASE    = "https://api.bursapay.com/api/v1"
HEADERS = {"Authorization": f"Bearer {API_KEY}"}

# Step 1: initialize checkout
init = requests.post(f"{BASE}/payments/initialize/",
    json={"amount": 5000, "email": "customer@example.com",
          "callback_url": "https://yoursite.com/callback"},
    headers=HEADERS
)
checkout_url = init.json()["authorization_url"]  # redirect customer here
reference    = init.json()["reference"]           # save this reference

# Step 2: verify after redirect
verify = requests.post(f"{BASE}/payments/verify/",
    json={"reference": reference}, headers=HEADERS
)
print(verify.json()["data"]["status"])  # "success"
const H = { Authorization: "Bearer sk_live_your_key", "Content-Type": "application/json" };
const BASE = "https://api.bursapay.com/api/v1";

const init = await fetch(`${BASE}/payments/initialize/`, {
  method: "POST", headers: H,
  body: JSON.stringify({ amount: 5000, email: "customer@example.com" }),
}).then(r => r.json());

const { authorization_url, reference } = init;

const verify = await fetch(`${BASE}/payments/verify/`, {
  method: "POST", headers: H,
  body: JSON.stringify({ reference }),
}).then(r => r.json());

console.log(verify.data.status); // "success"
const axios = require("axios");
const HEADERS = { Authorization: "Bearer sk_live_your_key" };
const BASE    = "https://api.bursapay.com/api/v1";

const { data: init } = await axios.post(`${BASE}/payments/initialize/`,
  { amount: 5000, email: "customer@example.com" }, { headers: HEADERS });

const { data: verify } = await axios.post(`${BASE}/payments/verify/`,
  { reference: init.reference }, { headers: HEADERS });

console.log(verify.data.status); // "success"
# 1: initialize
curl -X POST https://api.bursapay.com/api/v1/payments/initialize/   -H "Authorization: Bearer sk_live_your_key"   -H "Content-Type: application/json"   -d '{"amount":5000,"email":"customer@example.com"}'

# 2: verify
curl -X POST https://api.bursapay.com/api/v1/payments/verify/   -H "Authorization: Bearer sk_live_your_key"   -H "Content-Type: application/json"   -d '{"reference":"BP-xxx"}'

Secure by default

Every component is hardened. Keys are hashed, all traffic runs over HTTPS, and webhooks use HMAC-SHA256.

API keys hashed (bcrypt)
Webhooks signed (HMAC)
KYC documents encrypted
Rate limiting active
IP allowlisting option
Mandatory account 2FA

Core Gateway Endpoints

Base URL: https://api.bursapay.com/api/v1/

Method Endpoint Description
POST payments/initialize/ Initialize a transaction checkout page
POST payments/verify/ Confirm payment status
GET payments/{reference}/ Retrieve payment details
POST customers/ Create a customer profile
POST refunds/ Process full or partial refund
POST transfers/ Initiate bank transfer from wallet
GET wallet/ Wallet balance and transaction ledger

Simple, transparent fees

Only charged on successful transactions. No monthly fees, no setup fees, no hidden charges.

Flat Fee
NGN 10

Applied to every successful checkout transaction.

Under NGN 2,500
1.5%

Just 1.5% processing fee for transactions below NGN 2,500.

NGN 2,500 and Above
1.5% + NGN 100

1.5% + NGN 100 for payments ₦2,500+, capped at NGN 2,000 max.

Interactive Fee & Payout Calculator

Drag the slider or enter an amount to view the exact processing fees and final credited payout.

Transaction Amount
NGN
Gross transaction amountNGN 5,000.00
BursaPay Processing Fee (1.5% + ₦100)- NGN 175.00
BursaPay Flat Fee- NGN 10.00
Net credited to your walletNGN 4,815.00
High Volume Processing?
Custom negotiable rates are available for high transaction volume businesses, platforms, and enterprise partners.
Negotiate Volume Rate

Request API Access

Fill out the quick form below. We review and approve developer accounts within 24 hours.