Customer KYC events

Gravv sends a webhook event whenever a customer's KYC verification status changes, so you can react to the outcome without polling.

Event types

Event type When it fires
customer.kyc.status.pending Verification has started and is under review.
customer.kyc.status.completed Verification passed.
customer.kyc.status.failed Verification did not pass.

These cover individual KYC (basic, intermediate, and advanced). Business verification (KYB) runs on a separate internal flow and does not emit these customer KYC events.

Event data

Each event uses the standard webhook envelope. The event_data object carries:

Field Type Description
customer_id string (uuid) The customer whose KYC status changed.
tenant_id string Your tenant id.
kyc_type string Verification level: basic, intermediate, or advanced.
status string pending, completed, or failed.
customer_email string The customer's email.
customer_type string individual or business.
completed_at string (date-time) When verification completed. Present on completed.
failure_reason string Why verification did not pass. Present on failed.

Sample

{
  "event_id": "8f1c1b3e-2a4d-4e6f-9c0a-1b2c3d4e5f60",
  "event_type": "customer.kyc.status.completed",
  "event_category": "customer",
  "event_group_id": "d12ded01-9081-4a3c-a76c-70654f0a0175",
  "tenant_id": "cd90c45c-fa78-4624-a80a-642be301c812",
  "timestamp": "2026-06-19T10:00:00Z",
  "event_data": {
    "customer_id": "d12ded01-9081-4a3c-a76c-70654f0a0175",
    "tenant_id": "cd90c45c-fa78-4624-a80a-642be301c812",
    "kyc_type": "basic",
    "status": "completed",
    "customer_email": "jane@example.com",
    "customer_type": "individual",
    "completed_at": "2026-06-19T10:00:00Z"
  }
}
Was this page helpful?