Developer experience

Ship payments,not complexity.

A clean API for naira collections and payouts, with the tools, documentation, and visibility your team needs to move quickly.

create-payment.ts0ms
// Charge a customer in naira
const payment = await servapay.payments.create({
  amount: 250000,
  currency: "NGN",
  customer: "cus_84KQ2",
  method: "card"
});

// → payment.status === "succeeded"
201 Created
IBegin

Three steps from test key to live payment.

01

Create your keys

Open a sandbox account and generate restricted keys for each environment.

02

Make a request

Use the REST API or drop-in checkout to create your first naira payment.

03

Listen for events

Receive signed webhooks and keep your application state perfectly in sync.

IIWebhooks

Know exactly what happened, exactly when.

Signed, retryable events make it straightforward to update orders, release value, notify customers, and reconcile your ledger.

HMAC signature verification

Every delivery is signed with your secret.

Automatic retry with backoff

Failed deliveries retry on a schedule.

History and manual replay

Re-send any past event on demand.

Event streamLive

payment.succeeded

evt_01K8Q2 · just now

200

payment.failed

evt_02K8Q2 · just now

200

transfer.received

evt_03K8Q2 · just now

200

payout.completed

evt_04K8Q2 · just now

200
IIISandbox

A sandbox that tells the truth.

Test successful payments, issuer declines, delayed transfers, payout failures, webhook retries, and the awkward edge cases — before going live.

Success

The happy path, end to end.

Decline

Issuer refusals with real codes.

Pending

Transfers that settle late.

Reversed

Refunds and chargebacks.

Secure by default, flexible by design.

Keep credentials scoped and auditable with environment-specific keys, granular permissions, and idempotent requests.

Restricted keysAudit logIP controlsIdempotency

First request

The API is ready when you are.

Get sandbox credentials and move your first test naira payment in minutes.