Payouts API

Send money to any bank, programmatically

One API call validates the account, routes through NIP and settles in the recipient's bank. Individual transfers or batch of hundreds, each with a webhook confirmation.

  • Settles in seconds
  • Batch support
  • Sandbox to test

Free to start · No monthly fee · Pay per transfer

API

POST /v1/payouts

Request

POST /v1/payouts

{

"account_number": "3012345678",

"bank_code": "044",

"amount": 150000,

"reference": "VND-001"

}

Response

{

"status": "success",

"data": {

"id": "po_8x7k2m",

"status": "processing",

"settled_at": "2026-08-20T14:32:00Z"

}

}

NIP settlement · Idempotency key supported

200 OK · 38ms

Why it matters

Disbursements should not require a bank portal

Most platforms handle payouts by logging into a bank, entering account numbers one by one, and tracking the result in a spreadsheet. The Payouts API replaces all three.

One call, money in the account

A single POST request with the recipient's account number, bank code and amount. The API validates the account, routes through NIP and returns a reference. The money arrives in seconds.

Individual or batch

A single transfer to a vendor or a batch of two hundred salary payments. The same endpoint, the same validation, the same speed. Upload a CSV or send each one programmatically.

Scheduled and recurring

Set a date for a payout to go out automatically. Rent, retainers, vendor settlements — schedule once and the API handles the rest on the date you set.

How it works

From API call to settled, in four steps

01

Create a payout

POST to /v1/payouts with the recipient's account number, bank code, amount and reference.

02

Account is validated

The API verifies the account number against the bank's records before any money moves.

03

Transfer settles via NIP

The payout routes through NIP and settles in the recipient's account, usually within seconds.

04

Webhook confirms

A signed payload arrives at your webhook URL with the payout status, reference and settlement time.

Batch disbursement

Two hundred transfers in one call

Payroll runs, vendor settlements and supplier payments often arrive as a spreadsheet. Uploading it should not require a developer or a three-day turnaround.

  • Upload a CSV or send an array of transfers
  • Each transfer validated before any money moves
  • Individual status per transfer in the response

API

POST /v1/payouts

Request

POST /v1/payouts

{

"account_number": "3012345678",

"bank_code": "044",

"amount": 150000,

"reference": "VND-001"

}

Response

{

"status": "success",

"data": {

"id": "po_8x7k2m",

"status": "processing",

"settled_at": "2026-08-20T14:32:00Z"

}

}

NIP settlement · Idempotency key supported

200 OK · 38ms

Webhooks

Know the moment the money arrives

Every payout event — processing, settled, failed — is delivered to your webhook URL in real time. No polling, no guessing, no manual checks.

  • Signed payloads prevent spoofing
  • Automatic retry on delivery failure
  • Event types cover every lifecycle stage
See how it reaches the books

Webhooks

Event log

collection.success

ORD-2941

14:32:01

payout.settled

VND-001

14:32:05

account.created

cus_4k9f2

14:32:08

card.activated

crd_9m3k7

14:32:12

All delivered · Retry on failure · Signed payloads

The difference

What changes when disbursement is one API call

The usual way

  • Logging into a bank portal for each transfer
  • Manually entering account numbers from a list
  • No programmatic way to disburse at scale
  • Transfers identified by reading bank narrations
  • A separate spreadsheet to track who was paid

With Niimbu

  • One API call sends money to any bank
  • Account numbers validated before money moves
  • Batch of hundreds in a single request
  • Each transfer carries its own reference
  • Webhook confirms settlement in real time
Everything included

The payout detail that real integrations need

No add-on modules and no higher tier. These are part of the Payouts API from the first call.

Single transfers

One API call sends money to any bank account in Nigeria.

Batch payouts

Send hundreds of transfers in one request, each validated individually.

Scheduled payouts

Set a date and the API sends the payout automatically.

Account validation

Account numbers are verified against bank records before money moves.

Idempotency keys

Retry safely. The same key returns the same result without duplicates.

Webhooks

Real-time event delivery for every payout lifecycle stage.

Multi-bank support

Send to every commercial bank and most microfinance banks in Nigeria.

References

Each transfer carries a unique reference the recipient can match.

Sandbox

Test transfers with test accounts, no real money moved.

Engineer reviewing payout API logs
The idea behind it

Sending money should not require a bank portal, a spreadsheet and a prayer.

Pricing

Per transfer, not per API call

There is no monthly platform fee. You pay a small fee per transfer, with lower rates at higher volume. The sandbox is free.

  • No monthly platform fee
  • Lower rates at higher volume
  • Sandbox is free
See pricing
Questions

Frequently asked questions

If your question is not here, the Help Centre goes deeper, or you can talk to someone on the team.

How quickly do transfers settle?

Most transfers settle in under three seconds through NIP. The webhook fires the moment the transfer is confirmed, so your system knows immediately.

Can I send to any bank in Nigeria?

Yes. The API supports every commercial bank and most microfinance banks. Account numbers are validated against the bank's records before any money moves.

How do batch payouts work?

POST an array of transfers to the API. Each one is validated individually, and the response includes the status of every transfer. Failed transfers are flagged without blocking the rest.

Can I schedule payouts?

Yes. Set a date in the request and the API sends the payout automatically on that date. Scheduled payouts follow the same validation and settlement flow.

What does the API cost?

There is no monthly platform fee. You pay a small fee per transfer, with lower rates at higher volume. The sandbox is free.

How do I handle failures?

Failed transfers return a clear error code and reason. The webhook also fires for failed transfers, so your system can handle retries on its own terms.

Is there a sandbox?

Yes. The sandbox uses test accounts and test bank codes. Every scenario — success, insufficient balance, invalid account — can be reproduced without moving real money.

The simpler way to scale your business!

Start free and see it working today, or talk to us about pricing for teams and higher volumes.