Integrate your applications with our payment gateway using these simple REST APIs.
All API requests must be authenticated using your secret key.
Important: Keep your secret key secure. Never expose it in client-side code.
Request Body:
{
"email": "customer@example.com",
"amount": 1000,
"callback_url": "https://yourapp.com/thank-you",
"reference": "optional-unique-ref",
"metadata": { "order_id": "123" }
}
Response:
{
"status": true,
"message": "Payment initialized",
"data": {
"authorization_url": "https://pay.yourplatform.com/pay/ref_xxx",
"reference": "PAY_20260821_ABC123"
}
}
Response:
{
"status": true,
"data": {
"reference": "PAY_20260821_ABC123",
"status": "success",
"amount": 1000,
"customer_email": "customer@example.com"
}
}
{
"available_balance": 980.50,
"total_volume": 2500.00,
"total_fees": 50.00,
"total_transactions": 5
}
Receive real-time event notifications by setting a webhook URL in your dashboard.
Sample webhook payload:
{
"event": "charge.success",
"data": {
"reference": "PAY_20260821_ABC123",
"amount": 1000,
"currency": "GHS",
"status": "success",
"customer_email": "customer@example.com",
"payment_method": "card",
"transaction_date": "2026-08-21 14:30:00"
}
}
Signature verification: We send a X-Payment-Signature header. Verify it with your WEBHOOK_SECRET using HMAC-SHA256.
All errors are returned with a descriptive message and appropriate HTTP status code.
| Code | Meaning |
|---|---|
| 400 | Bad Request – invalid parameters |
| 401 | Unauthorized – invalid or missing API key |
| 404 | Not Found – endpoint or resource not found |
| 405 | Method Not Allowed |
| 429 | Too Many Requests – rate limit exceeded |
| 500 | Internal Server Error |
Use the test keys (prefixed with pk_test_ and sk_test_) to test integration without processing real money.