WasaaPay API · v1

Build with WasaaPay

One API for African payments — collections, payouts, split & escrow, and signed webhooks across mobile money, card, and bank.

Already onboarded? Sign in to the dashboard.

POST /v1/collectionsSigned
X-WasaaPay-Key:wp_9f2c1a7be3d0.••••••••••••
X-WasaaPay-Timestamp:1734600000
X-WasaaPay-Signature:93fe33862e7c…128008de
Idempotency-Key:c0ffee00-1a2b-…
{
"amount": 150000, "currency": "KES",
"rail": "mobile_money",
"payer_phone": "254700000001"
}
201transaction · pending

Base URLs

Every path is prefixed with /v1

Production

https://api.wasaapay.com/v1

Live money. Real keys, real rails.

Sandbox

https://sandbox.api.wasaapay.com/v1

Test keys. Rails are simulated by default.

Local

http://localhost:3000/v1

The gateway's default port when you run the stack yourself.

Quickstart — three steps to your first payment

  1. 01

    Get an API key

    Issue a sandbox key in the dashboard under Developers → API keys. The full secret is shown once.

    wp_9f2c1a7be3d0.<secret>API keys & scopes
  2. 02

    Sign the request

    Compute an HMAC-SHA256 over `${timestamp}.${rawBody}` with the secret, and send it as three headers.

    createHmac('sha256', secret).update(`${ts}.${body}`)HMAC signing
  3. 03

    Accept a payment

    POST a collection in minor units. Poll it, or receive the result as a signed webhook.

    POST /v1/collections { amount: 150000, … }Create a collection

Explore the guide

The integration guide is grounded in the running services and the OpenAPI contract.