The event
Paydot sends payment.status_changed when a payment becomes EXECUTED, SETTLED, FAILED or
CANCELLED. The body is JSON:
{ "id": "evt_9Nq1cQ2rTt6xKz0vB4mH7w", "type": "payment.status_changed", "apiVersion": "2026-08-09", "createdAt": "2026-08-18T10:15:30Z", "data": { "payment": { "id": "pay_4KdR8s2Xn1QwZ7", "amount": { "value": 2599, "currency": "EUR" }, "reference": "ORDER 1042", "status": "EXECUTED", "createdAt": "2026-08-18T10:14:02Z", "updatedAt": "2026-08-18T10:15:30Z" }, "previousStatus": "PENDING" }}Fields
Section titled “Fields”| Field | Meaning |
|---|---|
id | Unique event id. Stable across retries. Use it to deduplicate. |
type | payment.status_changed, or webhook.test for a test event. |
apiVersion | The payload contract this event was built against. |
createdAt | When the change happened, ISO 8601 UTC. |
data.payment.id | The Paydot payment id. |
data.payment.amount.value | Amount in minor units (cents for EUR). |
data.payment.amount.currency | ISO 4217 currency code. |
data.payment.reference | The reference shown to the payer. |
data.payment.status | One of EXECUTED, SETTLED, FAILED, CANCELLED. |
data.previousStatus | The status before this change. |
Status vocabulary
Section titled “Status vocabulary”data.payment.status is always one of the four final statuses:
| Status | Meaning |
|---|---|
EXECUTED | The bank reported the payment as executed. |
SETTLED | Funds have settled. |
FAILED | The payment did not complete. |
CANCELLED | The payment was cancelled. |
data.previousStatus is not restricted to those four values. It can also be PENDING, AUTHORISED,
INCOMPLETE or UNKNOWN. Treat it as an opaque string, not an enum you match exhaustively.