{
"event": {
"id": "3f1c9a52-7b4e-4d21-9c6a-0e5d8b2f4a17",
"type": "payment-failed",
"timestamp": 1793610900
},
"payload": {
"resource": "payment",
"id": 51017,
"invoiceId": 19017,
"method": "sepa-debit",
"attemptNo": 1,
"amount": {
"value": 152320,
"label": "€1,523.20"
},
"failureClass": "soft",
"nextAttemptDate": "2026-11-26"
}
}Payments
payment-failed
A payment failed
WEBHOOK
payment-failed
{
"event": {
"id": "3f1c9a52-7b4e-4d21-9c6a-0e5d8b2f4a17",
"type": "payment-failed",
"timestamp": 1793610900
},
"payload": {
"resource": "payment",
"id": 51017,
"invoiceId": 19017,
"method": "sepa-debit",
"attemptNo": 1,
"amount": {
"value": 152320,
"label": "€1,523.20"
},
"failureClass": "soft",
"nextAttemptDate": "2026-11-26"
}
}Audience: consumer · Trigger: a debit or payment attempt fails · Payload: payment summary
Verify the
{resource, id, invoiceId, …} · Permission: subscribing needs view-consumer-billing
Billing event. Requires a webhook endpoint subscribed by a consumer partner; payloads never include payment-provider messages. See Billing webhooks.
x-signing-signature header before you trust the body (Verifying signatures). Deliveries are at least once and unordered; deduplicate on event.id.Authorizations
Your API key in Authorization: Bearer <key>. Use vk_test_… keys against the sandbox and vk_live_… keys against production.
Headers
t=<unix seconds>,s1=<hex HMAC-SHA256 of "<raw body>.<t>" with your first secret>,s2=<the same with your second secret>. Accept the delivery when either signature matches. See Verifying signatures.
Body
application/json
Response
Acknowledge receipt within 15 seconds.