# Return URL & Webhooks

Two URLs configure post-payment behaviour at the **business profile** level (Dashboard → **Developers** → **Payment Settings** → **Payment behaviour**):

| Field | API field | Delivers to |
| ----- | --------- | ----------- |
| Return URL | `return_url` | Buyer's browser (redirect) |
| Webhook URL | `webhook_details.webhook_url` | Your backend (HTTP POST) |

## Return URL

Use when the checkout flow redirects the buyer (3DS, bank, hosted checkout, payment link).

**Per-payment override:** pass `return_url` when creating a payment. It takes precedence over the profile default.

**Query parameters** on redirect (typical): `status`, `payment_id`, `client_secret`.

Your thank-you / error page should read these and optionally retrieve the payment via API for the final state.

## Webhook URL

PaySwitch sends asynchronous **POST** requests when payment (and configured refund/payout) events occur.

Your endpoint should:

1. Accept HTTPS POST with JSON body.
2. Respond quickly (process asynchronously if needed).
3. Verify signature when enabled on your installation.

If the profile webhook URL is empty, no outbound webhooks are sent.

## Allowlist

On some PaySwitch deployments, webhook destination URLs must be **allowlisted** by the platform team. If events do not arrive despite a correct URL in Dashboard, contact your operator.

## Recommended setup

Use **both**: Return URL for buyer UX, Webhook URL for durable order status in your database.
