Skip to main content
Webhooks let AbabilPay push event notifications to your server as things happen — no polling required. When a payment is confirmed, an invoice goes overdue, or a bridge transfer completes, AbabilPay sends an HTTP POST to your registered endpoint with a signed JSON payload.

Registering a webhook endpoint

Register an endpoint from Dashboard → Settings → Webhooks, or via API:

Response

Store the secret immediately — it is shown only once. You will use it to verify every incoming webhook signature.

Payload format

Every webhook request is a POST with Content-Type: application/json. The body follows a consistent envelope:

Verifying signatures

Every request includes an AbabilPay-Signature header. Always verify this before processing the payload — it proves the request came from AbabilPay and the body was not tampered with. The signature is an HMAC-SHA256 of the raw request body, signed with your webhook secret.
Use the raw request body for signature verification — not a re-serialised version of the parsed JSON. Any whitespace difference will cause verification to fail.

Event types


Retry behavior

If your endpoint does not return a 2xx response within 10 seconds, AbabilPay retries with exponential backoff: After 5 failed attempts the event is marked as failed and no further retries occur. You can manually replay failed events from Dashboard → Settings → Webhooks. Deduplication: Use the id field to detect retries. Store processed event IDs and skip any event whose ID you have already handled.

Testing webhooks

Use the sandbox environment to send test events without real on-chain transactions:
AbabilPay will deliver a simulated payment.completed payload to your registered endpoint so you can test your handler end-to-end. For local development, use a tunneling tool such as ngrok to expose your local server: