VULT Webhook
POST
/webhooks/vult/cashinOpen in the API playground →
Info
Receive cash-in notifications from VULT processor. This webhook is called when a user deposits funds via VULT.
Request
X-Webhook-Signaturestringheaderrequired
HMAC-SHA256 signature of the request body
Body Parameters
card_serialstringbodyrequired
Card serial linked to the subscriber receiving funds
phone_numberstringbody
Optional phone number used to cross-check the linked subscriber
amountintegerbodyrequired
Amount in minor units (e.g., cents)
Response
successboolean
Whether the cash-in was processed successfully
transaction_idstring
SmartPay transaction ID for the deposit
Examples
Request
cURL
curl -X POST "https://demo.api.vultlocal.com/webhooks/vult/cashin" \
-H "Content-Type: application/json" \
-H "X-Webhook-Signature: abc123..." \
-d '{
"card_serial": "CARD0001",
"phone_number": "+23279123456",
"amount": 50000
}'
Response
200 Success
{
"success": true,
"transaction_id": "txn_vult_123",
"message": "Cash-in processed successfully",
"new_balance": 75000
}
400 Invalid Request
{
"success": false,
"message": "card_serial is required"
}
401 Invalid Signature
{
"success": false,
"message": "Invalid webhook signature"
}
Signature Verification
Warning
Always verify the X-Webhook-Signature header before processing:
const crypto = require('crypto');
function verifySignature(payload, signature, secret) {
const expected = crypto
.createHmac('sha256', secret)
.update(payload)
.digest('hex');
return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(expected)
);
}
Errors
| Status | Code | Description |
|---|---|---|
| 400 | Invalid request | Missing card_serial, invalid amount, inactive card, or subscriber mismatch |
| 401 | Invalid signature | Webhook signature invalid |
| 500 | Internal error | Webhook not configured or processing failed |