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

# Onboard individuals

> Submit an individual's KYC data to WisdomTree and track the review.

An individual must pass WisdomTree's KYC review before they can trade. The individual onboards through the KYC endpoints of their Privy [user](https://docs.privy.io/api-reference/users/create.md). Set `provider` to `wisdomtree` in each request.

Privy forwards the data to WisdomTree. WisdomTree then reviews it, and the result comes later. Privy does not store the KYC data.

> [!NOTE]
>
> WisdomTree onboards individuals in the United States only.

The review uses the same statuses as a [business review](https://docs.privy.io/wallets/actions/earn/tokenized-money-market-funds/onboard-businesses#onboarding-flow). Once the status is `approved`, the user can [register wallets](https://docs.privy.io/wallets/actions/earn/tokenized-money-market-funds/register-wallets.md) and trade.

## Submit verification data

To submit an individual's KYC data, send a `POST` request to:

```bash theme={"system"}
https://api.privy.io/v1/users/{user_id}/kyc/submit
```

### Parameters

The body holds the individual's data and their answers to WisdomTree's agreements.

**provider** `'wisdomtree'` *required*

The fund provider.

**environment** `'sandbox' | 'production'`

The WisdomTree environment of the submission. Defaults to `production`. Use `sandbox` to test. See
[how the sandbox
works](https://docs.privy.io/wallets/actions/earn/tokenized-money-market-funds/sandbox.md#how-the-sandbox-works).

**agreements** `object[]`

The WisdomTree agreements the individual accepts, in the same shape as for
[businesses](https://docs.privy.io/wallets/actions/earn/tokenized-money-market-funds/onboard-businesses#parameters).

**declined\_agreements** `object[]`

The WisdomTree agreements the individual does not confirm, each with `agreement_id`. WisdomTree
requires an individual to accept every agreement, so it rejects a submission that declines one.

**data** `object` *required*

The individual's KYC data, in the same shape as [headless KYC](https://docs.privy.io/kyc-kyb/kyc-headless.md).

**child attributes**

**first\_name** `string` *required*

The individual's first name.

**last\_name** `string` *required*

The individual's last name.

**email** `string` *required*

The individual's email address.

**phone** `string` *required*

The individual's phone number in E.164 format, e.g. `"+14155550123"`.

**date\_of\_birth** `string` *required*

Date of birth as `YYYY-MM-DD`.

**residential\_address** `object` *required*

The residential address, with `street_line_1`, `street_line_2`, `city`, `subdivision`,
`postal_code`, and `country` (ISO 3166-1 alpha-3).

**identifying\_information** `object[]` *required*

Identity document numbers, each with `type`, `issuing_country`, and `number`. WisdomTree takes
the individual's SSN from an entry with `type` set to `ssn`.

**source\_of\_funds** `string` *required*

The primary source of the funds the individual invests: `"Savings"`, `"Employment or business
            income"`, `"Inheritance"`, or `"Investment"`.

> [!NOTE]
>
> As for businesses, the request must accept or decline each agreement of WisdomTree's current set.
> If it does not match the set, Privy returns a `400`. The error lists the agreement keys and the
> current version.

### Returns

The endpoint returns `202 Accepted` with the user's KYC status. It has the same [status fields](https://docs.privy.io/wallets/actions/earn/tokenized-money-market-funds/onboard-businesses#status-fields) as a business. The review sits under `kyc` in place of `kyb`.

> [!WARNING]
>
> Privy runs one submission at a time for each user. A second submission during the first one
> returns `409`. Once WisdomTree takes a user's data, a new submission also returns `409`. If
> WisdomTree does not answer, Privy returns `502` with the code `provider_unavailable`. Retry after
> a few minutes.

### Example

This request submits an individual who lives in California.

```bash theme={"system"}
curl -X POST https://api.privy.io/v1/users/{user_id}/kyc/submit \
  -H "privy-app-id: <your-app-id>" \
  -H "Authorization: Basic <credentials>" \
  -H "Content-Type: application/json" \
  -d '{
    "provider": "wisdomtree",
    "environment": "sandbox",
    "agreements": [
      {
        "type": "provider_terms",
        "agreement_id": "<agreement-key>",
        "version": "<agreement-set-version>",
        "accepted_at": "2026-11-01T12:00:00.000Z"
      }
    ],
    "data": {
      "first_name": "Jane",
      "last_name": "Doe",
      "email": "jane@example.com",
      "phone": "+14155550123",
      "date_of_birth": "1990-04-12",
      "residential_address": {
        "street_line_1": "1 Main St",
        "street_line_2": "Apt 4",
        "city": "San Francisco",
        "subdivision": "CA",
        "postal_code": "94107",
        "country": "USA"
      },
      "identifying_information": [
        {"type": "ssn", "issuing_country": "USA", "number": "123-45-6789"}
      ],
      "source_of_funds": "Employment or business income"
    }
  }'
```

```json Example response theme={"system"}
{
  "provider": "wisdomtree",
  "environment": "sandbox",
  "status": "pending",
  "kyc": {"status": "pending"},
  "requirements_due": [],
  "future_requirements_due": [],
  "resubmission": null
}
```

## Check the review status

To check the status, send a `GET` request to:

```bash theme={"system"}
https://api.privy.io/v1/users/{user_id}/kyc?provider=wisdomtree
```

Add `environment=sandbox` to the query to read the sandbox status.

```json Example response theme={"system"}
{
  "kyc_statuses": [
    {
      "provider": "wisdomtree",
      "environment": "sandbox",
      "status": "approved",
      "kyc": {"status": "approved"},
      "requirements_due": [],
      "future_requirements_due": [],
      "resubmission": null
    }
  ],
  "next_cursor": null
}
```

## Next steps

Once WisdomTree approves the individual, register their wallets.

> [card] [Register wallets](https://docs.privy.io/wallets/actions/earn/tokenized-money-market-funds/register-wallets.md)
>
> Register the individual's wallets with WisdomTree.

> [card] [Webhooks](https://docs.privy.io/wallets/actions/earn/tokenized-money-market-funds/webhooks.md)
>
> Receive `tmmf.kyc.updated` when WisdomTree takes a submission.
