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

# Verification

> Verify your users' identities before they can receive payouts. One API call starts KYC — we handle everything else.

## How it works

<Steps>
  <Step title="Start a verification">
    Call `POST /api/v1/verifications` with the account you want to verify. You get back a `session_url`.
  </Step>

  <Step title="Send the user to complete KYC">
    Redirect your user to the `session_url`. They upload their ID, take a selfie, and verify their identity on a hosted page. You don't build any UI for this.
  </Step>

  <Step title="Listen for the result">
    When the user completes verification, you receive an `identity_profile.approved` webhook. Call `GET /api/v1/verifications?account_id={biz_ tag}` to read the verified identity data.
  </Step>
</Steps>

## Quick example

```bash cURL theme={null}
curl -X POST "https://api.whop.com/api/v1/verifications?account_id=biz_xxxxxxxxxxxxx" \
  -H "Authorization: Bearer $WHOP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"kind": "individual"}'
```

```json Response theme={null}
{
  "id": "idpf_xxxxxxxxxxxxx",
  "kind": "individual",
  "status": "pending",
  "session_url": "https://in.sumsub.com/websdk/p/sbx_xxxxxxxxxxxxx",
  "created_at": "2026-06-03T22:15:00Z",
  "updated_at": "2026-06-03T22:15:00Z"
}
```

<Note>
  You need a Company API key with the `identity:write` scope. Go to your [dashboard](https://whop.com/dashboard) → Settings → API Keys to create one.
</Note>

## Pre-fill the KYC form

Pass identity fields to skip steps for your user. These seed the verification form so they don't have to retype their name and address:

```bash cURL theme={null}
curl -X POST "https://api.whop.com/api/v1/verifications?account_id=biz_xxxxxxxxxxxxx" \
  -H "Authorization: Bearer $WHOP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "kind": "individual",
    "first_name": "Jane",
    "last_name": "Doe",
    "date_of_birth": "1995-01-15",
    "country": "US",
    "tax_identification_number": "123-45-6789",
    "address": {
      "line1": "123 Main St",
      "city": "San Francisco",
      "state": "CA",
      "postal_code": "94105"
    }
  }'
```

<Note>
  `tax_identification_number` is the person's tax identification number — their SSN for US
  individuals — and is **required when `country` is `US`**: the payout account
  can't be created without it. Send it as-is; it is tokenized in transit and
  the raw value is never stored on Whop's systems.
</Note>

## Two types of verification

| Type             | `kind`       | What it verifies    | When to use                              |
| ---------------- | ------------ | ------------------- | ---------------------------------------- |
| Individual (KYC) | `individual` | A person's identity | User wants to withdraw funds             |
| Business (KYB)   | `business`   | A company entity    | Company needs to verify its legal entity |

An account can have one of each — an individual KYC and a business KYB.

## What's next

<CardGroup cols={2}>
  <Card title="Check status" icon="magnifying-glass" href="/developer/verification/retrieve">
    Check verification status and read verified identity data.
  </Card>

  <Card title="Handle RFIs" icon="circle-exclamation" href="/developer/verification/rfis">
    Respond when a provider needs additional information like a bank statement.
  </Card>

  <Card title="Update & delete" icon="pen-to-square" href="/developer/verification/manage">
    Update identity fields or remove a verification.
  </Card>

  <Card title="API Reference" icon="code" href="/api-reference/verifications/verification">
    Full field reference for the verification object.
  </Card>
</CardGroup>
