Developers
PaySeed API
Integrate pay-ins, hosted checkout, and webhooks for Ghana and Nigeria. Merchants use PaySeed API keys — you never touch payment-provider credentials directly.
Architecture
PaySeed is a payment gateway layer. Your app talks to PaySeed; PaySeed talks to our licensed payment provider on your behalf.
Your server / app
│ Authorization: Bearer sk_test_ps_… or sk_live_ps_…
▼
PaySeed API (https://api.payseed.org)
│ Platform provider keys (never exposed to merchants)
▼
Provider rails → Banks, cards, mobile money- Merchants receive PaySeed-issued test and live keys.
- Provider secret keys live only on PaySeed's API server.
- Payments, balances, and webhooks are scoped per merchant account.
API keys
When you sign up, PaySeed automatically creates a test key pair. After KYC approval, a live key pair is issued.
| Key | Format | Use |
|---|---|---|
| Secret | sk_test_ps_… / sk_live_ps_… | Server-side API calls only |
| Publishable | pk_test_ps_… / pk_live_ps_… | Client-safe (future checkout embeds) |
Manage keys in the Developers → API keys section of your dashboard.
Authentication
Send your secret key as a Bearer token on every request.
curl https://api.payseed.org/v1/account \
-H "Authorization: Bearer sk_test_ps_YOUR_SECRET_KEY"Create a payment
Initialize a payment from your backend. Use an Idempotency-Key header to safely retry. Nigeria supports bank transfer and card; Ghana supports mobile money.
POST https://api.payseed.org/v1/payments
Authorization: Bearer sk_test_ps_…
Idempotency-Key: order-12345
Content-Type: application/json
{
"amount": 5000,
"currency": "NGN",
"reference": "order-12345",
"channel": "virtual_account",
"customer": {
"name": "Ada Lovelace",
"email": "ada@example.com"
},
"redirect_url": "https://your-store.com/thank-you"
}Response includes payment status, reference, and channel-specific details (e.g. bank account for transfers).
GET https://api.payseed.org/v1/payments?page=1&limit=20
GET https://api.payseed.org/v1/payments/{payment_id}
POST https://api.payseed.org/v1/payments/{payment_id}/authorize # mobile money OTPHosted checkout
No-code option: create a payment link in the dashboard, or create a checkout session via API. Customers pay on a PaySeed-hosted page — fully PaySeed-branded checkout.
POST https://api.payseed.org/v1/checkout/sessions
Authorization: Bearer sk_test_ps_…
{
"amount": 2500,
"currency": "NGN",
"reference": "checkout-abc",
"customer": { "email": "customer@example.com" }
}
→ { "checkout_url": "https://pay.payseed.org/checkout/{token}" }Webhooks
Configure your webhook URL in Developers → Webhooks. PaySeed signs each delivery — verify the signature before trusting the payload.
POST https://your-server.com/webhooks/payseed
X-PaySeed-Signature: …
{
"event": "payment.success",
"data": {
"reference": "order-12345",
"amount": 5000,
"currency": "NGN",
"status": "success"
}
}Common events: payment.success, payment.failed, payout.success.
Fees & balances
PaySeed charges a 5% platform fee on successful payments. The fee is deducted before crediting your merchant balance — customers pay the listed amount, not amount + fee.
GET https://api.payseed.org/v1/balance
GET https://api.payseed.org/v1/ledgerRequest payouts from the dashboard after KYC approval. Settlement SLA: up to 48 working hours.
Errors
Errors return JSON with a success: false body and an error.code / error.message.
| HTTP | Meaning |
|---|---|
| 401 | Invalid or missing API key |
| 400 | Validation error — check error.message |
| 409 | Duplicate reference or idempotency conflict |
| 502 | Provider temporarily unavailable — retry with backoff |
Ready to integrate?
Copy your test keys from the dashboard and point webhooks at your staging server.