> ## 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.

# Troubleshooting

> Common integration pitfalls and how to fix them.

#### We never receive webhooks

* Verify your callback URL is **publicly reachable** (no VPN/IP allowlist blocking).
* Ensure your endpoint accepts `POST application/json`.
* Check server logs for non-2xx responses; we only consider **200 / 201 / 202** delivered.

#### We get duplicates

* Retries can cause re-delivery. Implement **idempotency** with `payment_uuid` or `client_reference`.

#### Signature mismatch

* Ensure you build the hash exactly as documented (no separators, consistent string formats).
* Watch out for number formatting on `amount`.
* See [Verify signature](/pages/webhooks/verify-signature) for examples.

#### Timeouts

* Read the body, **persist**, and return **2xx** quickly; do heavy work async.

#### Metadata not present

* `metadata` is optional; code defensively. See [Webhook payload](/pages/webhooks/payload).
