We use cookies to improve your experience and analyse site usage. Cookie Notice
Developer Hub
Build on BIPRA. Faster.
REST APIs, SDKs, a full sandbox, and comprehensive docs. Everything you need to integrate payments, auditing, billing, and ERP workflows into your product.
Never commit API keys to source control. Use environment variables or a secrets manager like AWS Secrets Manager or HashiCorp Vault. Rotate immediately if compromised.
Sandbox vs production
Environment
Key prefix
Base URL
Real money
Sandbox
sk_test_...
sandbox.bipra.io/v1
No
Production
sk_live_...
api.bipra.io/v1
Yes
Rotating API keys
Create a new key in the BIPRA dashboard under Settings → API Keys
Update your environment variables with the new key
Deploy your application and verify traffic is flowing
Revoke the old key from the dashboard
Getting started6 min read
Webhooks
BIPRA pushes real-time event notifications to your server when payments clear, audits fire, or bills are delivered.
Failed deliveries retry with exponential backoff: 5s → 30s → 2m → 10m → 1h → 6h → 24h. After 7 failures the endpoint is paused and you are notified by email.
BIPRA uses standard HTTP status codes and a consistent JSON error format across all endpoints.
HTTP status codes
Status
Meaning
200
OK — request succeeded
201
Created — resource created
400
Bad request — invalid parameters
401
Unauthorised — invalid or missing API key
402
Payment required — insufficient funds or limit reached
403
Forbidden — API key lacks permission
404
Not found — resource does not exist
409
Conflict — idempotency key reused with different params
422
Unprocessable — semantic validation failed
429
Too many requests — rate limit exceeded
500
Server error — BIPRA-side issue (auto-alerted)
Error response format
{ "error": { "code": "payment_method_invalid", "message": "The payment method \"eft\" requires a valid bank account.", "param": "bank_account", // field that caused the error "doc_url": "https://docs.bipra.io/errors/payment_method_invalid" }, "request_id": "req_Kw9mP3rQvNs8LkT1" }
Handling errors in code
try { const payment = await client.payments.create({ ... }); } catch (err) { if (err instanceof Bipra.Errors.InvalidRequestError) { console.error(err.param, err.message); // fix the request } else if (err instanceof Bipra.Errors.AuthenticationError) { // check your API key } else if (err instanceof Bipra.Errors.RateLimitError) { await sleep(1000); // back off and retry } else { throw err; } }
Free for all registered developers. No credit card required.
Changelog
All notable API and SDK changes.
May 2025 v2.4
BipraPay audit streaming
Real-time audit event streaming via WebSocket. Subscribe to wss://api.bipra.io/v1/audit/stream. All financial system events now carry an auditId.
NewBipraPay
Apr 2025 v2.3
VeriBills smart meter API
New /meters/readings endpoint accepts bulk AMI/AMR meter data. Supports DLMS/COSEM and IEC 62056 protocols. Bill generation from readings in under 5 minutes.
NewVeriBills
Mar 2025 v2.2
BipraPay payroll endpoint
Dedicated /biprapay/payroll endpoint optimised for bulk salary runs. Accepts up to 50,000 recipients per call. Results in under 90 seconds.
NewBipraPay
Feb 2025 v2.1
Breaking: pagination cursor change
All list endpoints now use cursor-based pagination. The page parameter is deprecated. Use after and before cursor tokens instead. Migration guide available.
BreakingAll APIs
Jan 2025 v2.0
API v2 general availability
BIPRA API v2 is now GA. Unified authentication across all three products, consistent error formats, and 40% faster response times. v1 sunset date: 31 December 2025.
MajorAll APIs
Stay informed
Product updates & insights
Get the latest from BIPRA — product releases, compliance updates, and fintech insights for African businesses.
No spam. Unsubscribe anytime.
BIPRA FAQ Assistant
Automated · answers common questions
Prefer WhatsApp?
Chat on WhatsApp
Connect with our support team directly on WhatsApp. Available Mon–Fri 08:00–18:00 SAST.