> ## Documentation Index
> Fetch the complete documentation index at: https://docs.waftpay.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Overview

> How Waftpay notifies your system about payment status changes via webhooks.

Webhooks let Waftpay notify your server about payment status events (e.g., `SUCCESS`, `FAILED`, `PENDING`). Your system exposes a **callback URL** (HTTPS recommended) that accepts a JSON `POST`. We automatically retry a few times if your endpoint is temporarily unavailable.

#### What you’ll implement

1. A publicly reachable **HTTPS POST** endpoint (your callback URL).
2. Logic to **validate** the payload and verify its integrity.
3. **Idempotency** handling to avoid double-processing.
4. A fast **2xx** response on success.

#### Event lifecycle (high level)

* We process the payment event → transform it into a client-friendly payload → `POST` it to your callback URL.
* We treat HTTP **200/201/202** as delivered; non-2xx or timeouts trigger retries (up to a small, configurable maximum).

> **Note**: Webhooks report status; they don’t accept commands. Use the Payments API for actions.

#### Where to go next

* See [Event types](/pages/webhooks/event-types) for the status/code matrix.
* See [Webhook payload](/pages/webhooks/payload) for the exact JSON shape.
* See [Retries & idempotency](/pages/webhooks/retries-and-idempotency) for retry rules and deduping.
* See [Build your endpoint](/pages/webhooks/building-your-endpoint) for handler patterns.
* See [Consumer service](/pages/webhooks/consumer-service) for the internal queue → delivery flow.
