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 typeWhen it fires
customer.kyc.status.pendingVerification has started and is under review.
customer.kyc.status.completedVerification passed.
customer.kyc.status.failedVerification 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:

FieldTypeDescription
customer_idstring (uuid)The customer whose KYC status changed.
tenant_idstringYour tenant id.
kyc_typestringVerification level: basic, intermediate, or advanced.
statusstringpending, completed, or failed.
customer_emailstringThe customer's email.
customer_typestringindividual or business.
completed_atstring (date-time)When verification completed. Present on completed.
failure_reasonstringWhy 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": "[email protected]",
    "customer_type": "individual",
    "completed_at": "2026-06-19T10:00:00Z"
  }
}

Did this page help you?