import requests
url = "https://api.paywise.de/v2/webhooks/{id}/"
payload = {
"description": "Primary integration webhook (now with statements)",
"events": ["mandate.created", "payment.reported", "statement.published"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
description: 'Primary integration webhook (now with statements)',
events: ['mandate.created', 'payment.reported', 'statement.published']
})
};
fetch('https://api.paywise.de/v2/webhooks/{id}/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));HttpResponse<String> response = Unirest.patch("https://api.paywise.de/v2/webhooks/{id}/")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"description\": \"Primary integration webhook (now with statements)\",\n \"events\": [\n \"mandate.created\",\n \"payment.reported\",\n \"statement.published\"\n ]\n}")
.asString();using RestSharp;
var options = new RestClientOptions("https://api.paywise.de/v2/webhooks/{id}/");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
request.AddJsonBody("{\n \"description\": \"Primary integration webhook (now with statements)\",\n \"events\": [\n \"mandate.created\",\n \"payment.reported\",\n \"statement.published\"\n ]\n}", false);
var response = await client.PatchAsync(request);
Console.WriteLine("{0}", response.Content);
curl --request PATCH \
--url https://api.paywise.de/v2/webhooks/{id}/ \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"description": "Primary integration webhook (now with statements)",
"events": [
"mandate.created",
"payment.reported",
"statement.published"
]
}
'{
"auto_disabled": true,
"consecutive_failures": 123,
"contract_version": "v1",
"created_at": "2023-11-07T05:31:56Z",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"last_failure_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"url": "<string>",
"description": "<string>",
"enabled": true,
"events": [
"*"
],
"max_consecutive_failures": 500
}{
"code": "validation_error",
"detail": "The request contains invalid data.",
"errors": [
{
"code": "invalid",
"field": "claims[0].due_date",
"message": "Due date must not precede the document date."
}
]
}{
"code": "not_authenticated",
"detail": "Authentication credentials were not provided."
}{
"code": "<string>",
"detail": "<string>",
"errors": [
{
"code": "<string>",
"field": "<string>",
"message": "<string>"
}
]
}{
"code": "not_found",
"detail": "The requested resource was not found."
}{
"code": "conflict",
"detail": "The resource changed state and cannot accept this command."
}{
"code": "<string>",
"detail": "<string>",
"errors": [
{
"code": "<string>",
"field": "<string>",
"message": "<string>"
}
]
}{
"code": "<string>",
"detail": "<string>",
"errors": [
{
"code": "<string>",
"field": "<string>",
"message": "<string>"
}
]
}{
"code": "<string>",
"detail": "<string>",
"errors": [
{
"code": "<string>",
"field": "<string>",
"message": "<string>"
}
]
}Update webhook
Company-scoped webhook endpoint management.
import requests
url = "https://api.paywise.de/v2/webhooks/{id}/"
payload = {
"description": "Primary integration webhook (now with statements)",
"events": ["mandate.created", "payment.reported", "statement.published"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
description: 'Primary integration webhook (now with statements)',
events: ['mandate.created', 'payment.reported', 'statement.published']
})
};
fetch('https://api.paywise.de/v2/webhooks/{id}/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));HttpResponse<String> response = Unirest.patch("https://api.paywise.de/v2/webhooks/{id}/")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"description\": \"Primary integration webhook (now with statements)\",\n \"events\": [\n \"mandate.created\",\n \"payment.reported\",\n \"statement.published\"\n ]\n}")
.asString();using RestSharp;
var options = new RestClientOptions("https://api.paywise.de/v2/webhooks/{id}/");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
request.AddJsonBody("{\n \"description\": \"Primary integration webhook (now with statements)\",\n \"events\": [\n \"mandate.created\",\n \"payment.reported\",\n \"statement.published\"\n ]\n}", false);
var response = await client.PatchAsync(request);
Console.WriteLine("{0}", response.Content);
curl --request PATCH \
--url https://api.paywise.de/v2/webhooks/{id}/ \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"description": "Primary integration webhook (now with statements)",
"events": [
"mandate.created",
"payment.reported",
"statement.published"
]
}
'{
"auto_disabled": true,
"consecutive_failures": 123,
"contract_version": "v1",
"created_at": "2023-11-07T05:31:56Z",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"last_failure_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"url": "<string>",
"description": "<string>",
"enabled": true,
"events": [
"*"
],
"max_consecutive_failures": 500
}{
"code": "validation_error",
"detail": "The request contains invalid data.",
"errors": [
{
"code": "invalid",
"field": "claims[0].due_date",
"message": "Due date must not precede the document date."
}
]
}{
"code": "not_authenticated",
"detail": "Authentication credentials were not provided."
}{
"code": "<string>",
"detail": "<string>",
"errors": [
{
"code": "<string>",
"field": "<string>",
"message": "<string>"
}
]
}{
"code": "not_found",
"detail": "The requested resource was not found."
}{
"code": "conflict",
"detail": "The resource changed state and cannot accept this command."
}{
"code": "<string>",
"detail": "<string>",
"errors": [
{
"code": "<string>",
"field": "<string>",
"message": "<string>"
}
]
}{
"code": "<string>",
"detail": "<string>",
"errors": [
{
"code": "<string>",
"field": "<string>",
"message": "<string>"
}
]
}{
"code": "<string>",
"detail": "<string>",
"errors": [
{
"code": "<string>",
"field": "<string>",
"message": "<string>"
}
]
}Authorizations
Company-bound Case Management API key — the standard credential for this API.
Headers
Required when a Partner key calls the Case Management API; rejected for direct Case keys. Contains the entitled paywise company UUID.
Apply the change only while the current ETag matches one of the supplied validators (or *); otherwise the request fails with 412 precondition_failed and nothing is written.
Path Parameters
UUID of the webhook subscription in this request.
Body
A webhook subscription. The signing secret is never included; it is returned exactly once on creation or rotation.
Optional single-line label for this webhook.
255Whether deliveries are attempted. Re-enabling an endpoint resets its consecutive failure counter.
Replacement list of public event subscriptions. Use ["*"] for all public events; the wildcard must be the only list entry. Omit to keep the endpoint’s current subscriptions.
*- *order.submitted- order.submittedorder.withdrawn- order.withdrawnorder.rejected- order.rejectedorder.accepted- order.acceptedorder.expired- order.expiredmandate.created- mandate.createdmandate.state.changed- mandate.state.changedmandate.status_update.published- mandate.status_update.publishedmandate.balance_updated- mandate.balance_updatedorder.message.created- order.message.createdmandate.message.created- mandate.message.createdrequest_to_client.created- request_to_client.createdrequest_to_client.answered- request_to_client.answeredpayment.reported- payment.reportedstatement.published- statement.publishedstatement.cancelled- statement.cancelledsingle_mandate_statement.published- single_mandate_statement.publishedsingle_mandate_statement.cancelled- single_mandate_statement.cancelledinvoice.created- invoice.createdinvoice.paid- invoice.paidinvoice.cancelled- invoice.cancelledinvoice.written_off- invoice.written_offdunning.level_advanced- dunning.level_advanceddunning.handed_to_collection- dunning.handed_to_collection
*, order.submitted, order.withdrawn, order.rejected, order.accepted, order.expired, mandate.created, mandate.state.changed, mandate.status_update.published, mandate.balance_updated, order.message.created, mandate.message.created, request_to_client.created, request_to_client.answered, payment.reported, statement.published, statement.cancelled, single_mandate_statement.published, single_mandate_statement.cancelled, invoice.created, invoice.paid, invoice.cancelled, invoice.written_off, dunning.level_advanced, dunning.handed_to_collection Automatically disables the endpoint when this many consecutive deliveries reach terminal failure. Retry attempts within one delivery do not each count.
1 <= x <= 1000Publicly reachable HTTPS URL for webhook notifications. Must be unique among this company’s v2 endpoints; duplicate checks normalize the scheme, host, and default port. A company can register at most 20 webhook endpoints, including disabled endpoints. Creating a 21st returns 409 webhook_limit_reached; delete an unused endpoint to free capacity.
1 - 2048Response
A webhook subscription. The signing secret is never included; it is returned exactly once on creation or rotation.
true when the endpoint was disabled automatically after reaching max_consecutive_failures; re-enable it with enabled: true once the destination is fixed.
Consecutive deliveries that reached terminal failure. Individual retry attempts do not increment this counter; a successful delivery resets it.
Payload/signature contract of this endpoint. Endpoints created via this API are always v2; v1 marks a legacy subscription that still receives v1 payloads and must be recreated to migrate.
v1- Legacy v1v2- Version 2
v1, v2 Time at which the webhook subscription was created.
Stable identifier for this resource.
Time of the most recent terminal delivery failure since the last successful delivery; null after a successful delivery or when no failure has been recorded.
Time at which the webhook subscription was last updated.
Publicly reachable HTTPS URL for webhook notifications. Must be unique among this company’s v2 endpoints; duplicate checks normalize the scheme, host, and default port.
2048Optional single-line label for this webhook.
255Whether deliveries are attempted. Re-enabling an endpoint resets its consecutive failure counter.
Current public event subscriptions for this endpoint. ["*"] subscribes to all public events; otherwise the list contains the subscribed event types.
*- *order.submitted- order.submittedorder.withdrawn- order.withdrawnorder.rejected- order.rejectedorder.accepted- order.acceptedorder.expired- order.expiredmandate.created- mandate.createdmandate.state.changed- mandate.state.changedmandate.status_update.published- mandate.status_update.publishedmandate.balance_updated- mandate.balance_updatedorder.message.created- order.message.createdmandate.message.created- mandate.message.createdrequest_to_client.created- request_to_client.createdrequest_to_client.answered- request_to_client.answeredpayment.reported- payment.reportedstatement.published- statement.publishedstatement.cancelled- statement.cancelledsingle_mandate_statement.published- single_mandate_statement.publishedsingle_mandate_statement.cancelled- single_mandate_statement.cancelledinvoice.created- invoice.createdinvoice.paid- invoice.paidinvoice.cancelled- invoice.cancelledinvoice.written_off- invoice.written_offdunning.level_advanced- dunning.level_advanceddunning.handed_to_collection- dunning.handed_to_collection
*, order.submitted, order.withdrawn, order.rejected, order.accepted, order.expired, mandate.created, mandate.state.changed, mandate.status_update.published, mandate.balance_updated, order.message.created, mandate.message.created, request_to_client.created, request_to_client.answered, payment.reported, statement.published, statement.cancelled, single_mandate_statement.published, single_mandate_statement.cancelled, invoice.created, invoice.paid, invoice.cancelled, invoice.written_off, dunning.level_advanced, dunning.handed_to_collection Automatically disables the endpoint when this many consecutive deliveries reach terminal failure. Retry attempts within one delivery do not each count.
1 <= x <= 1000