Complete list of webhook events
{ "event": "payment.received", "event_id": "evt_abc123", "timestamp": "2024-01-15T10:30:45Z", "data": { "transaction_id": "txn_001", "virtual_account_number": "1234567890", "amount": 50000, "currency": "NGN", "sender_name": "John Doe", "sender_account": "0987654321", "sender_bank": "GTBank", "reference": "FP-20240115-001", "metadata": { "customer_id": "cus_123" } } }
{ "event": "payment.reversed", "event_id": "evt_def456", "timestamp": "2024-01-15T11:00:00Z", "data": { "transaction_id": "txn_001", "amount": 50000, "reason": "Bank reversal" } }
{ "event": "payout.completed", "event_id": "evt_xyz789", "data": { "payout_id": "pay_001", "amount": 25000, "account_number": "0123456789", "bank_name": "GTBank", "reference": "payout-001", "completed_at": "2024-01-15T11:05:23Z" } }
{ "event": "payout.failed", "event_id": "evt_fail123", "data": { "payout_id": "pay_002", "amount": 25000, "failure_reason": "Invalid account number", "refunded": true } }
{ "event": "settlement.completed", "data": { "settlement_id": "stl_abc123", "amount": 500000, "net_amount": 499950, "fee": 50, "completed_at": "2024-01-15T18:05:23Z" } }
app.post('/webhooks/fossapay', async (req, res) => { const { event, data } = req.body; res.status(200).send('OK'); switch (event) { case 'payment.received': await handlePaymentReceived(data); break; case 'payout.completed': await handlePayoutCompleted(data); break; case 'wallet.credited': await handleWalletCredited(data); break; default: console.log('Unhandled event:', event); } });