Transaction status changed
One header, Webhook-Signature: t=<unix time>,v1=<hex>. v1 is the hex HMAC-SHA256 of <t>.<raw body> with the shop's signing secret; during a secret rotation the header carries two v1 values. Reject a t more than 5 minutes from your clock. Pick the secret by shop_id in the body; trust nothing in the body until the signature matches. Answer 2xx within 30 s, otherwise up to 15 redeliveries over about 2 days — 16 attempts in total; the pause before redelivery N is N⁴ + 3 s. Deduplicate on id.
Headers
- Type: stringWebhook
- Signature requiredt— Unix time of this delivery attempt, in seconds.v1— the signature; twov1during a secret rotation.
Body·
- Type: stringFormat: date-timecreated
_at requiredthe date-time notation as defined by RFC 3339, section 5.6, for example, 2017-07-21T17:32:28Z
- Properties: 1Type: objectdatarequired
- Type: stringFormat: uuididrequired
Event id. The same on every redelivery — deduplicate on it.
- Type: integershop
_id requiredThe id of the shop the event belongs to. Pick the shop's signing secret by it.
- Type: enumtyperequiredvaluespayin.requires_actionpayin.authorizedpayin.completedpayin.failedpayin.refundedpayin.capture_failedpayin.void_failedrefund.completedrefund.failedpayout.completedpayout.failed
Responses
- 200
Acknowledged. Any
2xxstops redelivery. - 500
Any non-
2xxor a timeout schedules a redelivery.
{
"id": "8d4b2a0c-5e9f-4a6d-9c1b-3f0e6a9d2cf8",
"type": "payin.completed",
"shop_id": 1024,
"created_at": "2026-09-29T09:00:20Z",
"data": {
"object": {
"id": "0b6f4e2a-7c1d-4e8b-9a3f-5d2c8e1b4a70",
"object": "payin",
"merchant_reference": "order-10001",
"method_type": "payin_card",
"status": "completed",
"status_details": null,
"amount": {
"value": "100.50",
"currency": "EUR"
},
"refunded_amount": {
"value": "0.00",
"currency": "EUR"
},
"next_action": null,
"capture_method": "automatic",
"card": {
"brand": "visa",
"last4": "1111"
},
"created_at": "2026-09-29T09:00:00Z",
"updated_at": "2026-09-29T09:00:20Z"
}
}
}