Webhooks
Documentation for Bold Bank Webhooks
This documentation covers how to set up and validate Bold Bank webhooks. Webhooks allow you to receive real-time notifications about events in your Bold Bank account.
Webhooks are automated messages sent from Bold Bank to your application when specific events occur.
Webhook Overview
How to set up your webhook URL
Log in to your Bold Bank account, navigate to settings, and provide the URL endpoint where webhook events should be delivered.
Webhook payload structure
Each webhook payload contains these fields:
- event: The event type (for example,
bankTransfer.success). - eventData: The event payload body.
- signature: HMAC-SHA256 signature used for verification.
Common fields inside eventData include:
- sessionId
- productType
- amount
- netAmount
- fee
- commission
- transactionStatus (
SUCCESS,FAILED, orPROCESSING) - transactionReference
- customerReference
- comment
- createdAt
- transactionAccount
- transactionType (
CREDITorDEBIT)
Event-specific objects such as sender, beneficiary, details, or metadata can also appear.
Always inspect eventData.transactionStatus to determine the real state of
a transaction.
Partner integration events (Outlets)
Partners using Outlets receive three additional events in addition to the standard ones.
| Event | When it fires | Purpose |
|---|---|---|
outlet.created | After POST /outlets succeeds | Confirms outlet and wallets are usable. |
walletSweptIntra.successful | After an auto-sweep moves funds from an outlet collection wallet | Reconciliation event with sweepReference. |
internalTransfer.successful | After POST /transfer/internal settles | Confirms internal wallet movement. |
Outlets also receive fundAccount.success and bankTransfer.success / bankTransfer.failed with the same payload shape documented above.
Signature Validation
To verify authenticity, compute HMAC-SHA256 and compare to the payload signature.
Your x-api-key is also the webhook signing secret. Keep it server-side only,
never expose it in client applications, and rotate it immediately if leaked.
Validation Steps
- Extract only the
eventDataobject. - Serialize
eventDataas minified JSON. - Compute HMAC-SHA256 using your
x-api-key. - Compare the hex digest with
signatureusing a constant-time comparison.
Best Practices
- Acknowledge fast with HTTP 2xx after persisting the payload.
- Make handlers idempotent because retries can happen.
- Always validate signature before processing.
- Process asynchronously to keep webhook endpoints responsive.