# Set up payment notifications (/help-center/webhooks)



Webhooks tell your application when a payment or wallet event happens. Open **Developers → Webhooks** to manage the destination and see each delivery attempt.

<AppPicture name="webhooks" alt="The Webhooks page with an active sample payment endpoint and successful delivery attempts." caption="Endpoint controls and the delivery log live together. The destination shown is an example." />

## Add your endpoint [#add-your-endpoint]

<Steps>
  <Step>
    ### Choose Add endpoint [#choose-add-endpoint]

    Enter the HTTPS **URL** your developer prepared and an optional description. The URL must resolve to a public address and use port 443 or 8443. If a business domain is verified, webhook URLs must be on that domain.
  </Step>

  <Step>
    ### Choose events [#choose-events]

    Select the event types the application needs. Leaving the event list empty subscribes the endpoint to every event type, including types introduced later.
  </Step>

  <Step>
    ### Store the signing secret [#store-the-signing-secret]

    The signing secret appears once when the endpoint is created. Store it with your application's secrets. Your developer uses it to check that each notification came from MolnPay.
  </Step>

  <Step>
    ### Send a test [#send-a-test]

    Choose **Send test**, then check the **Delivery log**. Open the delivery to see whether your server accepted it. A successful response means the notification reached your endpoint.
  </Step>
</Steps>

## Investigate a failed delivery [#investigate-a-failed-delivery]

Open a row in the delivery log. Check the receiver's response and error detail. Your developer can use the delivery ID and event ID to investigate. MolnPay retries failed deliveries; persistent failures can disable the endpoint.

Fix the destination before replaying a delivery or re-enabling an endpoint. Replay availability depends on your plan and permissions. See [Manage endpoints](/guides/manage-webhooks) for the full behavior.

## Pause or replace a secret [#pause-or-replace-a-secret]

Use **Pause** to stop an endpoint temporarily and **Resume** to start it again. If the signing secret is lost, rotate it. During the configured overlap, either secret can verify a delivery, giving your developer time to update the application.

Developers should follow [Verify a signature](/guides/verify-signature) and the [webhook contract](/guides/webhooks) before using events to fulfill orders.
