Webhooks
deposit.credited
Vastel POSTs this event to your webhook URL after a deposit is credited to your Naira wallet.
Set an HTTPS webhook URL in the dashboard under API access. HTTP URLs are rejected. Respond with any HTTP 2xx. Failed deliveries retry up to 10 times.
The signature header is X-Vastel-Signature. It is HMAC-SHA256 of the JSON body before the signature field was added, using your webhook secret. Compare with a constant-time check. Use reference as the idempotency key.
Credit your customer from ngn_amount only after you verify the signature. Do not trust unsigned requests.
Payload
eventstring · required
Always deposit.credited.
referenceuuid · required
Transaction id. Deduplicate on this.
customer_idstring · required
Your external_user_id.
assetstring · required
Crypto asset that was deposited, for example USDT.
asset_amountstring · required
Crypto amount received.
exchange_ratestring · required
Effective rate used for Naira settlement.
ngn_amountnumber · required
Credit your customer this amount.
merchant_creditednumber · required
Amount added to your wallet after the fee.
feenumber · required
Processing fee in Naira.
settled_currencystring · required
Always NGN.
statusstring · required
Always credited for this event.
sandboxboolean
Present and true on test deliveries. Ignore the event for a real order. Live deliveries omit it. The header X-Vastel-Mode is sandbox on those test calls.
signaturestring · required
Same HMAC as X-Vastel-Signature. Prefer verifying the header.
{
"event": "deposit.credited",
"reference": "019f6b03-tx01-bbbb-cccc-ddddeeeeffff",
"customer_id": "cust_1001",
"asset": "USDT",
"asset_amount": "100.00",
"exchange_rate": "1497.0000",
"ngn_amount": 149700.0,
"merchant_credited": 148203.0,
"fee": 1497.0,
"settled_currency": "NGN",
"status": "credited",
"settled_at": "2026-07-16T12:00:00+00:00",
"attempt": 1,
"max_attempts": 10,
"signature": "a1b2c3d4..."
}