The Collections API handles money coming in to your platform — the opposite of Payments, which handles money going out. When a customer wants to pay you, you use the Collections API to:
Create a collection reference (a payment link or account number) for the customer.
The customer sends money to that reference from any bank in Nigeria.
The platform credits your virtual account and fires a webhook to notify you instantly.
You query the Collections API to reconcile and confirm the credit.
Collections work over the NIP network, so funds arrive in near real-time.
POST /v1/collections/intentGenerate a unique payment reference for a customer to send you money. You can set an exact expected amount (for invoices) or leave it open (for top-ups).What you send:
Field
Type
Required
Description
destination_account_id
string
Yes
The virtual account that should receive the funds
expected_amount
integer
No
Expected amount in kobo. If set, only this exact amount is accepted
currency
string
Yes
Always NGN
description
string
No
What this payment is for — shown in the webhook and statement
expires_at
string
No
ISO 8601 datetime after which this intent expires. Default: never
customer_ref
string
No
Your internal reference for the customer (e.g., order ID)
metadata
object
No
Any key-value pairs for your own records
What you get back:
Field
Description
collection_id
Unique ID for this collection intent
collection_reference
A unique string the customer includes in their transfer narration
destination_account_number
The NUBAN to send money to
destination_bank_name
Always Union Bank of Nigeria
destination_bank_code
Union Bank’s CBN bank code
expected_amount
Amount in kobo (if specified)
status
pending — waiting for payment
expires_at
Expiry datetime or null
Example request:
Copy
Ask AI
{ "destination_account_id": "acct_9d7e1c", "expected_amount": 150000, "currency": "NGN", "description": "Payment for Order #ORD-20240115-042", "customer_ref": "ORD-20240115-042"}
Show the customer the destination_account_number, destination_bank_code, and collection_reference. Instruct them to include the reference in the transfer narration so the payment is automatically matched to their order.
DELETE /v1/collections/{collection_id}Cancel an outstanding collection intent. Once cancelled, any payment arriving with this reference will be rejected and returned to the sender.
The fastest way to know a payment arrived is via a webhook. When a collection intent is paid, the platform immediately sends a collection.paid event to your webhook URL.Webhook payload example:
In the sandbox environment, incoming payments do not arrive automatically. Use the simulation endpoint to trigger a test credit:POST /v1/collections/{collection_id}/simulate-paymentWhat you send:
Field
Type
Required
Description
amount
integer
Yes
Amount to simulate in kobo
sender_name
string
No
Name of the simulated sender
sender_account
string
No
Simulated sender account number
This triggers the full webhook flow as if a real payment arrived — useful for testing your webhook handler end-to-end.