Skip to main content

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

StatusCodeDescription
400Invalid requestMissing card_serial, invalid amount, inactive card, or subscriber mismatch
401Invalid signatureWebhook signature invalid
500Internal errorWebhook not configured or processing failed