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.

KeyFormatUse
Secretsk_test_ps_… / sk_live_ps_…Server-side API calls only
Publishablepk_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 OTP

Hosted 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/ledger

Request 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.

HTTPMeaning
401Invalid or missing API key
400Validation error — check error.message
409Duplicate reference or idempotency conflict
502Provider temporarily unavailable — retry with backoff

Ready to integrate?

Copy your test keys from the dashboard and point webhooks at your staging server.