{
"event": "cardholder.kyc_rejected",
"version": "3.0",
"eventId": "77d958cb-128d-4927-bd2c-c351a153fb39",
"sign": "e5902a90747d0a43dd74498dedaaf09c40e1a51cb99ba651d5a3fdd9847d901e",
"data": {
"cardholderId": "6ab2697da91d1ec94b1ce2b7535e47db2e6c",
"firstName": "Rachel",
"lastName": "MOLO",
"reason": "{\"feature\":\"LIVENESS\",\"risk\":\"DUPLICATED_FACE\",\"short_description\":\"Duplicated face from other approved session\",\"long_description\":\"The system identified a duplicated face from another approved session, requiring further investigation.\",\"node_id\":\"feature_liveness\",\"log_type\":\"information\",\"additional_data\":{\"api_service\":null,\"duplicated_session_id\":\"4c448606-9968-4008-837f-a294362fef5e\",\"duplicated_session_number\":4012}}",
"status": "REJECTED",
"appId": "D6J6X8V3Z5D7G5S0",
"timestamp": "2026-05-12T13:07:30+00:00"
}
}
{}
Cardholder Events
Cardholder KYC Rejected
Sent when a cardholder’s KYC verification is rejected.
WEBHOOK
cardholder.kyc_rejected
{
"event": "cardholder.kyc_rejected",
"version": "3.0",
"eventId": "77d958cb-128d-4927-bd2c-c351a153fb39",
"sign": "e5902a90747d0a43dd74498dedaaf09c40e1a51cb99ba651d5a3fdd9847d901e",
"data": {
"cardholderId": "6ab2697da91d1ec94b1ce2b7535e47db2e6c",
"firstName": "Rachel",
"lastName": "MOLO",
"reason": "{\"feature\":\"LIVENESS\",\"risk\":\"DUPLICATED_FACE\",\"short_description\":\"Duplicated face from other approved session\",\"long_description\":\"The system identified a duplicated face from another approved session, requiring further investigation.\",\"node_id\":\"feature_liveness\",\"log_type\":\"information\",\"additional_data\":{\"api_service\":null,\"duplicated_session_id\":\"4c448606-9968-4008-837f-a294362fef5e\",\"duplicated_session_number\":4012}}",
"status": "REJECTED",
"appId": "D6J6X8V3Z5D7G5S0",
"timestamp": "2026-05-12T13:07:30+00:00"
}
}
{}
{
"event": "cardholder.kyc_rejected",
"version": "3.0",
"eventId": "77d958cb-128d-4927-bd2c-c351a153fb39",
"sign": "e5902a90747d0a43dd74498dedaaf09c40e1a51cb99ba651d5a3fdd9847d901e",
"data": {
"cardholderId": "6ab2697da91d1ec94b1ce2b7535e47db2e6c",
"firstName": "Rachel",
"lastName": "MOLO",
"reason": "{\"feature\":\"LIVENESS\",\"risk\":\"DUPLICATED_FACE\",\"short_description\":\"Duplicated face from other approved session\",\"long_description\":\"The system identified a duplicated face from another approved session, requiring further investigation.\",\"node_id\":\"feature_liveness\",\"log_type\":\"information\",\"additional_data\":{\"api_service\":null,\"duplicated_session_id\":\"4c448606-9968-4008-837f-a294362fef5e\",\"duplicated_session_number\":4012}}",
"status": "REJECTED",
"appId": "D6J6X8V3Z5D7G5S0",
"timestamp": "2026-05-12T13:07:30+00:00"
}
}
{}
Payload Fields
| Field | Type | Description |
|---|---|---|
cardholderId | string | Cardholder identifier |
firstName | string | Cardholder first name |
lastName | string | Cardholder last name |
reason | string | JSON-encoded rejection detail from the KYC provider (see below) |
status | string | Always "REJECTED" |
Reason Field
Thereason field is a JSON-encoded string from the KYC provider. Parse it to access structured rejection data:
const detail = JSON.parse(data.reason);
// detail.short_description — human-readable summary
// detail.long_description — full explanation
// detail.risk — risk code (e.g. "DUPLICATED_FACE", "LIVENESS_FAILED")
// detail.feature — KYC check that failed (e.g. "LIVENESS", "DOCUMENT")
short_description field contains a human-readable summary suitable for display. Use risk for programmatic handling.Body
application/json
Response
200
Acknowledge receipt of the event

