PayElect Developer

Build payments into your app in 10 minutes

PayElect is a unified payments API for West Africa and beyond. Accept mobile money, card payments, and digital wallets — with a single integration, automatic provider failover, and real-time webhooks.

Read Quickstart → API Reference

What you can build

🧪

Sandbox Testing

Full environment that mirrors production. Trigger success, failure, timeout, and pending scenarios on demand.

💡

Production-grade Webhooks

HMAC-signed event delivery with automatic retry (up to 5 attempts) and a full event catalogue.

🔄

Split Payments

Marketplace splits — divide each payment between a platform account and up to 20 subaccounts in a single API call.

🌐

Multi-provider Routing

Automatic cascade across CinetPay, Orange Money, Wave, MTN MoMo, and Stripe. Failures route to the next available provider.

💸

Payouts

Push funds to mobile money wallets, bank accounts, or PayElect wallets across Guinea, Senegal, and 15+ countries.

🔒

Idempotency

Every mutation endpoint accepts an idempotency_key. Safe to retry on network error — never double-charged.

Authentication

PayElect uses a two-step token scheme for payment creation and a direct Bearer client_id scheme for refunds, payouts, and subaccount management.

Flow Header Value Used for
Access token Authorization Bearer <access_token> POST /payment/create, GET /payment/status, GET /payments/gateways
Client ID Authorization Bearer <client_id> Refunds, Payouts, Subaccounts

Access tokens expire after 10 minutes. Request a new token before each payment session. Your client_id and client_secret never expire; rotate them from the merchant portal if compromised.

Base URLs

Environment Base URL Notes
Sandbox https://api.payelecthq.com/pay/sandbox/api/v1 Use your sandbox credentials. No real money moves.
Production https://api.payelecthq.com/pay/api/v1 Requires KYB-verified live credentials.
Sandbox and live credentials are not interchangeable. Sending sandbox client_id / client_secret to the production URL returns a MODE_MISMATCH error, and vice-versa.

Getting started in 3 steps

API conventions