Skip to main content

Overview

The Payments API lets your platform move money out of a virtual account to any bank in Nigeria. Transfers are processed through the NIP (Nigeria Instant Payment) network, which is the same inter-bank rails used by every major Nigerian bank. Most transfers complete in under 10 seconds. Key facts:
  • Minimum transfer amount: ₦1 (100 kobo)
  • Maximum per transfer: determined by your tier (see your dashboard)
  • Settlement: instant in sandbox; NIP real-time in production
  • All requests require an idempotency key to prevent duplicate payments

Base URL


Authentication

All Payments endpoints require an API key:
High-value production transfers additionally require mTLS (mutual TLS). Your server must present a client certificate issued during the go-live process. Contact baas-support@unionbank.ng to obtain your certificate.

Idempotency

Every payment request must include an idempotency key. This is a unique string you generate (a UUID is ideal) that ensures the same payment is never processed twice, even if your server retries after a timeout.
If you send two requests with the same idempotency key within 24 hours, the second request returns the result of the first instead of creating a new payment. After 24 hours, the key expires and can be reused.

Endpoints

Initiate Transfer

POST /v1/payments/transfer Sends money from one of your virtual accounts to any Nigerian bank account. What you send: What you get back: Example request:
Example response:

Get Payment Status

GET /v1/payments/{payment_id} Check the current status of a payment. Poll this endpoint if you do not use webhooks, or use it to verify webhook events. Path parameter: Status values:

List Payments

GET /v1/payments Returns a paginated list of all payments made from your business accounts. Query parameters:

Reverse Payment

POST /v1/payments/{payment_id}/reverse Request a reversal of a completed payment. Reversals are not guaranteed: if the beneficiary bank has already credited the account and the funds have been spent, reversal may fail. What you send:
Reversals are best-effort and depend on the beneficiary bank’s cooperation. Always verify account details before initiating a transfer.

Verify Bank Account

GET /v1/payments/verify-account Confirm that a bank account number and name match before sending money. Prevents failed transfers due to wrong account numbers. Query parameters: What you get back:

Nigerian Bank Codes (Common)

The full list of CBN bank codes is available at CBN’s official portal.

Request Signing (Production)

Production payment requests must be signed with your HMAC-SHA256 secret key. This prevents tampering in transit. Signing steps:
  1. Concatenate: timestamp + "." + request_body_json
  2. Compute: HMAC-SHA256(concatenated_string, your_hmac_secret)
  3. Encode: Base64 the result
  4. Send: Include in the X-Signature header along with X-Timestamp
The timestamp must be within 5 minutes of the server clock. Requests with older timestamps are rejected to prevent replay attacks.

Error Codes


Full API Reference

Open API Playground

Try Payments endpoints live in the browser