Overview
Webhooks notify your server when payment events occur. Set thewebhookUrl when creating a payment, and Ebioro will POST to that URL whenever the payment status changes.
Webhook Payload
Event Types
A payment may emit several
transaction_updated events as it progresses (for example underpaid then paid), and the number can vary by settlement type. Don’t assume a fixed count — drive your logic off the latest status and settlement_status in each event, and treat settlement_status: "paid" as the signal that funds have settled to your account. Deduplicate by payment id.Verifying Webhooks
Every webhook includes anX-WEBHOOK-AUTH header containing an HMAC-SHA256 signature. Always verify this signature before processing the webhook.
The signature is computed over the raw request body exactly as sent. Verify against those raw bytes — do not parse the JSON and re-serialize it, because a re-serialized object can differ in key order or whitespace and the signature will no longer match.
Requirements
- Webhook URL must use HTTPS in production
- Your endpoint must respond with a 200 status code
- Respond within 10 seconds or the request will time out
Retry Policy
If your endpoint returns a non-200 status code or times out, the webhook is not retried automatically. Use the delivery log to find failed deliveries and resend them.Delivery Logs and Resend
Every webhook delivery is recorded — successful or not. Use the Webhook Logs API to audit and recover:success | failed | skipped), HTTP status, response time, and attempt count.
A resend replays the originally stored payload, re-signed with your current secret key:
- The payload is byte-identical to the original delivery — your endpoint receives the same event again. Deduplicate by event content (payment id + status), not by signature.
- Resends are rate-limited to 10 per minute.