How It Works
The end-to-end lifecycle of a virtual account payment from creation through to settlement notification.
Payment Flow
- 1
Create a Virtual Account
Your server calls POST /virtual/new-account with a unique reference, amount (if applicable), account type, and callback URL.
- 2
KongaPay generates an account number
KongaPay generates and returns a virtual account number linked to your settlement account.
- 3
Present to your customer
You present the virtual account number and bank name (KongaPay) to your customer.
- 4
Customer initiates transfer
The customer initiates a bank transfer to the virtual account from any Nigerian bank.
- 5
KongaPay receives inflow
KongaPay receives the inflow via NIP/NPS, identifies the virtual account, and maps it to your settlement account.
- 6
Amount validation
For nonstatic and static accounts, KongaPay validates that the amount matches exactly. Static-flex skips this check.
- 7
Callback fired
The transaction is processed and stored. KongaPay fires a POST callback to your webhook URL with the payment result.
- 8
Reconciliation
Your server receives and validates the callback, then reconciles using external_reference and session_id.
Idempotency
Every virtual account request requires a unique reference (external_reference). Submitting the same reference twice will return a 409 Conflict โ no duplicate account is created. This protects you from accidental double-creation caused by network retries.
Data Flow Diagram
Key Fields
external_referenceYour unique reference โ use to track and reconcile payments
session_idNIP session ID assigned by interbank network โ use for deduplication
account_numberThe virtual account number to share with your customer
callback_urlYour webhook URL where KongaPay will POST payment notifications