Developer Docs
English
English
Full catalogue of webhook events Zertiban emits on every relevant state change.
Webhook events are the primary real-time sync mechanism between Zertiban and the customer's integrated systems. Every relevant change in the life cycle of a flow, an operation or a PSD2 payment automatically produces a signed webhook event, so external systems can react immediately without polling the API.
Webhook delivery must be enabled with Zertiban beforehand. During onboarding the customer must provide:
Once configured, Zertiban will push real-time notifications whenever a relevant state change occurs.
Zertiban's event system is organised in four functional layers: three covering distinct layers of the transactional process, and one covering the organisation life cycle.
| Level | Represents |
|---|---|
FLOW_* | Aggregate state of the full set of operations |
OPERATION_* | Individual actions taken by the end user |
PSD2_PAYMENT_* | Real banking state of the PSD2 payment |
BUSINESS_* | State of an organisation within Zertiban |
FLOW_* events represent the aggregate state of the full set of operations attached to a flow.
In most current integrations a flow holds a single operation, so flow events usually mirror that operation's outcome directly. That said, Zertiban's architecture is prepared to support multiple operations within the same flow.
| Event | When it is emitted |
|---|---|
| FLOW_IN_PROGRESS | At least one operation in the flow was opened |
| FLOW_COMPLETED | All operations in the flow completed successfully |
| FLOW_REJECTED | All operations were rejected |
| FLOW_NOT_COMPLETED | The flow ended with no operation completed |
| FLOW_PARTIALLY_COMPLETED | Some operations completed and the rest did not |
| FLOW_EXPIRED | All operations expired |
| FLOW_CANCELLED | The flow was cancelled |
{
"metadata": {
"apiVersion": "v1",
"businessUuid": "3b90ee0e-f85e-4591-a0b2-5c785a860334"
},
"eventType": "FLOW_IN_PROGRESS",
"eventUuid": "ddd6c831-b815-5a12-856f-7b9a331200e7",
"timestamp": "2026-09-17T09:40:02.115Z",
"resource": {
"uuid": "39b71b93-e646-40eb-8d6b-abc728e40851",
"externalId": "INV-2026-000123",
"status": "IN_PROGRESS"
}
}{
"metadata": {
"apiVersion": "v1",
"businessUuid": "3b90ee0e-f85e-4591-a0b2-5c785a860334",
"collaboration": {
"businessUuid": "208da71f-aac8-4a74-8a3d-c07fa7cca9f6"
}
},
"eventType": "FLOW_IN_PROGRESS",
"eventUuid": "ddd6c831-b815-5a12-856f-7b9a331200e7",
"timestamp": "2026-09-17T09:40:02.115Z",
"resource": {
"uuid": "39b71b93-e646-40eb-8d6b-abc728e40851",
"externalId": "INV-2026-000123",
"status": "IN_PROGRESS"
}
}{
"metadata": {
"apiVersion": "v1",
"businessUuid": "3b90ee0e-f85e-4591-a0b2-5c785a860334"
},
"eventType": "FLOW_REJECTED",
"eventUuid": "7cf54949-de85-5a0a-b0eb-c0cad009f78a",
"timestamp": "2026-09-17T09:46:31.902Z",
"resource": {
"uuid": "39b71b93-e646-40eb-8d6b-abc728e40851",
"externalId": "INV-2026-000123",
"status": "REJECTED"
}
}{
"metadata": {
"apiVersion": "v1",
"businessUuid": "3b90ee0e-f85e-4591-a0b2-5c785a860334",
"collaboration": {
"businessUuid": "208da71f-aac8-4a74-8a3d-c07fa7cca9f6"
}
},
"eventType": "FLOW_REJECTED",
"eventUuid": "7cf54949-de85-5a0a-b0eb-c0cad009f78a",
"timestamp": "2026-09-17T09:46:31.902Z",
"resource": {
"uuid": "39b71b93-e646-40eb-8d6b-abc728e40851",
"externalId": "INV-2026-000123",
"status": "REJECTED"
}
}{
"metadata": {
"apiVersion": "v1",
"businessUuid": "3b90ee0e-f85e-4591-a0b2-5c785a860334"
},
"eventType": "FLOW_NOT_COMPLETED",
"eventUuid": "f55ba01d-230a-5eda-85ca-6977c3c813d2",
"timestamp": "2026-09-17T09:52:07.338Z",
"resource": {
"uuid": "39b71b93-e646-40eb-8d6b-abc728e40851",
"externalId": "INV-2026-000123",
"status": "NOT_COMPLETED"
}
}{
"metadata": {
"apiVersion": "v1",
"businessUuid": "3b90ee0e-f85e-4591-a0b2-5c785a860334",
"collaboration": {
"businessUuid": "208da71f-aac8-4a74-8a3d-c07fa7cca9f6"
}
},
"eventType": "FLOW_NOT_COMPLETED",
"eventUuid": "f55ba01d-230a-5eda-85ca-6977c3c813d2",
"timestamp": "2026-09-17T09:52:07.338Z",
"resource": {
"uuid": "39b71b93-e646-40eb-8d6b-abc728e40851",
"externalId": "INV-2026-000123",
"status": "NOT_COMPLETED"
}
}{
"metadata": {
"apiVersion": "v1",
"businessUuid": "3b90ee0e-f85e-4591-a0b2-5c785a860334"
},
"eventType": "FLOW_PARTIALLY_COMPLETED",
"eventUuid": "f096c465-a9c2-5c5f-8678-fa0d1216f84c",
"timestamp": "2026-09-17T09:55:44.061Z",
"resource": {
"uuid": "39b71b93-e646-40eb-8d6b-abc728e40851",
"externalId": "INV-2026-000123",
"status": "PARTIALLY_COMPLETED"
}
}{
"metadata": {
"apiVersion": "v1",
"businessUuid": "3b90ee0e-f85e-4591-a0b2-5c785a860334",
"collaboration": {
"businessUuid": "208da71f-aac8-4a74-8a3d-c07fa7cca9f6"
}
},
"eventType": "FLOW_PARTIALLY_COMPLETED",
"eventUuid": "f096c465-a9c2-5c5f-8678-fa0d1216f84c",
"timestamp": "2026-09-17T09:55:44.061Z",
"resource": {
"uuid": "39b71b93-e646-40eb-8d6b-abc728e40851",
"externalId": "INV-2026-000123",
"status": "PARTIALLY_COMPLETED"
}
}{
"metadata": {
"apiVersion": "v1",
"businessUuid": "3b90ee0e-f85e-4591-a0b2-5c785a860334"
},
"eventType": "FLOW_COMPLETED",
"eventUuid": "e4159bb3-dce9-5105-a1be-07e2272a969f",
"timestamp": "2026-09-17T09:41:12.482Z",
"resource": {
"uuid": "39b71b93-e646-40eb-8d6b-abc728e40851",
"externalId": "INV-2026-000123",
"status": "COMPLETED"
}
}{
"metadata": {
"apiVersion": "v1",
"businessUuid": "3b90ee0e-f85e-4591-a0b2-5c785a860334",
"collaboration": {
"businessUuid": "208da71f-aac8-4a74-8a3d-c07fa7cca9f6"
}
},
"eventType": "FLOW_COMPLETED",
"eventUuid": "e4159bb3-dce9-5105-a1be-07e2272a969f",
"timestamp": "2026-09-17T09:41:12.482Z",
"resource": {
"uuid": "39b71b93-e646-40eb-8d6b-abc728e40851",
"externalId": "INV-2026-000123",
"status": "COMPLETED"
}
}{
"metadata": {
"apiVersion": "v1",
"businessUuid": "3b90ee0e-f85e-4591-a0b2-5c785a860334"
},
"eventType": "FLOW_EXPIRED",
"eventUuid": "59cb274a-35d9-595b-b6fa-67b3fe5c6b62",
"timestamp": "2026-09-24T00:00:05.004Z",
"resource": {
"uuid": "39b71b93-e646-40eb-8d6b-abc728e40851",
"externalId": "INV-2026-000123",
"status": "EXPIRED"
}
}{
"metadata": {
"apiVersion": "v1",
"businessUuid": "3b90ee0e-f85e-4591-a0b2-5c785a860334",
"collaboration": {
"businessUuid": "208da71f-aac8-4a74-8a3d-c07fa7cca9f6"
}
},
"eventType": "FLOW_EXPIRED",
"eventUuid": "59cb274a-35d9-595b-b6fa-67b3fe5c6b62",
"timestamp": "2026-09-24T00:00:05.004Z",
"resource": {
"uuid": "39b71b93-e646-40eb-8d6b-abc728e40851",
"externalId": "INV-2026-000123",
"status": "EXPIRED"
}
}{
"metadata": {
"apiVersion": "v1",
"businessUuid": "3b90ee0e-f85e-4591-a0b2-5c785a860334"
},
"eventType": "FLOW_CANCELLED",
"eventUuid": "f29bef98-7975-5919-b609-19f4aa2feecd",
"timestamp": "2026-09-17T11:20:49.750Z",
"resource": {
"uuid": "8c5e3e83-5145-4c57-8d3f-ac5f9c6652f2",
"externalId": null,
"status": "CANCELLED"
}
}{
"metadata": {
"apiVersion": "v1",
"businessUuid": "3b90ee0e-f85e-4591-a0b2-5c785a860334",
"collaboration": {
"businessUuid": "208da71f-aac8-4a74-8a3d-c07fa7cca9f6"
}
},
"eventType": "FLOW_CANCELLED",
"eventUuid": "f29bef98-7975-5919-b609-19f4aa2feecd",
"timestamp": "2026-09-17T11:20:49.750Z",
"resource": {
"uuid": "8c5e3e83-5145-4c57-8d3f-ac5f9c6652f2",
"externalId": null,
"status": "CANCELLED"
}
}OPERATION_* events reflect the functional state of an individual operation carried out by the end user. They let you monitor the payer's actual behaviour inside the flow and react in real time to functional changes in the process.
| Event | When it is emitted | Suggested action |
|---|---|---|
| OPERATION_OPENED | The payer opens the operation URL | Log the open or interaction start |
| OPERATION_COMPLETED | The operation completes successfully | Mark the invoice or charge as paid |
| OPERATION_REJECTED | The user or the bank rejects the operation | Notify the collections team |
| OPERATION_EXPIRED | The operation reaches its expiration date | Mark as overdue |
| OPERATION_CANCELLED | The operation is cancelled via API or Dashboard | Update internal state |
{
"metadata": {
"apiVersion": "v1",
"businessUuid": "3b90ee0e-f85e-4591-a0b2-5c785a860334"
},
"eventType": "OPERATION_OPENED",
"eventUuid": "fdba93d4-3f32-5fce-8c6b-36736e67f492",
"timestamp": "2026-09-17T09:40:02.117Z",
"resource": {
"uuid": "bd51a1af-7779-4010-a876-0630851a1858",
"externalId": "OP-2026-000123",
"status": "OPENED"
}
}{
"metadata": {
"apiVersion": "v1",
"businessUuid": "3b90ee0e-f85e-4591-a0b2-5c785a860334",
"collaboration": {
"businessUuid": "208da71f-aac8-4a74-8a3d-c07fa7cca9f6"
}
},
"eventType": "OPERATION_OPENED",
"eventUuid": "fdba93d4-3f32-5fce-8c6b-36736e67f492",
"timestamp": "2026-09-17T09:40:02.117Z",
"resource": {
"uuid": "bd51a1af-7779-4010-a876-0630851a1858",
"externalId": "OP-2026-000123",
"status": "OPENED"
}
}{
"metadata": {
"apiVersion": "v1",
"businessUuid": "3b90ee0e-f85e-4591-a0b2-5c785a860334"
},
"eventType": "OPERATION_REJECTED",
"eventUuid": "40df6070-422c-520f-af35-f1331317b125",
"timestamp": "2026-09-17T09:46:31.900Z",
"resource": {
"uuid": "bd51a1af-7779-4010-a876-0630851a1858",
"externalId": "OP-2026-000123",
"status": "REJECTED"
}
}{
"metadata": {
"apiVersion": "v1",
"businessUuid": "3b90ee0e-f85e-4591-a0b2-5c785a860334",
"collaboration": {
"businessUuid": "208da71f-aac8-4a74-8a3d-c07fa7cca9f6"
}
},
"eventType": "OPERATION_REJECTED",
"eventUuid": "40df6070-422c-520f-af35-f1331317b125",
"timestamp": "2026-09-17T09:46:31.900Z",
"resource": {
"uuid": "bd51a1af-7779-4010-a876-0630851a1858",
"externalId": "OP-2026-000123",
"status": "REJECTED"
}
}{
"metadata": {
"apiVersion": "v1",
"businessUuid": "3b90ee0e-f85e-4591-a0b2-5c785a860334"
},
"eventType": "OPERATION_COMPLETED",
"eventUuid": "13e83b92-13d8-5b6d-94c0-05feb58d3189",
"timestamp": "2026-09-17T09:41:12.480Z",
"resource": {
"uuid": "bd51a1af-7779-4010-a876-0630851a1858",
"externalId": "OP-2026-000123",
"status": "COMPLETED"
}
}{
"metadata": {
"apiVersion": "v1",
"businessUuid": "3b90ee0e-f85e-4591-a0b2-5c785a860334",
"collaboration": {
"businessUuid": "208da71f-aac8-4a74-8a3d-c07fa7cca9f6"
}
},
"eventType": "OPERATION_COMPLETED",
"eventUuid": "13e83b92-13d8-5b6d-94c0-05feb58d3189",
"timestamp": "2026-09-17T09:41:12.480Z",
"resource": {
"uuid": "bd51a1af-7779-4010-a876-0630851a1858",
"externalId": "OP-2026-000123",
"status": "COMPLETED"
}
}{
"metadata": {
"apiVersion": "v1",
"businessUuid": "3b90ee0e-f85e-4591-a0b2-5c785a860334"
},
"eventType": "OPERATION_EXPIRED",
"eventUuid": "d863ec53-51f6-5434-83d0-96de7e909fb3",
"timestamp": "2026-09-24T00:00:05.001Z",
"resource": {
"uuid": "bd51a1af-7779-4010-a876-0630851a1858",
"externalId": "OP-2026-000123",
"status": "EXPIRED"
}
}{
"metadata": {
"apiVersion": "v1",
"businessUuid": "3b90ee0e-f85e-4591-a0b2-5c785a860334",
"collaboration": {
"businessUuid": "208da71f-aac8-4a74-8a3d-c07fa7cca9f6"
}
},
"eventType": "OPERATION_EXPIRED",
"eventUuid": "d863ec53-51f6-5434-83d0-96de7e909fb3",
"timestamp": "2026-09-24T00:00:05.001Z",
"resource": {
"uuid": "bd51a1af-7779-4010-a876-0630851a1858",
"externalId": "OP-2026-000123",
"status": "EXPIRED"
}
}{
"metadata": {
"apiVersion": "v1",
"businessUuid": "3b90ee0e-f85e-4591-a0b2-5c785a860334"
},
"eventType": "OPERATION_CANCELLED",
"eventUuid": "ea318317-8c89-5ffd-8c4d-77cc51bdf3f5",
"timestamp": "2026-09-17T11:20:49.748Z",
"resource": {
"uuid": "bd51a1af-7779-4010-a876-0630851a1858",
"externalId": "OP-2026-000123",
"status": "CANCELLED"
}
}{
"metadata": {
"apiVersion": "v1",
"businessUuid": "3b90ee0e-f85e-4591-a0b2-5c785a860334",
"collaboration": {
"businessUuid": "208da71f-aac8-4a74-8a3d-c07fa7cca9f6"
}
},
"eventType": "OPERATION_CANCELLED",
"eventUuid": "ea318317-8c89-5ffd-8c4d-77cc51bdf3f5",
"timestamp": "2026-09-17T11:20:49.748Z",
"resource": {
"uuid": "bd51a1af-7779-4010-a876-0630851a1858",
"externalId": "OP-2026-000123",
"status": "CANCELLED"
}
}PSD2_PAYMENT_* events represent the real banking state of a PSD2 payment processed by Zertiban. Unlike the functional flow or operation events, these events reflect the payment's banking evolution directly within the PSD2 infrastructure and allow syncing real financial states with ERPs, reconciliation systems or treasury engines.
They are emitted automatically as the payment progresses through the banking ecosystem and provide full visibility on the real financial state of the transaction.
| Event | When it is emitted | Suggested action |
|---|---|---|
| PSD2_PAYMENT_STATUS_PENDING | The payment was initiated and is pending | Log the payment as in progress |
| PSD2_PAYMENT_STATUS_AUTHORIZED | The bank authorised the payment successfully | Confirm bank authorisation |
| PSD2_PAYMENT_STATUS_SETTLED | The payment was settled successfully | Reconcile and close the charge |
| PSD2_PAYMENT_STATUS_PENDING_SETTLED | The payment is pending final settlement | Keep financial tracking active |
| PSD2_PAYMENT_STATUS_REJECTED | The payment was rejected | Handle the incident or retry |
PSD2 events follow specific rules to avoid duplicates and guarantee functional consistency.
Event deduplication. Before emitting a PSD2 webhook, Zertiban verifies that no event has already been sent for the same payment and the same PSD2 status. This guarantees delivery idempotency and prevents functional duplicates.
Special restriction for rejected payments. The PSD2_PAYMENT_STATUS_REJECTED event is only emitted if the payment has previously reached a valid prior transactional state in its life cycle. This keeps the functional sequence of financial states consistent.
{
"metadata": {
"apiVersion": "v1",
"businessUuid": "3b90ee0e-f85e-4591-a0b2-5c785a860334"
},
"eventType": "PSD2_PAYMENT_STATUS_PENDING",
"eventUuid": "778fb46b-f31f-524c-87da-fc25e8c2f99e",
"timestamp": "2026-09-17T09:41:05.233Z",
"resource": {
"paymentUuid": "14c56ab6-d0f0-4b13-9a9a-d9e722aff880",
"psd2Payment": {
"status": {
"status": "PAYMENT_STATUS_PENDING",
"code": "PENDING",
"step": "PAYMENT_STATUS_PENDING"
}
}
}
}{
"metadata": {
"apiVersion": "v1",
"businessUuid": "3b90ee0e-f85e-4591-a0b2-5c785a860334",
"collaboration": {
"businessUuid": "208da71f-aac8-4a74-8a3d-c07fa7cca9f6"
}
},
"eventType": "PSD2_PAYMENT_STATUS_PENDING",
"eventUuid": "778fb46b-f31f-524c-87da-fc25e8c2f99e",
"timestamp": "2026-09-17T09:41:05.233Z",
"resource": {
"paymentUuid": "14c56ab6-d0f0-4b13-9a9a-d9e722aff880",
"psd2Payment": {
"status": {
"status": "PAYMENT_STATUS_PENDING",
"code": "PENDING",
"step": "PAYMENT_STATUS_PENDING"
}
}
}
}{
"metadata": {
"apiVersion": "v1",
"businessUuid": "3b90ee0e-f85e-4591-a0b2-5c785a860334"
},
"eventType": "PSD2_PAYMENT_STATUS_AUTHORIZED",
"eventUuid": "0904353e-f46f-550c-99c7-0744ca63f4cf",
"timestamp": "2026-09-17T09:41:09.871Z",
"resource": {
"paymentUuid": "14c56ab6-d0f0-4b13-9a9a-d9e722aff880",
"psd2Payment": {
"status": {
"status": "PAYMENT_DETAILS_VALID_AUTHORIZED",
"code": "AUTHORIZED",
"step": "PAYMENT_DETAILS_AUTHORIZED_VALID"
}
}
}
}{
"metadata": {
"apiVersion": "v1",
"businessUuid": "3b90ee0e-f85e-4591-a0b2-5c785a860334",
"collaboration": {
"businessUuid": "208da71f-aac8-4a74-8a3d-c07fa7cca9f6"
}
},
"eventType": "PSD2_PAYMENT_STATUS_AUTHORIZED",
"eventUuid": "0904353e-f46f-550c-99c7-0744ca63f4cf",
"timestamp": "2026-09-17T09:41:09.871Z",
"resource": {
"paymentUuid": "14c56ab6-d0f0-4b13-9a9a-d9e722aff880",
"psd2Payment": {
"status": {
"status": "PAYMENT_DETAILS_VALID_AUTHORIZED",
"code": "AUTHORIZED",
"step": "PAYMENT_DETAILS_AUTHORIZED_VALID"
}
}
}
}Other psd2Payment.status variants. The rest of the body is identical.
{
"status": {
"status": "PAYMENT_DETAILS_AUTHORIZED_FAILED",
"code": "AUTHORIZED",
"step": "PAYMENT_DETAILS_AUTHORIZED_FAILED"
}
}{
"status": {
"status": "PAYMENT_DETAILS_AUTHORIZED_REJECTED",
"code": "AUTHORIZED",
"step": "PAYMENT_DETAILS_AUTHORIZED_REJECTED"
}
}{
"metadata": {
"apiVersion": "v1",
"businessUuid": "3b90ee0e-f85e-4591-a0b2-5c785a860334"
},
"eventType": "PSD2_PAYMENT_STATUS_PENDING_SETTLED",
"eventUuid": "85a73fb3-00d0-58f5-8a82-fff1336e30c5",
"timestamp": "2026-09-17T09:41:10.406Z",
"resource": {
"paymentUuid": "14c56ab6-d0f0-4b13-9a9a-d9e722aff880",
"psd2Payment": {
"status": {
"status": "PAYMENT_DETAILS_VALID_PENDING_SETTLED",
"code": "PENDING_SETTLED",
"step": "PAYMENT_DETAILS_VALID_PENDING_SETTLED"
}
}
}
}{
"metadata": {
"apiVersion": "v1",
"businessUuid": "3b90ee0e-f85e-4591-a0b2-5c785a860334",
"collaboration": {
"businessUuid": "208da71f-aac8-4a74-8a3d-c07fa7cca9f6"
}
},
"eventType": "PSD2_PAYMENT_STATUS_PENDING_SETTLED",
"eventUuid": "85a73fb3-00d0-58f5-8a82-fff1336e30c5",
"timestamp": "2026-09-17T09:41:10.406Z",
"resource": {
"paymentUuid": "14c56ab6-d0f0-4b13-9a9a-d9e722aff880",
"psd2Payment": {
"status": {
"status": "PAYMENT_DETAILS_VALID_PENDING_SETTLED",
"code": "PENDING_SETTLED",
"step": "PAYMENT_DETAILS_VALID_PENDING_SETTLED"
}
}
}
}Other psd2Payment.status variants. The rest of the body is identical.
{
"status": {
"status": "PAYMENT_DETAILS_PENDING_SETTLED_FAILED",
"code": "PENDING_SETTLED",
"step": "PAYMENT_DETAILS_PENDING_SETTLED_FAILED"
}
}{
"status": {
"status": "PAYMENT_DETAILS_PENDING_SETTLED_REJECTED",
"code": "PENDING_SETTLED",
"step": "PAYMENT_DETAILS_PENDING_SETTLED_REJECTED"
}
}{
"metadata": {
"apiVersion": "v1",
"businessUuid": "3b90ee0e-f85e-4591-a0b2-5c785a860334"
},
"eventType": "PSD2_PAYMENT_STATUS_SETTLED",
"eventUuid": "33936899-3ca5-5345-9c8e-0ce358bed0a3",
"timestamp": "2026-09-17T14:02:51.640Z",
"resource": {
"paymentUuid": "14c56ab6-d0f0-4b13-9a9a-d9e722aff880",
"psd2Payment": {
"status": {
"status": "PAYMENT_DETAILS_VALID_SETTLED",
"code": "SETTLED",
"step": "PAYMENT_DETAILS_SETTLED_VALID"
}
}
}
}{
"metadata": {
"apiVersion": "v1",
"businessUuid": "3b90ee0e-f85e-4591-a0b2-5c785a860334",
"collaboration": {
"businessUuid": "208da71f-aac8-4a74-8a3d-c07fa7cca9f6"
}
},
"eventType": "PSD2_PAYMENT_STATUS_SETTLED",
"eventUuid": "33936899-3ca5-5345-9c8e-0ce358bed0a3",
"timestamp": "2026-09-17T14:02:51.640Z",
"resource": {
"paymentUuid": "14c56ab6-d0f0-4b13-9a9a-d9e722aff880",
"psd2Payment": {
"status": {
"status": "PAYMENT_DETAILS_VALID_SETTLED",
"code": "SETTLED",
"step": "PAYMENT_DETAILS_SETTLED_VALID"
}
}
}
}Other psd2Payment.status variants. The rest of the body is identical.
{
"status": {
"status": "PAYMENT_DETAILS_SETTLED_FAILED",
"code": "SETTLED",
"step": "PAYMENT_DETAILS_SETTLED_FAILED"
}
}{
"status": {
"status": "PAYMENT_DETAILS_SETTLED_REJECTED",
"code": "SETTLED",
"step": "PAYMENT_DETAILS_SETTLED_REJECTED"
}
}{
"metadata": {
"apiVersion": "v1",
"businessUuid": "3b90ee0e-f85e-4591-a0b2-5c785a860334"
},
"eventType": "PSD2_PAYMENT_STATUS_REJECTED",
"eventUuid": "fdeb032c-9380-549e-b05e-23dfa2e90a64",
"timestamp": "2026-09-17T09:43:18.512Z",
"resource": {
"paymentUuid": "6f1e9c3b-2a8d-4e7f-b5c0-9d4a2e8f1b77",
"psd2Payment": {
"status": {
"status": "PAYMENT_STATUS_REJECTED_PAYMENT_REJECTED",
"code": "REJECTED",
"step": "PAYMENT_STATUS_REJECTED"
}
}
}
}{
"metadata": {
"apiVersion": "v1",
"businessUuid": "3b90ee0e-f85e-4591-a0b2-5c785a860334",
"collaboration": {
"businessUuid": "208da71f-aac8-4a74-8a3d-c07fa7cca9f6"
}
},
"eventType": "PSD2_PAYMENT_STATUS_REJECTED",
"eventUuid": "fdeb032c-9380-549e-b05e-23dfa2e90a64",
"timestamp": "2026-09-17T09:43:18.512Z",
"resource": {
"paymentUuid": "6f1e9c3b-2a8d-4e7f-b5c0-9d4a2e8f1b77",
"psd2Payment": {
"status": {
"status": "PAYMENT_STATUS_REJECTED_PAYMENT_REJECTED",
"code": "REJECTED",
"step": "PAYMENT_STATUS_REJECTED"
}
}
}
}This family exists for Partners and Agents. A collaborator registers client organisations and cannot operate on their behalf until they are active; BUSINESS_* events are what tell it so.
They sit outside the transactional cycle: they report an organisation's state, not a charge. If you integrate Zertiban for your own organisation they add nothing — you already know when you completed your own registration.
| Event | When it is emitted | Suggested action |
|---|---|---|
| BUSINESS_ACTIVATED | A client organisation completes its registration and becomes active | Issue a delegated token for it and start operating |
The resource carries the activated organisation's UUID in uuid and its state in status. It has no externalId, and resource.uuid matches metadata.businessUuid:
{
"metadata": {
"apiVersion": "v1",
"businessUuid": "3b90ee0e-f85e-4591-a0b2-5c785a860334"
},
"eventType": "BUSINESS_ACTIVATED",
"eventUuid": "4abd98ec-3b8a-5e1a-b2c0-829fb0125869",
"timestamp": "2026-09-16T16:12:40.207Z",
"resource": {
"uuid": "3b90ee0e-f85e-4591-a0b2-5c785a860334",
"status": "ACTIVE"
}
}{
"metadata": {
"apiVersion": "v1",
"businessUuid": "3b90ee0e-f85e-4591-a0b2-5c785a860334",
"collaboration": {
"businessUuid": "208da71f-aac8-4a74-8a3d-c07fa7cca9f6"
}
},
"eventType": "BUSINESS_ACTIVATED",
"eventUuid": "4abd98ec-3b8a-5e1a-b2c0-829fb0125869",
"timestamp": "2026-09-16T16:12:40.207Z",
"resource": {
"uuid": "3b90ee0e-f85e-4591-a0b2-5c785a860334",
"status": "ACTIVE"
}
}If the registration is attributed to several collaborators, the organisation receives the copy without collaboration and each collaborator receives its own carrying its own identifier (b47d2e91-6c0a-4f5e-8a3d-1e9c7b2f4d58 for the second one).
resource.uuid is the UUID of the client organisation that has just been activated: the one you will pass as target_tenant when requesting the delegated token. metadata.collaboration.businessUuid is your own collaborator UUID, the one the registration was attributed to. If the registration is attributed to several collaborators, each one receives its own copy carrying its own identifier.
You must have the type subscribed on your webhook: having an endpoint registered does not imply receiving it. And deduplicate by eventUuid, which is identical across every copy of the same event and every one of its retries.
resource contain in each event? The resource payload depends on the event type:
| Event type | Contents |
|---|---|
FLOW_* | Aggregate information about the flow |
OPERATION_* | Operation information |
PSD2_PAYMENT_* | PSD2 payment information |
BUSINESS_* | uuid and status of the organisation concerned |
PSD2_PAYMENT_* events represent the real financial state of the payment and are the best source for bank reconciliation, ERP updates, treasury and financial automation.
OPERATION_COMPLETED for UX and business logic The OPERATION_COMPLETED event represents the functional completion of the user experience and is typically used to release orders, mark invoices, show confirmations or advance business processes.
Every webhook consumer must be designed to tolerate retries, duplicate events and out-of-order delivery. Persist eventUuid and apply idempotent processing, see Delivery and Retries.
The webhook endpoint should verify the signature, persist the event, respond 200 OK and process in the background. This improves resilience and avoids unnecessary retries.