Webhooks allow your application to receive real-time HTTP POST notifications whenever a customer pays into a static or dynamic virtual account generated on Billswave.
When funds are successfully transferred into any of your merchant accounts, Billswave immediately processes the credit, updates your wallet balance, and dispatches a JSON payload via an HTTP POST request to your configured Webhook URL.
{
"account_number": "9012345678",
"bank_name": "Moniepoint Microfinance Bank",
"account_name": "Billswave / John Doe",
"amount": 5000.00,
"session_id": "000013240928181200000000000123"
}
The virtual account number that received the bank transfer credit.
The partner bank where the account is hosted.
The assigned name on the virtual account.
Total gross amount deposited in NGN.
Unique bank session reference. Crucial for duplicate checks.
Here is how you can process and store incoming Billswave webhooks securely in PHP:
Always store and verify the incoming session_id against your database before crediting user balances to prevent processing duplicate requests.
Return an HTTP status code 200 OK immediately upon parsing the payload. Avoid performing long-running background tasks synchronously during the webhook request.
Ensure your webhook receiver URL is served over a valid HTTPS protocol to encrypt transaction payload delivery.