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.
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.
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.
Applied to every successful checkout transaction.
Just 1.5% processing fee for transactions below NGN 2,500.
1.5% + NGN 100 for payments ₦2,500+, capped at NGN 2,000 max.
Drag the slider or enter an amount to view the exact processing fees and final credited payout.
Request API Access
Fill out the quick form below. We review and approve developer accounts within 24 hours.