> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fyatu.com/llms.txt
> Use this file to discover all available pages before exploring further.

# CARDHOLDER_KYC_APPROVED

> Fired when a cardholder's KYC verification is approved. Cards can now be issued to this cardholder.

Fires when a cardholder's identity verification is approved. This is the signal to unlock card issuance in your platform. Cards cannot be issued until `kycStatus` is `APPROVED`.

This is one of the most important events to subscribe to — use it instead of polling `GET /cardholders/{id}`.

## Event Type

```
CARDHOLDER_KYC_APPROVED
```

## Payload

```json theme={null}
{
  "event":       "CARDHOLDER_KYC_APPROVED",
  "eventId":     "evt_01HXY123456ABCDEF",
  "businessId":  "BUS1A2B3C4D5E6F",
  "environment": "LIVE",
  "timestamp":   "2026-05-22T10:00:05Z",
  "data": {
    "cardholderId":  "chl_01HXYZ1234ABCDEF5678",
    "kycStatus":     "APPROVED",
    "kycVerifiedAt": "2026-05-22T10:00:05Z"
  }
}
```

## Payload Fields

| Field           | Type   | Description                           |
| --------------- | ------ | ------------------------------------- |
| `cardholderId`  | string | The cardholder whose KYC was approved |
| `kycStatus`     | string | Always `APPROVED`                     |
| `kycVerifiedAt` | string | ISO 8601 timestamp of approval        |

## What To Do When You Receive This Event

1. Mark the cardholder as verified in your system
2. Unlock card issuance for this cardholder in your UI
3. Optionally notify the cardholder that they can now receive a card

## Example Handler

```javascript Node.js theme={null}
app.post('/webhooks/fyatu', async (req, res) => {
  const payload   = JSON.parse(req.body);
  const eventType = payload.event;

  if (eventType === 'CARDHOLDER_KYC_APPROVED') {
    const { cardholderId } = payload.data;

    // Unlock card issuance in your system
    await db.cardholders.update(cardholderId, { kycApproved: true });

    // Notify the cardholder
    await sendEmail(cardholderId, 'Your identity has been verified — you can now get a card!');
  }

  res.json({ received: true });
});
```

For the full event group documentation see [Cardholder Events](/v3.20/webhooks/events/cardholder-events).

<RequestExample>
  ```json Webhook Payload theme={null}
  {
    "event":       "CARDHOLDER_KYC_APPROVED",
    "eventId":     "evt_01HXY123456ABCDEF",
    "businessId":  "BUS1A2B3C4D5E6F",
    "environment": "LIVE",
    "timestamp":   "2026-05-22T10:00:05Z",
    "data": {
      "cardholderId":  "chl_01HXYZ1234ABCDEF5678",
      "kycStatus":     "APPROVED",
      "kycVerifiedAt": "2026-05-22T10:00:05Z"
    }
  }
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {}
  ```
</ResponseExample>


## OpenAPI

````yaml v3.20/openapi.json webhook CARDHOLDER_KYC_APPROVED
openapi: 3.1.0
info:
  title: FYATU CaaS API v3.20
  description: >-
    FYATU Cards-as-a-Service API â€” API key authentication, Cardholder
    lifecycle, Card issuance, Transactions, Webhooks, and Programs.
  version: 3.20.0
  contact:
    name: FYATU Support
    url: https://fyatu.com
    email: support@fyatu.com
servers:
  - url: https://api.fyatu.com/api/v3.20
    description: >-
      FYATU CaaS API â€” the environment (LIVE or SANDBOX) is determined by the
      API key, not the URL
security:
  - BearerAuth: []
tags:
  - name: Meta
    description: Liveness, account info, and supported event types
  - name: Account
    description: Account-level balance and funding status
  - name: Programs
    description: Read card program configuration
  - name: Cardholders
    description: Create and manage cardholder profiles
  - name: Cards
    description: Issue, fund, freeze, and terminate virtual cards
  - name: Transactions
    description: Read-only card transaction history
  - name: Webhooks
    description: Manage webhook endpoints for real-time event delivery
  - name: Products
    description: Read card product configurations
paths: {}
components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: >-
        API key from the FYATU CaaS portal. Pass as `Authorization: Bearer
        <key>`.

````