Setting up your webhook
- Go to the Webhooks tab in your Bitwage Business Account settings.
- Create and manage webhooks.
- Configure your endpoint URL and note the signing secret.
Webhook events
| Event | Description |
|---|---|
payroll.created | A company created a payroll. |
user.create_user | A new user was created. |
user.payment_status_update | A user’s payment status changed. |
user.kyc_status_update | A user’s KYC verification status changed. |
user.funding_account_status | A user’s funding account status changed. |
Webhook format
All webhooks are sent as POST requests with a JSON body:User KYC status update
Sent when a user’s KYC verification status changes.User payment status update
Sent when a user’s payment status changes. Includes the full payment object with allocation outputs.Validating webhook signatures
It is strongly recommended to verify webhook signatures in production. Webhooks include anx-bitwage-signature HTTP header containing a SHA256
HMAC signature of the payload.
Verification steps
- Get the raw request body as a UTF-8 string.
- Compute the HMAC-SHA256 using your signing secret.
- Compare the computed signature with the
x-bitwage-signatureheader.
Python example
Best practices
- Return a 200 status promptly to acknowledge receipt. Process the event asynchronously if needed.
- Handle duplicates by checking for duplicate event IDs. Bitwage may retry delivery if your endpoint doesn’t respond with a 200.
- Verify signatures to ensure webhooks are genuinely from Bitwage.