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

  • event

    string · required

    Always deposit.credited.

  • reference

    uuid · required

    Transaction id. Deduplicate on this.

  • customer_id

    string · required

    Your external_user_id.

  • asset

    string · required

    Crypto asset that was deposited, for example USDT.

  • asset_amount

    string · required

    Crypto amount received.

  • exchange_rate

    string · required

    Effective rate used for Naira settlement.

  • ngn_amount

    number · required

    Credit your customer this amount.

  • merchant_credited

    number · required

    Amount added to your wallet after the fee.

  • fee

    number · required

    Processing fee in Naira.

  • settled_currency

    string · required

    Always NGN.

  • status

    string · required

    Always credited for this event.

  • sandbox

    boolean

    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.

  • signature

    string · 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..."
}