--- url: https://docs.youcan.shop/youcan-pay/webhooks/update.md --- # Update a Webhook Replaces the URL and subscribed events of an existing webhook. Both fields are required, so a partial update is not possible: send the full set of events you want the webhook subscribed to, not just the ones you are adding. **Required scope (OAuth only):** `update-webhook` ## Parameters | Parameter | Type | Description | | --- | --- | --- | | `url` | string required | The HTTPS URL notifications are delivered to. Maximum 255 characters. | | `enabled_events` | array required | The complete set of events to subscribe to. At least one, each one of `transaction.paid`, `transaction.failed`, `transaction.refunded`, `withdrawal.created`. | ## Returns Returns the updated [Webhook object](/youcan-pay/webhooks/object). ## Request **Endpoint:** `https://youcanpay.com/api/v2/webhooks/{webhook_id}` **Method:** `PUT` ```bash $ curl --location -g --request PUT 'https://youcanpay.com/api/v2/webhooks/9b1f2c34-5d6e-4a7b-8c9d-0e1f2a3b4c5d' \ --header 'Accept: application/json' \ --header 'Content-Type: application/json' \ -u 'YOUR_PRIVATE_KEY:' \ --data '{ "url": "https://example.com/webhooks/youcan-pay-v2", "enabled_events": ["transaction.paid", "transaction.failed", "withdrawal.created"] }' ``` ## Response ```json { "object": "v2.webhook", "id": "9b1f2c34-5d6e-4a7b-8c9d-0e1f2a3b4c5d", "url": "https://example.com/webhooks/youcan-pay-v2", "is_live_mode": true, "enabled_events": "[\"transaction.paid\",\"transaction.failed\",\"withdrawal.created\"]", "created_at": "2026-09-09 11:04:22" } ``` ## Errors | Status | Description | | --- | --- | | `404` | No webhook with that identifier exists on this account. | | `422` | The URL is missing or not a valid URL, or `enabled_events` is empty or contains an unknown event. |