Skip to main content
Event Name: kyc_session_expired
KYC sessions typically have a time limit, and if the user does not complete the verification process within that timeframe, the session expires and a new one must be initiated. The session state is EXPIRED.

Event Payload

The webhook payload contains the following structure:
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "event": "kyc_session_expired",
  "timestamp": "2025-06-19T17:14:13.123Z",
  "data": {
    "sessionId": "550e8400-e29b-41d4-a716-446655440002",
    "userId": "550e8400-e29b-41d4-a716-446655440001",
    "checks": []
  }
}

Field Description

id
string
required
Unique event identifier (UUID)
event
string
required
Event type - always kyc_session_expired for this webhook
timestamp
string
required
Event timestamp in ISO 8601 format
data
object
required
Contains the event data
data.sessionId
string
required
Unique KYC session ID (UUID)
data.userId
string
required
Unique user ID (UUID)
data.checks
array
required
List of verification checks (typically empty for expired sessions)

Expected Responses

Success Response

HTTP 200 OKThe webhook was processed successfully.

Client Error

HTTP 4xx StatusClient-side error. Will not be retried.

Server Error

HTTP 5xx StatusServer-side error. Will be retried with exponential backoff.

Implementation Example

app.post('/webhooks/ralio', (req, res) => {
  const { event, data } = req.body;
  
  if (event === 'kyc_session_expired') {
    const { sessionId, userId } = data;
    
    // Process expired session
    console.log(`KYC session ${sessionId} expired for user ${userId}`);
    
    // Update your internal systems
    await updateKycSessionStatus(sessionId, 'EXPIRED');
    await notifyUserSessionExpired(userId);
    
    // Respond with success
    res.status(200).json({ received: true });
  }
});