Collection accounts
Receive repeat NGN payments through permanent virtual accounts.
Collection accounts give each customer permanent NGN bank details. Use them to identify repeat payments and settle received funds to that customer's wallet.
Contact us to enable collection accounts
Pulse enables this feature for each business. Contact us to discuss your use case before you build the integration.
Create a collection account
Provide your customer reference, the account name, and the payout destination.
curl https://engine-api.pilot.pulseshiga.io/v1/collection-accounts \
-X POST \
-H "X-API-Key: <your key>" \
-H "Content-Type: application/json" \
-d '{
"reference": "customer-ada-001",
"name": "Ada Obi",
"payout_destination": {
"chain": "base",
"address": "0x1111111111111111111111111111111111111111"
}
}'Pulse returns bank details that the customer can reuse.
{
"status": true,
"data": {
"id": "0199a7a4-8e83-7c16-b143-a97cff1c9162",
"reference": "customer-ada-001",
"name": "Ada Obi",
"bank_account": {
"account_name": "Ada Obi",
"account_number": "7684806467",
"bank_name": "Example Bank"
},
"payout_destination": {
"chain": "base",
"address": "0x1111111111111111111111111111111111111111"
},
"created_at": "2026-09-09T10:00:00Z"
}
}The reference stays unique within your business. Repeat the same request after a
timeout. Pulse returns the existing account when every field matches.
A different request with the same reference returns 409 duplicate_reference.
Track incoming payments
Each transfer to a collection account creates an inflow. Pulse sends
inflow.received after it records the payment.
{
"id": "0199a7b0-17d1-76ab-a499-9a9d6bb29361",
"type": "inflow.received",
"environment": "live",
"created_at": "2026-09-09T10:15:32Z",
"data": {
"inflow_id": "0199a7b0-17d1-76ab-a499-9a9d6bb29361",
"collection_account_id": "0199a7a4-8e83-7c16-b143-a97cff1c9162",
"collection_reference": "customer-ada-001",
"amount": "15000",
"currency": "NGN",
"sender": {
"name": "A. Customer",
"account_number": "0123456789",
"bank_code": "000",
"bank_name": "Example Bank"
},
"payout_destination": {
"chain": "base",
"address": "0x1111111111111111111111111111111111111111"
}
}
}Use the event id for deduplication. Use inflow_id or collection_reference for
reconciliation. Sender fields can be absent when the sending bank omits them.
Track receipt and settlement separately
inflow.received confirms that Pulse recorded the NGN payment. It does not confirm
settlement to the payout address.
See Webhooks for signature verification and delivery retries.
Retrieve accounts and inflows
Use GET /v1/collection-accounts to list accounts. The search parameter matches a
name, reference, or virtual account number.
Use GET /v1/inflows to list incoming payments. Filter by
collection_account_id, search, from, or to.
Both endpoints use cursor pagination. Pass meta.next_cursor as cursor on the next
request.