# Webhook setup (https://prood.com/docs/guides/webhook-setup)

A webhook is how your payment provider tells your store that a payment arrived. Orders are only marked as paid this way. It matters most for Multibanco and MB WAY, where the customer can pay long after they leave checkout, and it's the safety net for cards if a customer closes the browser.

## Find your webhook URL [#find-your-webhook-url]

Go to **Integrations**, under **Connections** in the dashboard, and open your provider. The page shows your store's webhook URL, ready to copy. Each store has its own.

## Stripe [#stripe]

1. In the Stripe dashboard, open Developers, then Webhooks, and add a destination. Choose **Snapshot**, then paste your URL.
2. Select these events:

   - `checkout.session.completed`
   - `checkout.session.async_payment_succeeded`
   - `checkout.session.async_payment_failed`
   - `checkout.session.expired`
   - `charge.refunded`

3. Copy the signing secret, which starts with `whsec_`, and paste it into **Signing secret** in Prood.

Test mode and live mode have separate destinations and signing secrets, so repeat this when you go live.

## Easypay [#easypay]

In your Easypay account, open Developers, then Configuration API 2.0, then Notifications. Paste this address as the Generic URL.

Easypay doesn't sign its notifications, so Prood treats each one as a prompt and reads the payment back from Easypay before changing the order.

## Ifthenpay [#ifthenpay]

Send your URL to Ifthenpay as your callback URL, exactly as the dashboard shows it, with your anti-phishing key. It includes placeholders that Ifthenpay fills in on each call:

```
?key=[ANTI_PHISHING_KEY]&orderId=[ORDER_ID]&amount=[AMOUNT]&requestId=[REQUEST_ID]
```

Ifthenpay doesn't report refunds, so you record those by hand.

## Troubleshooting [#troubleshooting]

| Issue | What to check |
| --- | --- |
| Orders stay **Unpaid** | Your provider's delivery log, then that the URL matches the dashboard exactly |
| Stripe says the signature failed | The signing secret in Prood matches this endpoint, in the same mode |
| Nothing arrives | The events you subscribed to, for Stripe |
| A refund made at your provider doesn't show | Stripe and Easypay report refunds. Ifthenpay doesn't, so record it on the order |

Developers can read how webhooks are handled in [Checkout webhooks](/docs/apps/checkout/webhooks).

## Related pages [#related-pages]

<Cards>
  <Card title="Payment integration" href="/docs/guides/payment-integration" description="Connect a payment account." />
  <Card title="Orders" href="/docs/apps/dashboard/orders" description="What each payment status means." />
</Cards>
