PesaBridge
Developer documentation

Build with the PesaBridge API.

Guides for collections, payouts, hosted checkout and webhooks, with examples you can paste straight into your terminal. Everything runs in the sandbox first.

Base URL

https://pesa-bridge.com/api/bridgepay/v1

POST/oauth/token
POST/partner/stk
GET/partner/status
POST/partner/b2c
POST/checkout/create
POST/partner/webhooks/endpoints

53 endpoints · OpenAPI 3 · JSON over HTTPS

API reference

A small, predictable surface.

POST/oauth/tokenExchange client credentials for a bearer token.
POST/partner/stkPush a charge (prompt-to-pay) to a customer.
GET/partner/statusPoll the state of a charge.
GET/partner/balanceQuery a collection account balance.
POST/biz/requestMerchant request-to-pay.
POST/ussdUSSD menu gateway callback.

Rails & integrations

Connect only what your market needs.

Rails are pluggable adapters with one interface — collect, payout, balance and callbacks — so a new connector never touches the core.

Banks

RTGS / ACH / SWIFT / SEPA settlement and nostro management.

Mobile money

The mobile money operators in each market, through rail adapters.

Cards & PSPs

Card acquiring on the major card networks, and processor integrations.

Billers & telco

Utilities, TV, government, school fees and airtime top-up.

Designed for money

An API that behaves like a payments system.

Most APIs move data. This one moves money — so it's idempotent, signed, and built around a charge lifecycle you can trust.

Authentication is OAuth2 client-credentials: you exchange a key and secret for a short-lived bearer token. Every state-changing call carries an idempotency key, so a network retry settles exactly once — the single most important property when real money is involved.

A collection is a charge. You push it to a customer's number; a prompt-to-pay lands on their phone; they confirm with a PIN. The charge moves through pending → authorised → completed (or declined / expired / failed), and you learn the outcome two ways: poll the status endpoint, or — better — receive a webhook the moment it changes.

Webhooks are signed with HMAC-SHA256 against a secret only you and PesaBridge share, and retried with backoff until your endpoint acknowledges — so you can build on them without fear of a missed or forged event. Balance and transaction endpoints close the loop for reconciliation, and a sandbox runs the identical contract, so you ship with confidence.

Charge lifecycle

pendingauthorisedcompleteddeclinedexpiredfailed
webhook · charge.completed
{
  "event": "charge.completed",
  "charge_ref": "STK9F2A",
  "amount": 250.00,
  "currency": "KES",
  "state": "completed",
  "signature": "hmac-sha256…"
}

Security & compliance

Trust is the product.

Financial services live or die on correctness and control. PesaBridge bakes both into the core.

Double-entry by construction

Every movement posts balanced debits and credits — the books reconcile to zero, always.

PIN, KYC & limits

Configurable KYC tiers, per-transaction and daily limits, PIN attempts and wallet locking.

Idempotent & reversible

Idempotency keys stop double charges; a unified reversal engine unwinds any department.

Signed webhooks

HMAC-SHA256 signatures and retries so partner systems can trust every callback.

Full audit trail

Immutable ledger entries and transaction history for regulators and disputes.

Per-country compliance

ID types, KYC rules and tariffs switch with the market, from configuration.

Stuck on something?

Our engineers answer integration questions. Send us the request reference and we'll find the exact call.