Operate reliably
Pagination & rate limits
Read result pages and react to the real service limits.
Page through payments and events
List endpoints use page and per_page. Default per_page is 25; maximum is 100. Results are newest first. Use meta.has_more to decide whether to request the next page. Do not assume an empty page is a missing resource error.
Payment filters are status, reference, created_after and created_before. Event filters are type, payment_id, created_after and created_before. The payments list does not currently implement provider or currency filters. Use ISO 8601 dates/times and URL-encode query values.
{
"success": true,
"data": [],
"meta": {
"page": 1,
"per_page": 25,
"total": 0,
"has_more": false
}
}Rate-limit headers
Default server API allowance: 100 requests per key per minute. Payment/checkout creation has an additional 60-per-minute allowance. Address-level protections also apply. Deployment configuration can change defaults; response headers are authoritative.
Read X-RateLimit-Limit and X-RateLimit-Remaining. A 429 response includes Retry-After; do not immediately loop or rotate keys to evade the limit. Slow down concurrency and use bounded backoff with jitter.
Currency units
Amounts are integers, never decimal major-unit prices. Use the exponent below instead of multiplying every currency by 100. The selected provider must separately support the currency; this platform list is not a promise of provider availability.
| Code | Currency | Exponent | Example: 500 major units |
|---|---|---|---|
| NGN | Nigerian Naira | 2 | 50000 |
| USD | US Dollar | 2 | 50000 |
| GHS | Ghanaian Cedi | 2 | 50000 |
| KES | Kenyan Shilling | 2 | 50000 |
| ZAR | South African Rand | 2 | 50000 |
| EUR | Euro | 2 | 50000 |
| GBP | British Pound | 2 | 50000 |
| CAD | Canadian Dollar | 2 | 50000 |
| AUD | Australian Dollar | 2 | 50000 |
| SGD | Singapore Dollar | 2 | 50000 |
| JPY | Japanese Yen | 0 | 500 |
| UGX | Ugandan Shilling | 0 | 500 |
| TZS | Tanzanian Shilling | 0 | 500 |