> ## Documentation Index
> Fetch the complete documentation index at: https://docs.augustus.com/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Treat the published Augustus OpenAPI specification (https://app.stainless.com/api/spec/documented/augustus/openapi.documented.yml) and the current API-reference pages as the source of truth for endpoints, request/response schemas, enum values, webhook event names, and required headers.
> Prefer the 2026-05-01 Banking API and @augustusbank/typescript-sdk for all new integrations. The 2023-01-01 API is a separate, older surface covering two products — Open Banking (instant bank transfer) checkout and refunds, and Manual Bank Transfer (MBT); use it only when one of those products is specifically required.
> Cite or link the relevant docs.augustus.com page when answering integration questions.
> Do not infer support for currencies, networks, scopes, account types, or operations that are not present in the current documentation.
> Use the sandbox base URL (https://api.sandbox.augustus.com) and placeholder credentials in examples. Never include or request a real API key.
> The Augustus docs MCP server (https://docs.augustus.com/mcp) provides documentation search and retrieval only; it does not execute authenticated Augustus API actions.

# Update a webhook subscription

> Modify an existing webhook subscription's endpoint URL, event types, or description

## Overview

Update an existing webhook subscription to modify its endpoint URL, event types, description, or status. You can update any combination of these fields - only the fields you include in the request will be modified.

<Info>
  This endpoint requires authentication using your API key in the `X-Ivy-Api-Key` header.
</Info>

## Request Parameters

<ParamField body="subscription_id" type="string" required>
  The ID of the webhook subscription to update.
</ParamField>

<ParamField body="endpoint_url" type="string">
  The new URL where webhook events will be sent. Must be a valid HTTPS URL.
</ParamField>

<ParamField body="event_types" type="array">
  Array of event types to subscribe to. Available event types include:

  * `checkout_session.completed` - When a checkout session is successfully completed
  * `checkout_session.expired` - When a checkout session expires
  * `payout.paid` - When a payout is successfully processed
  * `payout.failed` - When a payout fails
  * `refund.succeeded` - When a refund is successfully processed
  * `refund.failed` - When a refund fails
</ParamField>

<ParamField body="description" type="string">
  New description for the webhook subscription to help identify its purpose.
</ParamField>

<ParamField body="status" type="string">
  The new status for the webhook subscription. Valid values: `active`, `inactive`.
</ParamField>

## Example Request

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST 'https://api.getivy.de/api/service/internal/webhook-subscription/update' \
    -H 'Content-Type: application/json' \
    -H 'X-Ivy-Api-Key: YOUR_API_KEY' \
    -d '{
      "subscription_id": "wsub_1234567890",
      "endpoint_url": "https://new-domain.com/webhooks/ivy",
      "event_types": [
        "checkout_session.completed",
        "payout.paid"
      ],
      "description": "Updated production webhook",
      "status": "active"
    }'
  ```
</RequestExample>

## Example Response

<ResponseExample>
  ```json Success theme={null}
  {
    "id": "wsub_1234567890",
    "endpoint_url": "https://new-domain.com/webhooks/ivy",
    "event_types": [
      "checkout_session.completed",
      "payout.paid"
    ],
    "status": "active",
    "description": "Updated production webhook",
    "created_at": "2024-01-15T10:30:00Z",
    "updated_at": "2024-01-15T15:45:00Z",
    "last_delivery": "2024-01-15T14:22:15Z",
    "delivery_count": 45,
    "failure_count": 2
  }
  ```
</ResponseExample>

## Partial Updates

You can update individual fields without affecting others. For example, to only change the description:

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST 'https://api.getivy.de/api/service/internal/webhook-subscription/update' \
    -H 'Content-Type: application/json' \
    -H 'X-Ivy-Api-Key: YOUR_API_KEY' \
    -d '{
      "subscription_id": "wsub_1234567890",
      "description": "Updated description only"
    }'
  ```
</RequestExample>

## Error Responses

<ResponseExample>
  ```json Error - Subscription Not Found theme={null}
  {
    "error": {
      "code": "subscription_not_found",
      "message": "Webhook subscription not found",
      "type": "not_found"
    }
  }
  ```
</ResponseExample>

<ResponseExample>
  ```json Error - Invalid URL theme={null}
  {
    "error": {
      "code": "invalid_endpoint_url",
      "message": "The provided endpoint URL is invalid. Must be a valid HTTPS URL.",
      "type": "validation_error"
    }
  }
  ```
</ResponseExample>

<ResponseExample>
  ```json Error - Invalid Status theme={null}
  {
    "error": {
      "code": "invalid_status",
      "message": "Invalid status value. Must be 'active' or 'inactive'.",
      "type": "validation_error"
    }
  }
  ```
</ResponseExample>

## Status Changes

When you change a webhook subscription's status:

* **`active`**: Webhook events will be sent to the endpoint URL
* **`inactive`**: Webhook events will not be sent, but the subscription is preserved

<Note>
  Setting a webhook to `inactive` is useful for temporarily disabling webhooks without deleting them.
</Note>

## Related

* [List webhook subscriptions](/webhook-subscription/list-webhook-subscriptions)
* [Create a webhook subscription](/webhook-subscription/create-a-webhook-subscription)
* [Delete a webhook subscription](/webhook-subscription/delete-a-webhook-subscription)
